Distributed object networking service
First Claim
1. A distributed object system for use with a computer network having a client node and a server node connected thereto, the system implementing a first method and first data in a service object instantiated in the client node by means of a second method and second data in a service object instantiated in the server node, the system comprising:
- location apparatus, responsive to an instantiation of the service object in the client node, for locating the service object instantiated in the server node and comprising a communications directory service which is responsive to a call to the first method for returning a first service object containing service class information and the network address of the server node;
establishment apparatus, responsive to the instantiation of the service object in the client node, for establishing a network connection to the server node, the establishment apparatus including apparatus for retrieving from the communications directory service information identifying the server node, a dynamically reconfigurable protocol stack, and apparatus for retrieving information from the communications directory service for configuring the dynamically reconfigurable protocol stack to establish a connection from the client node to the server node;
caller object instantiation apparatus, responsive to a call made to the method in the service object instantiated in the client node, for instantiating a caller object in the client node;
service request generation apparatus, responsive to the instantiation of the caller object, for generating a service request data packet comprising service class information and the first data and for transmitting the service request data packet over the network connection; and
a dispatcher object in the server node, the dispatcher object being responsive to the service class information in the service request data packet, for locating and calling the method in the service object instantiated in the server node to generate a result and for transmitting the result over the network connection to the client node, the dispatcher object comprising;
a request table having stored therein a plurality of function pointer entries, each of the function pointer entries for identifying at least one subroutine in one of a plurality of service programs stored in the server node; and
a dictionary table having a plurality of dictionary table entries, each of the dictionary table entries for associating service class information with one of the plurality of function pointer entries in the request table.
2 Assignments
0 Petitions
Accused Products
Abstract
Remote procedure call (RPC) objects are provided in both a client node and a server node of a client-server network for invoking and responding to service requests generated by calls to local service objects. Specifically, the RPC objects comprise a "caller" object which, once instantiated, accepts service requests from client objects. A service request made by calling a function in the local service object is automatically routed by the caller object to a local service program if the requests can be serviced locally, or to a remote server node if the appropriate service program is located on the remote node. The RPC objects also include a "dispatcher" object which is located at the remote service node and receives incoming service requests. The service requests are actually satisfied by means of service functions which are part of service objects in the server node, but these latter service functions are associated with the local service objects by means of a "dictionary" located in the dispatcher object. In some cases, a service located at a remote node may itself need data or functions which, in turn, reside at other nodes. In this case, the dispatcher object is provided with additional "sub-objects" or "child" objects which include their own dispatcher objects. In this manner, incoming requests directed to the "parent" dispatcher object are forwarded to the child dispatcher objects for service.
182 Citations
16 Claims
-
1. A distributed object system for use with a computer network having a client node and a server node connected thereto, the system implementing a first method and first data in a service object instantiated in the client node by means of a second method and second data in a service object instantiated in the server node, the system comprising:
-
location apparatus, responsive to an instantiation of the service object in the client node, for locating the service object instantiated in the server node and comprising a communications directory service which is responsive to a call to the first method for returning a first service object containing service class information and the network address of the server node; establishment apparatus, responsive to the instantiation of the service object in the client node, for establishing a network connection to the server node, the establishment apparatus including apparatus for retrieving from the communications directory service information identifying the server node, a dynamically reconfigurable protocol stack, and apparatus for retrieving information from the communications directory service for configuring the dynamically reconfigurable protocol stack to establish a connection from the client node to the server node; caller object instantiation apparatus, responsive to a call made to the method in the service object instantiated in the client node, for instantiating a caller object in the client node; service request generation apparatus, responsive to the instantiation of the caller object, for generating a service request data packet comprising service class information and the first data and for transmitting the service request data packet over the network connection; and a dispatcher object in the server node, the dispatcher object being responsive to the service class information in the service request data packet, for locating and calling the method in the service object instantiated in the server node to generate a result and for transmitting the result over the network connection to the client node, the dispatcher object comprising; a request table having stored therein a plurality of function pointer entries, each of the function pointer entries for identifying at least one subroutine in one of a plurality of service programs stored in the server node; and a dictionary table having a plurality of dictionary table entries, each of the dictionary table entries for associating service class information with one of the plurality of function pointer entries in the request table. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A system for use with a computer network having a client node and a server node connected thereto, the system comprising:
-
a caller, stored in a memory of the client node and accepting a service request from a client application executing in the client node and for providing a service request data packet including an identifier for computing a request table index, the identifier of the service request data packet including at least one of; a flag number; a child identification code; and a class name; a first network adapter, coupled to the client node and to a communication channel, the first network adapter for receiving the service request data packet from the caller and for transmitting the service request data packet over the communication channel from the client node to the server node; a second network adapter, coupled to the server node and the communication channel, the second network adapter for receiving the service request data packet from the first network adapter; a dispatcher stored in a memory of the server node and coupled to the second network adapter, the dispatcher for receiving the service request packet from the second network adapter and for processing the service request data packet, the dispatcher comprising; a request table having stored therein a plurality of function pointer entries, each of the function pointer entries for identifying at least one method in one of a plurality of service programs, each of the plurality of function pointer entries including a remote function pointer wherein the remote function pointer identifies an entry point address of a method used to provide a service in a particular service program and wherein the function pointer can be used to access the service program methods, and when a service program has a plurality of methods, the request table has stored in sequential locations thereof, a plurality of function pointers for each of a plurality of methods in the service programs wherein each of the plurality of function pointer entries includes an entry point address for each of the plurality of methods and the system further comprises means for registering in the request table each method of each service program in the server node in response to the service being activated; a dictionary table having a plurality of dictionary table entries, each of the dictionary table entries for associating a service program with an entry in the request table and each of the dictionary table entries including; a class name of a service object which contains a service program, wherein the class name is comprised of one of;
(a) text characters; and
(b) a compressed code provided by a hashing technique;a table offset value used to locate a first one of a set of request table entries which correspond to a given service class; and a maximum request offset value for a set of request table entries associated with a particular service class, the maximum request offset value for checking whether a request table index calculated from the table offset value is within the set of request table entries for the particular service class and the dictionary table is shared between a plurality of service programs resident on the server node; a child directory table having a plurality of entries, each of the entries corresponding to a location of a child dispatcher to be used when an incoming request specifies that a child dispatcher is to be used to satisfy the request; a dictionary cache for storing a class name, a table offset value and a maximum request offset value of a dictionary table entry each time one of the plurality of dictionary table entries is requested and found in the dictionary table; means for comparing an identifier of an incoming service request data packet to an entry stored in a location of the dictionary cache; and means for obtaining the incoming service request and the request table offset directly from the dictionary cache in response to the identifier of the incoming service request data packet matching the entry stored in the location of the dictionary cache; and a semaphore mechanism for controlling access to the dictionary table to prevent a plurality of service programs from concurrently accessing the dictionary table. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A system for use with a computer network having a client node and a server node connected thereto, the system comprising:
-
a caller, stored in a memory of the client node, the caller for accepting a service request from a client application executing in the client node and for providing a service request data packet including an identifier for computing a request table index, the identifier of the service request data packet including at least one of; a flag number; a child identification code; and a class name; a first network adapter, coupled to the client node and to a communication channel, the first network adapter for receiving the service request data packet from the caller and for transmitting the service request data packet over the communication channel from the client node to the server node; a second network adapter, coupled to the server node and the communication channel, the second network adapter for receiving the service request data packet from the first network adapter; a dispatcher stored in a memory of the server node and coupled to the second network adapter, the dispatcher for receiving the service request packet from the second network adapter and for processing the service request data packet, the dispatcher comprising; a request table having stored therein a plurality of function pointer entries, each of the function pointer entries for identifying at least one method in one of a plurality of service programs, each of the plurality of function pointer entries including a remote function pointer wherein the remote function pointer identifies an entry point address of a method used to provide a service in a particular service program and wherein the function pointer can be used to access the service program methods, and when a service program has a plurality of methods, the request table has stored in sequential locations thereof, a plurality of function pointers for each of a plurality of methods in the service programs wherein each of the plurality of function pointer entries includes an entry point address for each of the plurality of methods and the system further comprises means for registering in the request table each method of each service program in the server node in response to the service being activated; a dictionary table having a plurality of dictionary table entries, each of the dictionary table entries for associating a service program with an entry in the request table and each of the dictionary table entries including; a class name of a service object which contains a service program, wherein the class name is comprised of one of;
(a) text characters; and
(b) a compressed code and is provided as a hashed class name corresponding to a key value of the respective dictionary entry;a table offset value used to locate a first one of a set of request table entries which correspond to a given service class; and a maximum request offset value for a set of request table entries associated with a particular service class, the maximum request offset value for checking whether a request table index calculated from the table offset value is within the set of request table entries for the particular service class; a child directory table having a plurality of entries, each of the entries corresponding to a location of a child dispatcher to be used when an incoming request specifies that a child dispatcher is to be used to satisfy the request; a dictionary cache for storing a class name, a table offset value and a maximum request offset value of a dictionary table entry each time one of the plurality of dictionary table entries is requested and found in the dictionary table; means for comparing an identifier of an incoming service request data packet to an entry stored in a location of the dictionary cache; and means for obtaining the incoming service request and the request table offset directly from the dictionary cache in response to the identifier of the incoming service request data packet matching the entry stored in the location of the dictionary cache.
-
Specification