Data processing: database and file management or data structures – Database design – Data structure types
Reexamination Certificate
1996-12-06
2002-06-04
Coby, Frantz (Department: 2771)
Data processing: database and file management or data structures
Database design
Data structure types
C707S793000
Reexamination Certificate
active
06401099
ABSTRACT:
COPYRIGHT AUTHORIZATION
A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
FIELD OF THE INVENTION
This invention relates generally to uniformly navigating or browsing data from a variety of sources, and more particularly relates to methods and systems for referencing and retrieving data stored in a computer.
BACKGROUND AND SUMMARY OF THE INVENTION
Previous techniques and mechanisms for navigating to and retrieving data in a computer system have had significant drawbacks which pose obstacles to providing unified tools for browsing data seamlessly and transparently from all sources (including local storage and remote networks).
Microsoft Corporation's Object Linking and Embedding (OLE) component software technology provides a technique for referencing and retrieving data in a computer system which uses small objects referred to as monikers. An OLE object is a software component that may encapsulate both code (i.e., functions or procedures comprising a sequence of program instructions) and data, and exposes its functionality (i.e., the code) to other programs and objects (referred to as “clients”) through interfaces. An interface is a named set of logically related functions. Each object is an instance of an object type (referred to as a “class”) which defines the structure of interfaces that its objects support.
A moniker operates as a name for another object. It encapsulates the name of the object together with functions for retrieving the named object through a process referred to in OLE as “binding.” The binding process resolves or dereferences a name of an object into a link or pointer to the particular named object (which for OLE purposes is a pointer to an interface of the named object including loading the object from persistent storage, if needed). Thus, binding can be defined as a process of retrieving and linking to an object referenced by a name.
The object named by a moniker can encapsulate any desired data. The name, for example, can be a file name of data stored as a file on a computer's hard drive or on a shared network drive. The name can even be a uniform resource locator (URL) identifying a document or other data residing on the Internet. Further, the binding function in the moniker contains the code to perform all the steps necessary to bind to the data, including finding the code associated with the particular data referenced by the name, instantiating an object to encapsulate the data with its associated code, and loading the data from its storage source into the object. Thus, a client program can access any data from any source using a moniker that names that data, including a document stored as a file on a computer's hard drive, a particular piece of a document (such as a particular cell of a spreadsheet), or even data from remote sources such as the Internet or on-line services.
OLE monikers have the advantage that the code for retrieving data resides outside the client program in the moniker. The logic necessary to access different data therefore need not be hard coded into the client program. Instead, the client need only include the code for interacting with monikers for the named objects. Further, each moniker exposes its binding function to clients through an interface. All monikers support a common interface structure defined by the monikers' class. Since all monikers support the same interface, a client can interact with any moniker in the same way using the same code. OLE monikers thus provide a general mechanism for a client program to access any variety of data from any source.
OLE monikers, however, have a drawback when used for retrieving data from a slow source. The time to retrieve data from some sources (particularly from the Internet and other remote sources) is very slow relative to human response time. (The Internet is a global network of cooperatively interconnected computer networks, consisting of millions of individual computers. A portion of the Internet referred to as the “world-wide web” consists of computers, also referred to as “sites,” which make multi-media documents in hyper-text mark-up language (HTML) generally available for downloading or retrieval by individuals having a computer with Internet access.) A typical personal computer user connects to the Internet with a 28.8 kbaud or slower modem device. The typical document accessed from the world wide web portion of the Internet, on the other hand, is several tens of kbytes in size, and often incorporates one or more pictures which also may be tens of kbytes in size. At the data transfer rate of the typical modem connection, such typical data can take minutes to access from the Internet.
A drawback to using OLE monikers for retrieving data from such sources is that OLE monikers block. More specifically, when a client calls a moniker's binding function, the call does not return until the data retrieval completes. During this time, execution of the client program (including its user interface) halts. In effect, the client's user interface freezes and remains non-responsive to user input until the data access is complete. In the Microsoft Windows® operating system, this condition of the client program is indicated by changing the mouse cursor to an “hour glass” icon when the client has the “focus” (i.e., the cursor is positioned over the client's window). Since the client is blocked, it is unable to display a progress indicator (such as a “% complete” bar graph or “estimated time remaining” notification), or provide any control which the user can activate to cancel the data access. Since the client may remain non-responsive for a substantial time while accessing data with a moniker from a slow source, the user thus has no way of knowing whether the data is still being accessed or the client has “crashed” (i.e., become inoperative) due to some error. As a result, OLE monikers provide a low quality of service when used for retrieving data from slow sources.
A unified browsing environment is provided in the present invention by an object-oriented framework and system having objects, programming interfaces, object integration interfaces, and methods for supporting unified retrieval of data from different sources. The invention overcomes the limitation in previous monikers of blocking execution of the moniker's client, and thus provides source-transparent and responsive browsing.
According to one aspect of the invention, a computer programming platform includes monikers (referred to herein as “asynchronous monikers”) which access data asynchronously. When a client calls the binding method of an asynchronous moniker, the asynchronous moniker returns control immediately to the client and completes the data access as a separately executing task or thread (sometimes referred to as “background processing”). Alternatively, the moniker retrieves data to storage with an asynchronous storage object which allows asynchronous access by the client to the data as it is retrieved to storage. Thus, even where the data is remotely accessed from a slow source, the client is able to maintain a responsive user interface, which prevents the perception of poor and non-uniform performance.
In the illustrated embodiment, the asynchronous moniker and the client provide interfaces through which they interact while the data access is performed. Through the client's interface, the asynchronous moniker provides notifications of the status of the data access to the client. The client thus is able to display a progress indicator. Also, the client can call functions through the interface of the asynchronous moniker to abort, suspend, or resume the data access.
The illustrated embodiment of the invention provides an asynchronous moniker (referred to herein as
Koppolu Srinivasa R.
Posch Johann
Stone Victor
Williams Antony S.
Coby Frantz
Klarquist & Sparkman, LLP
Microsoft Corporation
LandOfFree
Asynchronous binding of named objects does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Asynchronous binding of named objects, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Asynchronous binding of named objects will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2906318