Object oriented system for executing application call by using plurality of client-side subcontract mechanism associated with corresponding plurality of server-side subcontract mechanism
First Claim
1. In an object oriented system wherein there exists client applications, objects, object type definitions, object implementations and servers, an object invocation and communications system comprising:
- a local node;
a first spring object located on said local node for executing a call from an application procedure to a first object, said first object being an object implementation of said first spring object, without said application knowing a location of said first object or a location of said first object'"'"'s implementation and without said application knowing details of how arguments must be marshaled for calling said first object, and said first object comprising a data structure;
a stub located on said local node which assists in executing calls on said first object by marshalling arguments for said first object into a communications buffer;
a plurality of client-side subcontract mechanisms said subcontract mechanisms being distinct from object managers, which can perform remote invocation of operation calls in different ways, wherein different spring objects within a single application can be associated with a different one of said plurality of client-side subcontract mechanisms; and
wherein a client-side portion of one of said plurality of client-side subcontract mechanisms is coupled to a-- spring object, said client-side portion of a subcontract mechanism not being required to have knowledge of types of said arguments being sent to said first object and said client-side portion of a subcontract mechanism configured to receive from said stub a method identifier and a pointer to a communications buffer which contains arguments to be sent in a call to said first object, wherein said client-side portion of a subcontract mechanism has an option to add additional data to said communications buffer to provide additional information to said first object, and can transmit selectively one of a parameter representing a pointer to said communications buffer and said communications buffer'"'"'s contents to said first object and wherein the client-side portion of said one of said plurality of subcontract mechanisms can execute operation calls to generate a new object which is related to an existing object;
a server node; and
a plurality of server-side subcontract mechanisms each of which is associated with a corresponding one of said plurality of client-side subcontract mechanisms, wherein a server-side portion of said-- plurality of server-side subcontract mechanisms located on said server node and associated with said client-side portion of said subcontract mechanism for exchanging messages with and for processing operation calls initiated by, said client-side portion of said subcontract mechanism, said server-side portion of said subcontract mechanism configured to unmarshal said arguments in said communications buffer, deliver said arguments to a called object, receive results from said called object, marshall said results into a results buffer, and communicate selectively one of a parameter representing a pointer to said results buffer and said results buffer'"'"'s contents to said client-side portion of said subcontract.
0 Assignments
0 Petitions
Accused Products
Abstract
The present invention provides an elegant and simple way to provide mechanisms for invocation of objects by client applications and for argument passing between client applications and object implementations, without the client application or the operating system knowing the details of how these mechanisms work. Moreover, these mechanisms functions in a distributed computer environment with similar ease and efficiency, where client applications may be on one computer node and object implementations on another.
The invention includes a new type of object, termed a "spring object," which includes a method table, a subcontract mechanism and a data structure which represents the subcontract'"'"'s local private state.
155 Citations
9 Claims
-
1. In an object oriented system wherein there exists client applications, objects, object type definitions, object implementations and servers, an object invocation and communications system comprising:
-
a local node; a first spring object located on said local node for executing a call from an application procedure to a first object, said first object being an object implementation of said first spring object, without said application knowing a location of said first object or a location of said first object'"'"'s implementation and without said application knowing details of how arguments must be marshaled for calling said first object, and said first object comprising a data structure; a stub located on said local node which assists in executing calls on said first object by marshalling arguments for said first object into a communications buffer; a plurality of client-side subcontract mechanisms said subcontract mechanisms being distinct from object managers, which can perform remote invocation of operation calls in different ways, wherein different spring objects within a single application can be associated with a different one of said plurality of client-side subcontract mechanisms; and
wherein a client-side portion of one of said plurality of client-side subcontract mechanisms is coupled to a-- spring object, said client-side portion of a subcontract mechanism not being required to have knowledge of types of said arguments being sent to said first object and said client-side portion of a subcontract mechanism configured to receive from said stub a method identifier and a pointer to a communications buffer which contains arguments to be sent in a call to said first object, wherein said client-side portion of a subcontract mechanism has an option to add additional data to said communications buffer to provide additional information to said first object, and can transmit selectively one of a parameter representing a pointer to said communications buffer and said communications buffer'"'"'s contents to said first object and wherein the client-side portion of said one of said plurality of subcontract mechanisms can execute operation calls to generate a new object which is related to an existing object;a server node; and a plurality of server-side subcontract mechanisms each of which is associated with a corresponding one of said plurality of client-side subcontract mechanisms, wherein a server-side portion of said-- plurality of server-side subcontract mechanisms located on said server node and associated with said client-side portion of said subcontract mechanism for exchanging messages with and for processing operation calls initiated by, said client-side portion of said subcontract mechanism, said server-side portion of said subcontract mechanism configured to unmarshal said arguments in said communications buffer, deliver said arguments to a called object, receive results from said called object, marshall said results into a results buffer, and communicate selectively one of a parameter representing a pointer to said results buffer and said results buffer'"'"'s contents to said client-side portion of said subcontract. - View Dependent Claims (2, 3, 4)
-
-
5. In an object oriented system wherein there exists client applications, objects, stubs, object implementations and servers, a computer implemented method for communicating messages between a client application and a server, wherein the messages include arguments, at least one element of which includes an object, said method comprising the following steps:
-
under computer control generating an operation invocation on a local object by a client application, said object comprising a data structure; receiving said operation invocation by a client-side stub of said object; marshaling arguments associated with said operation invocation into a communications buffer, said marshalling operation comprising the steps of; determining whether any of the arguments to be marshaled is an object; for each object which is an argument to be marshaled, identifying one of a plurality of subcontracts which is associated with said object to be marshaled; using said identified subcontract which is associated with said object to be marshaled, marshal said object which is being used as an argument to be marshaled into a communications buffer; and returning a completion signal to said client-side stub; transforming said operation invocation into an operation call on a client-side subcontract by said client-side stub, said client-side subcontract being one of a plurality of subcontracts; using said client-side subcontract to transmit said operation invocation and associated communications buffer from said client application to said object'"'"'s implementation; using said client-side subcontract to receive a reply from said object'"'"'s implementation, and to deliver a return communications buffer to said client-side stub; unmarshalling said results and returned communications buffer by said client-side stub; and making said results available to said client application. - View Dependent Claims (6)
-
-
7. In an object oriented distributed system comprising a variety of different kinds of objects, and a set of subcontract identifiers, where each subcontract mechanism is identified by a subcontract identifier, a computer implemented method for unmarshalling an object from a communications buffer comprising the steps of:
-
under computer control unmarshalling a subcontract identifier from said communications buffer by a first subcontract mechanism, said first subcontract mechanism being one of a number of different subcontract mechanisms for communicating with remote objects, where each different subcontract mechanism comprises a set of procedures for performing at least object marshaling, object unmarshalling and object invocation; using a subcontract registry to locate a set of procedures that implements a second subcontract mechanism which is identified by said subcontract identifier by performing the additional steps of; checking said registry to determine if a subcontract mechanism associated with said subcontract identifier is contained in said registry; constructing a shared library filename based upon said subcontract identifier; and calling a dynamic linker program mechanism to link a program code mechanism to said registry, said program code mechanism being identified by said shared library filename based upon said subcontract identifier, said program code mechanism identified by said shared library filename based upon said subcontract identifier being said subcontract mechanism associated with said subcontract identifier; selecting an unmarshal procedure from said set of procedures that implements said second subcontract mechanism; performing a local procedure call to said unmarshal procedure to perform unmarshalling of said object; and unmarshalling said object by unmarshalling data and communications information that is appropriate to said second subcontract mechanism.
-
-
8. In an object oriented system wherein there exists client applications, objects, object type definitions, object implementations and servers, an object invocation and communications system comprising:
-
a local node; a first spring object located on said local node for executing a call from an application procedure to a first object, said first object being an object implementation of said first spring object, without said application knowing a location of said first object or a location of said first object'"'"'s implementation and without said application knowing details of how arguments must be marshaled for calling said first object, and said first object comprising a data structure; a stub located on said local node which assists in executing calls on said first object by marshalling arguments for said first object into a communications buffer; a plurality of client-side subcontract mechanisms said subcontract mechanisms being distinct from object managers, which can perform remote invocation of operation calls in different ways, wherein different spring objects within a single application can be associated with a different one of said plurality of client-side subcontract mechanisms; and
wherein a client-side portion of one of said plurality of client-side subcontract mechanisms is coupled to a-- spring object, said client-side portion of a subcontract mechanism not being required to have knowledge of types of said arguments being sent to said first object and said client-side portion of a subcontract mechanism configured to receive from said stub a method identifier and a pointer to a communications buffer which contains arguments to be sent in a call to said first object, wherein said client-side portion of a subcontract mechanism has an option to add additional data to said communications buffer to provide additional information to said first object, and can transmit selectively one of a parameter representing a pointer to said communications buffer and said communications buffer'"'"'s contents to said first object, and wherein the client-side portion of said one of said plurality of subcontract mechanisms can marshall and unmarshal an argument to a call wherein said argument is itself an object;a server node; and a plurality of server-side subcontract mechanisms each of which is associated with a corresponding one of said plurality of client-side subcontract mechanisms, wherein a server-side portion of said-- plurality of server-side subcontract mechanisms located on said server node and associated with said client-side portion of said subcontract mechanism for exchanging messages with and for processing operation calls initiated by, said client-side portion of said subcontract mechanism, said server-side portion of said subcontract mechanism configured to unmarshal said arguments in said communications buffer, deliver said arguments to a called object, receive results from said called object, marshall said results into a results buffer, and communicate selectively one of a parameter representing a pointer to said results buffer and said results buffer'"'"'s contents to said client-side portion of said subcontract.
-
-
9. In an object oriented system wherein there exists client applications, objects, object type definitions, object implementations and servers, an object invocation and communications system comprising:
-
a local node; a first spring object located on said local node for executing a call from an application procedure to a first object, said first object being an object implementation of said first spring object, without said application knowing a location of said first object or a location of said first object'"'"'s implementation and without said application knowing details of how arguments must be marshaled for calling said first object, and said first object comprising a data structure; a stub located on said local node which assists in executing calls on said first object by marshalling arguments for said first object into a communications buffer; a plurality of client-side subcontract mechanisms said subcontract mechanisms being distinct from object managers, which can perform remote invocation of operation calls in different ways, wherein different spring objects within a single application can be associated with a different one of said plurality of client-side subcontract mechanisms; and
wherein a client-side portion of one of said plurality of client-side subcontract mechanisms is coupled to a-- spring object, said client-side portion of a subcontract mechanism not being required to have knowledge of types of said arguments being sent to said first object and said client-side portion of a subcontract mechanism configured to receive from said stub a method identifier and a pointer to a communications buffer which contains arguments to be sent in a call to said first object, wherein said client-side portion of a subcontract mechanism has an option to add additional data to said communications buffer to provide additional information to said first object, and can transmit selectively one of a parameter representing a pointer to said communications buffer and said communications buffer'"'"'s contents to said first object, and wherein the client-side portion of said one of said plurality of subcontract mechanisms can marshal a copy of its associated object into said communications buffer;a server node; and a plurality of server-side subcontract mechanisms each of which is associated with a corresponding one of said plurality of client-side subcontract mechanisms, wherein a server-side portion of said-- plurality of server-side subcontract mechanisms located on said server node and associated with said client-side portion of said subcontract mechanism for exchanging messages with and for processing operation calls initiated by, said client-side portion of said subcontract mechanism, said server-side portion of said subcontract mechanism configured to unmarshal said arguments in said communications buffer, deliver said arguments to a called object, receive results from said called object, marshall said results into a results buffer, and communicate selectively one of a parameter representing a pointer to said results buffer and said results buffer'"'"'s contents to said client-side portion of said subcontract.
-
Specification