Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
First Claim
1. An apparatus for facilitating data exchange between one or more data consuming and data publishing processes running on one or more computers coupled by any data exchange medium, comprising:
- a first software layer for execution on said one or more computers and coupled to all said processes for implementing data distribution decoupling between said processes such that no data consuming process need include any software routine to determine the address of any particular process which is publishing data desired by said data consuming process, but may simply request desired data by subject and said subject will then be automatically mapped to the appropriate one or more data publishing processes publishing data on that subject and the appropriate one or more communication protocols necessary to communicate with said data publishing processes;
a second software layer for execution on said one or more computers and coupled to all said processes and to said first software layer for implementing service protocol decoupling between said processes such that no data consuming or data publishing process need include any software routine to implement a communication protocol necessary to communicate with any other data consuming or data publishing process, all said communication protocols being encoded in service discipline programs forming part of said second software layer, said second software layer including means for receiving information from said first software layer regarding the subject upon which data is requested, and including one or more software routines for establishing communication through said data exchange medium such that only data on said requested subject is received by said data consuming process which requested data on said subject; and
a third software layer coupled to all said processes and to said second software layer for implementing data format decoupling between said processes such that processes communicating with each other need not include software routines to translate between differing data representation formats and data record organizations used in data objects being exchanged by said communicating processes, all necessary translation from the data representation used by a data publishing process to a data representation used by the data consuming process which requested data on the subject being carried out by said third software layer.
3 Assignments
0 Petitions
Reexaminations
Accused Products
Abstract
A communication interface for decoupling one software application from another software application such communications between applications are facilitated and applications may be developed in modularized fashion. The communication interface is comprised of two libraries of programs. One libray manages self-describing forms which contain actual data to be exchanged as well as type information regarding data format and class definition that contain semantic information. Another library manages communications and includes a subject mapper to receive subscription requests regarding a particular subject and map them to particular communication disciplines and to particular services supplying this information. A number of communication disciplines also cooperate with the subject mapper or directly with client applications to manage communications with various other applications using the communication protocols used by those other applications.
-
Citations
68 Claims
-
1. An apparatus for facilitating data exchange between one or more data consuming and data publishing processes running on one or more computers coupled by any data exchange medium, comprising:
-
a first software layer for execution on said one or more computers and coupled to all said processes for implementing data distribution decoupling between said processes such that no data consuming process need include any software routine to determine the address of any particular process which is publishing data desired by said data consuming process, but may simply request desired data by subject and said subject will then be automatically mapped to the appropriate one or more data publishing processes publishing data on that subject and the appropriate one or more communication protocols necessary to communicate with said data publishing processes; a second software layer for execution on said one or more computers and coupled to all said processes and to said first software layer for implementing service protocol decoupling between said processes such that no data consuming or data publishing process need include any software routine to implement a communication protocol necessary to communicate with any other data consuming or data publishing process, all said communication protocols being encoded in service discipline programs forming part of said second software layer, said second software layer including means for receiving information from said first software layer regarding the subject upon which data is requested, and including one or more software routines for establishing communication through said data exchange medium such that only data on said requested subject is received by said data consuming process which requested data on said subject; and a third software layer coupled to all said processes and to said second software layer for implementing data format decoupling between said processes such that processes communicating with each other need not include software routines to translate between differing data representation formats and data record organizations used in data objects being exchanged by said communicating processes, all necessary translation from the data representation used by a data publishing process to a data representation used by the data consuming process which requested data on the subject being carried out by said third software layer. - View Dependent Claims (2)
-
-
3. An apparatus for coupling data between processes running in a computing environment having
a first central processing unit; -
a second central processing unit; one or more application processes which are data consumers running on said first and/or second central processing units and having at least one software routine to generate a subscription request for data on a particular subject; one or more service processes running on one or more of said first and/or second central processing units, each having an access protocol and each supplying data on a particular subject or group of subjects; one or more data exchange media such as shared memory, and/or shared distributed memory, and/or local area networks and/or wide area networks coupling said first and second central processing units together, each data exchange media having a communication protocol, said apparatus for coupling data comprising; one or more subject-based addressing programs coupled at least to said application processes for execution on said first and/or second central processing units for receiving subscription requests from said application processes, each subscription request requesting data on a particular subject and including means for mapping the subject of each said subscription request to the network address and/or identity of one or more of said service processes which supply data on said subject, and for generating a request that at least one communication link per subscription request to the appropriate service process be established on each said subject with one or more of said service processes which provides data on said subject; one or more service discipline programs for execution on said first and/or second central processing units which receive said one or more requests to establish a communication link on each said subject, for sending a request to one or more of said service process or processes using the access protocols for traversing the appropriate data exchange media to establish a communication link and for communicating with the selected service process or processes so as to establish a subscription for data on each said subject with the appropriate service process or processes, said service discipline programs for continuing to assist in passing data on each said subject to the appropriate application process that originated the subscription request until said subscription request on said subject cancelled. - View Dependent Claims (4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. In a computing environment having a first computer, a second computer, one or more data consuming application processes executing on said first and/or second computers for requesting and using data on a subject specified in a subscription request, and one or more service processes executing on said first or second computers, each capable of supplying data on particular subjects, and one or more data exchange media coupling said data consuming process to said service process, an apparatus for facilitating data exchange between said data consuming process and said service process, comprising:
-
one or more service discipline programs which encode communication protocols to communicate with particular ones of said service processes, each for receiving a request to establish communications on a particular subject and for establishing communications with a service process so as to receive data from said service process and pass only data on the requested subject to said data consuming process which issued said subscription request; a subject based addressing program for receiving a subscription request on a particular subject and for mapping the subject to a particular service discipline and for issuing a request to establish communications on the requested subject to said service discipline.
-
-
16. An apparatus for assisting in the communication of data between computer processes in a computer network having one or more host CPU'"'"'s or workstations and/or servers coupled together by a data communication structure comprising one or more local area networks and/or wide area networks and/or shared local or distributed memory, each said host CPU, server and workstation running software processes some of which are publisher processes which publish data, some of which are subscriber processes which consume data and some of which may do both, said publication of data carried out by sending data over said communication structure, comprising:
-
a library of communication programs a copy of which is linked to every software process, for receiving subscription requests from data consuming processes requesting data on particular subjects, and for mapping each of said subjects to an appropriate communication program which is capable of establishing communications with a publisher process which supplies data on the requested subjects, and for invoking said appropriate communication program for each said subject in said communication library to establish and maintain a communication link with at least one of said publisher processes supplying data on said subject, said communication program encapsulating all of the software communication protocols needed to access said publisher process and to provide a programmatic interface by which subscription requests to said communication library are entered by said subscriber processes; and one or more libraries of data format decoupling programs a copy of which is linked to each said communication library and to each said software process for performing data format translation services for publisher and subscriber processes between which data exchange takes place such that any subscriber process may receive data in a format useable by said subscriber process even though the publisher process from which the data originated may use a different data record format or data representation, and for providing semantic data retrieval services whereby subscriber processes may extract desired data from specific fields of specific data records from a publisher process despite the fact that the specified data record from which data is to be retrieved may have a different data record organizations without the need for any software routines in the subscriber process or the publisher process to process or translate differences in the organization of data records or differences in the field names in said data records. - View Dependent Claims (17)
-
-
18. An apparatus for facilitating communication of data between two or more software processes in execution on the same or different computers coupled by a data exchange medium where no process needs to know the port address of any other process, comprising:
-
one or more computers; a network comprised of at least one data transfer path, said network coupling said one or more computers by one or more data transfer paths; at least one application process in execution on at least one of said computers and capable of requesting data by subject; at least one data publishing process which may or may not be the same as said application process, said data publishing process in execution on at least one said computer and capable of outputting data on at least one subject; a subject based addressing program including means for obtaining data on different subjects, said subject based addressing program including computer programs linked at least to each of said at least one application and data publishing processes and to said network for receiving and processing subscription requests from said at least one application process on at least one subject and for mapping said subject to an appropriate means for obtaining data on the requested subject, and for entering a subscription for data on the requested subject with said appropriate means for obtaining data on said subject, and for receiving data on the requested subject and passing the data to the appropriate said one or more application processes which requested the data. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
-
-
49. An apparatus for facilitating communication of data in an environment comprising one or more computers and a network coupling said one or more computers by one or more data transfer paths and having a transport layer protocol, and having at least one data publishing process in execution on at least one said computer so as to implement at least one service instance capable of outputting data for transmission over said network, and having at least one application process in execution on at least one of said computers for performing various operations including requesting data from one or more of said service instances, comprising:
-
service discipline means for receiving from at least one said application process a subscription request to obtain data from a specified service instance and for automatically carrying out processing to set up a communication link to said service instance over said network using appropriate communication protocols to communicate with said service instance so as to obtain said data whenever data is published by said service instance and for automatically providing said data to said application process which requested said data until said application process cancels said subscription request; and at least one protocol engine program in execution on at least one said computer and coupled to said service discipline means for interfacing said service discipline means to said transport layer protocol to set up said communication link over one or more of said data transfer paths. - View Dependent Claims (50, 51, 52, 53, 54, 55, 56, 57, 58, 59)
-
-
60. An apparatus for facilitating communications of data in a computing environment comprised of one or more computers and/or servers executing one or more data consuming software processes and one or more data publishing server processes coupled by one or more networks and/or other interprocess communication paths, comprising:
-
at least one service discipline means capable of communicating with said server processes; first means for receiving a subscription request for data on a particular subject from a data consuming process and for mapping said subject to one or more said service discipline means which is capable of communicating with said data publishing server processes; and second means for invoking said service discipline means identified by said first means and using said service discipline means for establishing a communication session with said data publishing server process over said network or interprocess communication path between the requesting data consuming process and said data publishing server process, and for obtaining data only on the requested subject and passing said data to the data consuming process which requested the data. - View Dependent Claims (61, 62, 63, 64)
-
-
65. A communication interface for assisting in the exchange of data objects between software processes that use different data record formats and/or data representations for data objects, comprising:
-
means coupled to each said process for manipulating data objects called forms, each said form containing one or more class identifiers corresponding to one or more class definitions that give, for a corresponding class of forms, the name, data type and organization of the fields of each form of the class to which said form belongs, where each said field of a form may contain data or a form of another class, where each said form can store in each field thereof either actual data or a class identifier for another form such that multiple levels of nesting of forms can exist; and means for converting the format of a form to be transmitted to another process to a format necessary to accomplish the transmission over whatever data communication path exists between the two processes and for performing another conversion to data record format which renders said form suitable for use by the receiving process.
-
-
66. A communication interface for assisting in communication of data between computer processes which use different data record organizations and/or different data representations, comprising:
-
data record format conversion means coupled to each said process for manipulating self-describing data objects called forms each of which has one or more fields and which belongs to a class of forms having a unique class identifier, each field in a form capable of storing either actual data or the class identifier for another form, each form in any particular class having a data record organization, field names, and data format for each said field given by a class definition corresponding to the class identifier for that particular class, said data record format conversion means including means for translating the data record format for a form to be transmitted from one computer process to another first to a data record format suitable for transmission over whatever data communication path coupled the two processes together and then for translating the data record format of the transmitted form to a data record format suitable for use by the receiving software process; and semantic operation means coupled to said data format translation means and/or to each said process for receiving a request by a computer process to retrieve the data in any selected field of a particular form, said request identifying the particular form of interest and the name of the field of interest or a synonym thereof, and for accessing the class definition defining the field names and organization of the type of form identified in said request and locating a field having a name which matches the field name given in said request or is a synonym thereof and for returning a relative offset pointer address locating said field in every instance of said form and for accessing the form identified in said request and using said relative offset pointer address to locate the data in the field of interest and obtain and return said data to the request process.
-
-
67. A process for communicating data between software processes coupled by a data communication path comprising:
-
receiving a request for information on a particular subject from a requesting software process and automatically mapping that subject using a subject mapper program to the identity of a service discipline program which is capable of communicating with a data publishing process that supplies data on that subject; and invoking said service discipline program identified by said subject mapper program and establishing a communication link over the network or other communication path used by said data publishing process to publish data using said service discipline program and filtering data published by said data publishing process by subject if necessary such that only data on the requested subject reaches said requesting software process.
-
-
68. A process for communicating data between one or more processes running on one or more computers comprising the steps of:
-
receiving a request for information on a particular subject from a data consuming process and automatically mapping that subject to a data publishing process called a service that supplies data on that subject and to a service discipline encapsulating an appropriate communication procedure in order to communicate with the service identified by the mapping step, and outputting service record data identifying said service and said service discipline; invoking the service discipline identified by said service record data and establishing a communication link with said service using said service discipline such that data on the requested subject reaches said subscriber process which requested said data; exchanging the requested data between said service and said requesting computer program using self-describing data objects such that communications with said service are done using data objects having the format used by said service while the data received by said requesting computer program is via data objects having the format used by said data consuming process; and monitoring the reliability of the exchange of data and retransmitting lost data or switching services supplying data on the subject if necessary so as to maintain the flow of reliable data.
-
Specification