METHODS AND APPARATUS FOR MANAGING OBJECTS IN A DISTRIBUTED ENVIRONMENT

Abstract: Disclosed is a method for use in a distributed computing enterprise to provide a client or user with access to a requested object located outside the address space of the user. The disclosed method includes: receiving a request for access to a requested object from a user having a first address space; if the requested object exists and is not active, recreating the requested object in the first address space of the user; and, if the requested object is active, performing one of the following steps. If the requested object is in the first address space, providing to the user a pointer that indicates the address of the requested object in the first address space. If the requested object is not currently in the first address space, effecting a transition of the requested object into an inactive state, and then recreating the requested object in the first address space.

Description: METHODS AND APPARATUS FOR MANAGING OBJECTS IN A DISTRIBUTED ENVIRONMENT FIELD OF THE INVENTION The present invention relates generally to distributed and object-oriented computing systems, and more particularly to a method and apparatus for efficiently managing objects in a distributed computing environment. BACKGROUND OF THE INVENTION Distributed computing and object-oriented programming are two aspects of the computer field which have recently become very popular, particularly in large enterprises. In a distributed computing environment in which object-oriented programming techniques are practiced, such as in a client/server distributed environment, there are inefficiencies in the method by which objects are utilized by the various users (which are themselves objects) in the system. For example, in current object management schemes, when a user in one part of the enterprise references an object in another, remote part of the enterprise, an object broker is employed to find the referenced object and to control the exchange of messages between the user and the object. This concept is exemplified, e.g., in a situation in which a word processor object is utilized to edit a remotely-located document object. In current distributed client/server systems, an object broker is employed to transmit and receive messages across the network to and from the two objects. Given the limited bandwidth, and thus the limited speed, of the network, the rapidity at which communications between objects can be achieved is usually less than the processing speed of the client and server systems. A goal of the present invention is to provide a mechanism for improving the efficiency and speed of a distributed computing system in which objects are required to interact with each other. SUMMARY OF THE INVENTION According to the present invention, objects in a distributed network are transported around the network to where they are needed. This is in contrast to current object request broker technology which routes requests to objects. In a presently preferred implementation of the invention, there is a logically central, physically distributed object paging service. This is analogous to virtual paging for memory but, rather than paging blocks of memory into RAM from a < local disk, the invention transports objects across a network to where they are needed from a network object store (e.g., file or database server), and recreates the needed object in the address space of the requester, or user, of the object. ("Address space" refers to the addresses that a computer program can access, including the physical memory locations that a program can access, disjoint from other programs, together with the set of virtual addresses referring to those storage locations, which may be accessible by other programs. Thus, in preferred embodiments of the present invention, when a client wishes to access an object, the client makes a request through a virtual object manager. The object is then made accessible to the client. When the client is finished working with the object, the client indicates this to the virtual object manager. The virtual object manager includes a virtual object table and a virtual object store. The virtual object store address of the persistent copy of the object is contained within the entry for that object in the virtual object table. The virtual object store address could be, e.g., a network file name or SQL select depending on whether a network file server or network database is used as the persistent storage device. The virtual object store may be either a network file server or a network database. The entry for each object contains the data needed to recreate an active instance of the object. In sum, the present invention moves a desired object to a user requesting access to the object, instead of moving messages from the user to the object and vice versa. Advantages inherent in the invention include: 1. The invention simplifies programming in a distributed object environment by permitting the programmer to focus on what he or she is asking the object to do, and not on managing the object itself. 2. The invention improves performance since the object is centrally managed. For example, centralized management can help place the object where it can be accessed by a user more efficiently, similar to caching and virtual memory management in operating systems but only now from the perspective of objects instead of just data, and from the perspective of the whole enterprise, and not just one system. Typically, the object will be positioned physically closer to, or within the address space of, the user, but this need not always be the case. For example, if the object exists on a particular server with which the client does not have a high speed connection, but the client does have a high speed data connection with a second server and that server has a high speed network connection to the first server, then the object could be moved from the first server to the second server so that it could be accessed more efficiently by the client. 3. The invention can be used in combination with existing object request broker technology. Other features and advantages of the present invention are disclosed below. BRIEF DESCRIPTION OF THE DRAWINGS Figure 1 schematically depicts a client/server distributed computing system in accordance with the present invention. Figure 2 schematically depicts one presently preferred implementation of the Virtual Object Manager utilized in the system of Figure 1. Figure 3 schematically depicts an example of a client system in accordance with a preferred embodiment of the present invention. Figure 4 schematically depicts the address space of a client system in accordance with a preferred embodiment of the present invention. Figure 5 is a flowchart of the operation of a distributed computing system in accordance with the present invention. DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS Generally, preferred embodiments of the present invention employ a technique whereby clients in enterprise systems employ a service called a "virtual object manager." The virtual object manager maintains a table of data indicating where all registered virtual object exist in the system. If a virtual object is currently inactive in the system, it resides in a virtual object store. The virtual object store may be either a file server or a database server. If the object is active, it exists in one of the address spaces on one of the systems in the enterprise. When a client wishes to gain access to an object, it makes a request through the virtual object manager to access the object. This request may actually be transparent to the client, since a proxy object may be utilized to simplify the programming for the client. The object is then made accessible to the client in accordance with the methods described below. When the client is finished working with the object, the client indicates this to the virtual object manager. This makes the virtual object manager compatible with known object brokering techniques (e.g., the Microsoft* OLE reference management paradigm of "AddRef" and "Release") . However, the virtual object manager has an advantage in that every time the object is released it does not necessarily have to be transitioned back into an inactive state. The object could stay where it is, in anticipation of being accessed again by the same client. If this occurs, the object will already be where it is needed and thus performance will be improved. Referring to Figure 1, a distributed enterprise system (10) in accordance with the present invention comprises a plurality of systems (12a, 12b, 12c, 12d) each of which is operatively coupled to a virtual object manager (14) . The virtual object manager (14) comprises a virtual object table (16) and a virtual object store (18) . As shown in Figure 2, the virtual object table (16) comprises an entry (20) for each enterprise object. Each entry contains data indicating (a) whether the object is active or inactive, (b) a network address of an active copy of the object, if any, and (c)the virtual object store address of an inactive copy of the object. The virtual object store (18) similarly contains an entry (22) for each enterprise object. Each entry (22) contains data for the corresponding object. This data is created by the object and used to recreate an active copy of the object in an object specific format. Figure 3 schematically depicts an example of a system (12a) of the enterprise (10) (Figure 1) . As shown, an exemplary system includes a number of address spaces (24, 26, 28, respectively) denoted "Address Space A," "Address Space B, and "Address Space C." Each address space corresponds to one or more client objects and at least one helper object. For example, "Address Space A (24) encompasses client Al (30), client Alb (32), and helper object (36) . Within address space A is an object (34) denoted "object 1." Similarly, Address Space B contains a client (38) denoted "Client Bla" and a helper object (40) denoted "Helper Object 2." Address Space C (28) contains a client (42) denoted Client Cla, an object (44) denoted "Object 2," and a helper object (46) denoted "Helper Object 3". The present invention is not limited to systems containing any particular number of systems, address spaces per system, or client objects per address space. Thus, the embodiment of Figure 3 is merely illustrative of a presently preferred implementation of the present invention. Figure 4 illustrates exemplary messages that may be passed among an object (34) , helper object (36) , and client object (30) . As shown, the client object (30) may request access to the object (34) . The object (34) sends a message to the helper object (36) when the object (34) requires access to a storage device, or to indicate that the object (34) has assumed an inactive state. The helper object (36) can send a message to the object (34) to instruct the object (34) to "go inactive." The client object (30) sends a message to the helper object (36) when the client (30) wants to release an object, access an object, or create an object. Each of the functions represented by Figure 4 is known to those of ordinary skill in the art, and so they will not be described in detail herein. In the preferred embodiment, each system includes one or more address spaces, and each address space can be accessed by one or more clients. Each address space has a helper object. Clients request access to an object via the helper objects. Clients using the same helper object can share access to the requested object in the same address space. The helper object provides an interface to the client, creates and recreates objects, and connects to the virtual object manager across the network. In the presently preferred embodiment of the invention, the client may call three functions of the helper object: (1) "create object", which creates an enterprise object, registers it with the virtual object manager, and returns a pointer to the object; (2) "access object", which requests access, via an object's name to an enterprise object (if the object exists, it is recreated in the client's address space, and the function returns a pointer to the object; (3) "release object", which informs the virtual object manager that the client is finished using the object. Thus, the helper objects may also be used by other objects for (1) "storage", which allows the client to store its contents when it is going inactive; and (2) to generate a message, such as "WentInactive", to indicate that the object has completed storing its contents in the virtual object store and that it has gone into an inactive state. (Note: the term "object" by itself, as distinguished from "helper object" or "client object," refers to an object of interest to the client. The "object" has the ability to store its contents into persistent storage via the storage function of a helper object. It also provides a function, "Golnactive", which is used by the helper object to request that the object save itself to persistent storage and inactivate itself.) In a presently preferred implementation of the invention, a Microsoft SQL server is used as a network database. Microsoft TCP/IP is used as a network transport, to communicate between the helper objects and the virtual object manager. Microsoft OLE is used for basic object management. OLE provides the ability to dynamically create object instances, the ability to create interfaces that other objects can use, and the ability of an object to create the persistent data needed to recreate the active object at a later point in time. The clients, helper objects, and objects communicate via OLE interfaces. The inventive method for managing objects and access to objects within a distributed environment will now be summarized with reference to Figure 5. First, a client requests access to an object (step 50) . Next, the system determines whether the object exists (step 52) . If the object does not exist, the virtual object manager creates a place for the object in the object store (step 54) . Next, the virtual object manager creates the object in an address space accessible to the client (step 56) . If the object does exist, as determined at step 52, the system determines whether the object is active in the enterprise (step 58) . If so, the system determines whether the object is in an address space accessible to the caller (i.e., the requesting client or user) (step 62) . If not, the virtual object manager request that the object transition into an inactive state (step 64) . The object then transitions into an inactive state (step 66) , and the virtual object manager then recreates the object from the object store in an address space accessible to the client (step 60) . Step 60 is also performed if the object is determined to be inactive at step 58, as shown in the flowchart. Next, the virtual object manager returns a pointer to the requesting client that points to the object in the address space accessible to that client (step 68) . The client then uses the object via the pointer (step 70) , and then the client releases access to the object (step 72) . The scope of protection of the following claims is not intended to be limited to the specific embodiments described above, since variations of the preferred embodiments will be apparent to those skilled in the art.

Claims: I claim: 1. A method for use in a distributed computing enterprise to provide a client or user with access to a requested object located outside the address space of the user, comprising the steps of: (A) receiving a request for access to a requested object from a user having a first address space; (B) if said requested object exists and is not active, recreating the requested object in said first address space of said user; and (C) if said requested object is active, performing one of the following steps Cl or C2 : (Cl) if said requested object is in said first address space, providing to the user a pointer that indicates the address of the requested object in said first address space; (C2) if said requested object is not currently in said first address space, effecting a transition of the requested object into an inactive state, and then recreating the requested object in said first address space. 2. A method as recited in claim 1, further comprising the step of maintaining a virtual object table containing an entry for each of a plurality of corresponding objects, wherein each entry indicates: (1) whether the corresponding object is active; (2) the address of an active copy of the object, if there is an active copy of the object; and (3) the address of an inactive copy of the object. 3. A method as recited in claim 1, further comprising the step of maintaining a virtual object store containing an entry for each of a plurality of corresponding objects, wherein each entry contains data for the corresponding object, said data being useful to recreate an active copy of the object. 4. A method as recited in claim 2, further comprising the step of maintaining a virtual object store containing an entry for each of a plurality of corresponding objects, wherein each entry contains data for the corresponding object, said data being useful to recreate an active copy of the object. 5. A virtual object manager (VOM) for use in a distributed computing enterprise to provide a client or user with access to a requested object located outside the address space of the user, comprising: (A) means for receiving a request for access to a requested object from a user having a first address space; (B) means for recreating the requested object in said first address space if said requested object exists and is not active; and (C) means for performing one of the following steps Cl or C2 if said requested object is active: (Cl) if said requested object is in said first address space, providing to the user a pointer that indicates the address of the requested object in said first address space; (C2) if said requested object is not currently in said first address space, effecting a transition of the requested object into an inactive state, and then recreating the requested object in said first address space. 6. A VOM as recited in claim 5, further comprising a virtual object table containing an entry for each of a plurality of corresponding objects, wherein each entry indicates: (1) whether the corresponding object is active; (2) the address of an active copy of the object, if there is an active copy of the object; and. (3) the address in a virtual object store of an inactive copy of the object. 7. A VOM as recited in claim 5, further comprising a virtual object store containing an entry for each of a plurality of corresponding objects, wherein each entry contains data for the corresponding object, said data being useful to recreate an active copy of the object. 8. A VOM as recited in claim 6, further comprising a virtual object store containing an entry for each of a plurality of corresponding objects, wherein each entry contains data for the corresponding object, said data being useful to recreate an active copy of the object. 9. A distributed computing system, comprising: (A) a plurality of systems (12a, 12b, 12c, 12d) each of which comprises a client or user object (30, 32, 38, 42) having an associated address space (24, 26, 28) ; (B) a virtual object manager (VOM) comprising means for providing a respective client with access to a requested object located outside the address space of that client, said VOM comprising means for creating a copy of the requested object in the address space of the respective client. 10. A system as recited in claim 9, wherein said VOM further comprises means for receiving a request for access to the requested object from the respective client; means for recreating the requested object in a first address space if said requested object exists and is not active; and means for performing one of the following steps if said requested object is active: if said requested object is in said first address space, providing to the client a pointer that indicates the address of the requested object in said first address space; if said requested object is not currently in said first address space, effecting a transition of the requested object into an inactive state, and then recreating the requested object in said first address space. 11. A system as recited in claim 9, wherein said VOM further comprises a virtual object table (16) containing an entry (20) for each of a plurality of corresponding objects, wherein each entry indicates: (l) whether the corresponding object is active; (2) the address of an active copy of the object, if there is an active copy of the object; and (3) the address in a virtual object store of an inactive copy of the object. 12. A system as recited in claim 9, wherein said VOM further comprises a virtual object store (18) containing an entry (22) for each of a plurality of corresponding objects, wherein each entry contains data for the corresponding object, said data being useful to recreate an active copy of the object. 13. A system as recited in claim 10, wherein said VOM further comprises: a virtual object store (18) containing an entry (22) for each of a plurality of corresponding objects, wherein each entry contains data for the corresponding object, said data being useful to recreate an active copy of the object; and a virtual object table (16) containing an entry (20) for each of said plurality of corresponding objects, wherein each entry indicates: (1) whether the corresponding object is active; (2) the address of an active copy of the object, if there is an active copy of the object; and (3) the address in said virtual object stor,e of an inactive copy of the object.

Inventors: MAIMONE WILLIAM D, MAIMONE, WILLIAM, D.
Applicants: UNISYS CORP, UNISYS CORPORATION
Application year: 1997
Main classification: G06F9
IPC codes: G06F9