Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
First Claim
1. In an apparatus comprising one or more application software processes in execution on and controlling operations of at least one host computer, each said host computer electrically coupled by a data path to at least one server computer having in execution thereon at least one service process controlling operations of said server computer, an apparatus, comprising:
- communication means in execution on and controlling operations by each said host computer and each said server computer and including at least one protocol engine encapsulating a communication protocol for exchanging data with other processes coupled to said data path, for receiving said link requests to set up a data communication link over said data path to all server computers identified in said link request or requests and for establishing said data communication link with all servers identified in said link requests;
service means in execution on and controlling operations by each said host computer and coupled to each application software process in execution on each said host computer, and in execution on and controlling operations of each said server computer and coupled to each said service process in execution thereon, including at least one service discipline encapsulating a communication protocol for communicating to at least a selected one of said service processes, for receiving a subscription request directed to at least one of said service disciplines requesting establishment of a subscription on a particular subject with one or more of said service processes, and for mapping said subscription request to all server computers which have in execution thereon a service process supplying data on said subject and one or more protocol engines encapsulating appropriate communication protocols needed to communicate over said network media with said server computers identified in said mapping by said service means, and for generating a said link request requesting establishment of a communication link with all server computers identified in said mapping of the subject to server, and transmitting said link request to said communication means, and, after said communication link is established for passing a message to the selected service process to establish a subscription on the subject and for sending all data published by any said selected service process on said subject to the application process or processes that have outstanding subscriptions on the subject until said subscription is cancelled; and
information means in execution on and controlling operations by each said host computer and coupled to each application software process in execution on each said host computer, and in execution on and controlling operations of each said server computer and coupled to each said service process in execution thereon, for receiving a subscribe request from said application process requesting data on a particular subject and mapping said subject contained therein to all service processes which supply data on said subject and one or more of said service disciplines which encapsulate communication protocols for communicating with all said service processes identified in said mapping, and for generating and sending said subscription request to said service means requesting establishment of a subscription on said subject with all said service processes identified in said mapping.
5 Assignments
0 Petitions
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 library 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
27 Claims
-
1. In an apparatus comprising one or more application software processes in execution on and controlling operations of at least one host computer, each said host computer electrically coupled by a data path to at least one server computer having in execution thereon at least one service process controlling operations of said server computer, an apparatus, comprising:
-
communication means in execution on and controlling operations by each said host computer and each said server computer and including at least one protocol engine encapsulating a communication protocol for exchanging data with other processes coupled to said data path, for receiving said link requests to set up a data communication link over said data path to all server computers identified in said link request or requests and for establishing said data communication link with all servers identified in said link requests; service means in execution on and controlling operations by each said host computer and coupled to each application software process in execution on each said host computer, and in execution on and controlling operations of each said server computer and coupled to each said service process in execution thereon, including at least one service discipline encapsulating a communication protocol for communicating to at least a selected one of said service processes, for receiving a subscription request directed to at least one of said service disciplines requesting establishment of a subscription on a particular subject with one or more of said service processes, and for mapping said subscription request to all server computers which have in execution thereon a service process supplying data on said subject and one or more protocol engines encapsulating appropriate communication protocols needed to communicate over said network media with said server computers identified in said mapping by said service means, and for generating a said link request requesting establishment of a communication link with all server computers identified in said mapping of the subject to server, and transmitting said link request to said communication means, and, after said communication link is established for passing a message to the selected service process to establish a subscription on the subject and for sending all data published by any said selected service process on said subject to the application process or processes that have outstanding subscriptions on the subject until said subscription is cancelled; and information means in execution on and controlling operations by each said host computer and coupled to each application software process in execution on each said host computer, and in execution on and controlling operations of each said server computer and coupled to each said service process in execution thereon, for receiving a subscribe request from said application process requesting data on a particular subject and mapping said subject contained therein to all service processes which supply data on said subject and one or more of said service disciplines which encapsulate communication protocols for communicating with all said service processes identified in said mapping, and for generating and sending said subscription request to said service means requesting establishment of a subscription on said subject with all said service processes identified in said mapping. - View Dependent Claims (2)
-
-
3. An apparatus for facilitating data exchange between one or more data consuming and data publishing processes in execution on one or more computers coupled by any data exchange medium or network having any architecture, comprising:
-
a first software layer programmed into said one or more computers and coupled by all said data publishing and data consuming processes in execution thereon for implementing architectural decoupling between said data publishing and data consuming processes such that no data consuming process need know the particular architecture of the network or data exchange medium coupling said data publishing and data consuming processes nor include any software routine to determine the address of any particular data publishing process which is published data desired by any said data consuming process which has requested said data, 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 an appropriate one or more communication protocols necessary to communicate with said data publishing process or processes; a second software layer programmed into said one or more computers and coupled to all said data publishing and data consuming processes in execution thereon 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 which said data publishing process or processes with which communications are to be established and for automatically generating a communications request requesting the establishment of a communication data path to one or more of said data publishing processes; and a third software layer programmed into all said computers and coupled to all said data publishing and data consuming processes in execution thereon and to said second software layer for implementing data format decoupling between said data publishing and data consuming processes such that data publishing and data consuming 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 data publishing and data consuming 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, and; distributed communication means coupled to each said computer and to said first, second and third software layers for receiving said communications request to establish a communication link to a particular one or more of said data publishing processes and for establishing communications through said data exchange medium or network with the particular data publishing process or processes which requested said data and passing any data received from said data publishing process or processes directly or indirectly back to the data consuming process which requested said data. - View Dependent Claims (4)
-
-
5. An apparatus for coupling data between processes running in a computing environment, comprising:
-
one or more data consuming processes programmed into said at least one computer and having therein at least one software routine for generating a subscription request for data on a particular subject; one or more service processes programmed into one or more of said at least one computer, each having an associated communication protocol and each for supplying data on a particular subject or group of subjects when in execution on said at least one computer; 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 processes in execution on said at least one computer together; one or more service discipline programs programmed into said at least one computer; one or more subject-based addressing programs programmed into said at least one computer and coupled at least to said data consuming and service processes for execution on said at least one computer, for receiving subscribe requests from said data consuming processes, each subscribe request requesting data on a particular subject, said subject-based addressing programs including means programmed into said at least one computer having data consuming processes in execution thereon for mapping the subject of each said subscribe request to the network address and/or identity of one or more of said service processes which supply data on said subject and to a service discipline program capable of communicating with said service process with the appropriate communication protocol, and for generating a link request to establish a communication link per subscribe request to at least one service process on each said subject with said communication link being established with at least some of the service processes identified in the mapping process, said service discipline programs which are programmed into a computer on which a service process is in execution including means for recording said subscribe requests received by said at least one computer on a list of active subscriptions, and for making available for communication over said data exchange media all data available from said service process relevant to said active subscription whenever data on the subject of said active subscription is published to the service process and for continuing to supply said data until said subscription is cancelled; each said service discipline program including means programmed into said at least one computer upon which a data consuming process is in execution for receiving said one or more link requests to establish a communication link on each said subject with a particular service process, and for accessing the desired data by establishing a communication link to the service process identified by the subject based addressing program and sending a subscription request to said service discipline program coupled to said service process or processes identifying the subject on which data is requested and including information regarding where to send the requested data, said communication link and transmission of the subscription request being accomplished using appropriate access and communication protocols for traversing the appropriate data exchange media and for logging onto the service process which will supply the requested data 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 for which there is an active subscription to the appropriate data consuming process that originated the subscription request and filtering out all data published by said service process which is not on a subject for which there is an active subscription until said subscription request on said subject is canceled. - View Dependent Claims (9, 10, 11, 12, 13, 14, 15, 16, 17, 21, 22)
-
-
6. In a computing environment having a first computer, a second computer, one or more data consuming processes executing on said first and/or second computers for requesting and using data on a subject, 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 one or more data consuming processes to said one or more service processes, an apparatus for facilitating data exchange between one or more of said data consuming processes and one or more of said service processes, comprising:
-
one or more service discipline program means programmed into said first and second computers and coupled to said one or more data consuming applications and to said one or more service processes, said service discipline program means for carrying out communication protocols to communicate with particular ones of said service processes, each said service discipline program means for receiving a subscription request to establish a communications link on a particular subject with a particular service process, and for establishing said communications link with said service process and registering a subscription therewith and for continuously receiving data on the subject from said service process whenever data on the subject is published and passing said data to said data consuming process which issued said subscription request until said subscription request is cancelled; and a subject based addressing program means programmed into said first and second computers and coupled to said one or more data consuming applications for receiving a subscription request on a particular subject from a data consuming process needing data on that subject and for mapping the subject to all service processes capable of supplying data on that subject and one or more service discipline program means capable of accessing and communicating with the service process or processes so identified using an appropriate communication protocol, and for selecting one or more of the service processes so identified and issuing to said service discipline program means identified during said mapping process for the selected service process said subscription request to establish a communications link with the selected service process on the requested subject. - View Dependent Claims (7, 8)
-
-
18. 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, programmed into each CPU and workstation, a copy of which is linked to every software process in execution on a CPU or workstation, 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 programmed into a CPU or workstation, which is capable of establishing communications with a publisher process which supplied data on the requested subjects, and for invoking said appropriate communication program for each said subject so as to establish and maintain a communication link with at least one of said publisher processes in execution on a CPU or workstation and 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 in execution on a CPU or workstation; and one or more libraries of data format decoupling programs programmed into each CPU or workstation, 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 form 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 organization 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 (19)
-
-
20. A process for communicating data between software processes operating in one or more computers 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 to the identity and location of a software process which supplies data on the subject and the identity of a service discipline program which is capable of communicating with said software process so identified that supplied data on that subject; and invoking said service discipline program identified by said subject mapper program and establishing a communication link to said software process which was identified in said automatic mapping step over said data communication path software process to publish; and using said service discipline program to communicate with said software process to cause said software process to start sending data to the software process that requested said data; and using said service discipline program to filter data published by said software process identified in said automatic mapping step by subject such that only data on the requested subject reaches said requesting software process.
-
-
23. An apparatus for obtaining data requested by one or more data consuming processes in execution on one or more computers from one or more service instances in execution on one or more hosts or server computers, comprising:
-
one or more networks or other data paths for transporting data between processes running at various locations or addresses on said network(s), said transport of data being carried out one or more appropriate communication paths through said network(s) or other data path(s) through, and according to one or more appropriate communication mechanisms or transport protocols; one or more host and/or server computers coupled to said network(s), each having one or more network addresses, each host and/or sever computer having an operating system and one or more other process(es) or service instances in execution thereon, each said operating system, process(es) or service instance(s) being programmed in any selected programming language, each said host and/or server computer having any selected machine architecture or type including any appropriate machine instruction set and any appropriate data representation format or type, each said operating system, process and/or service instance having one or more appropriate communication, access or invocation protocols; means coupled to said one or more data consuming processes and said one or more other processes and/or service instances for receiving said one or more requests for desired data from said one or more data consuming processes, said request defining the identity of the desired data by an identifier comprising ne or more parts, said desired data having certain access requirements including but not limited to the particular communication path(s) through said network(s) or other data path(s) to said desired data, the transport protocol or protocols along said communication path(s) through said network(s) or other data path(s) to said desired data, the network address(es) of the host(s) and/or sever computer(s) on which the process(s) publishing the desired data is or are in execution, the machine architecture(s) or type(s) or operating system(s) or the data representation format or type of the host(s) and/or server computer(s) upon which the process(es) publishing the desired data is or are in execution, the particular process(es) and/or service instance(s) or the data representation format or type or the programming language(s) of the particular process(es) and/or service instance(s) which is or are publishing said desired data, and the communication, access or invocation protocol or protocols of said process(es) or service instance(s) which is or are publishing said desired data, or the transport protocol(s) or operating system or systems involved in accessing and transporting said desired data, all of said access requirements uniquely defining the attributes or access requirements of a communication mechanism between said data consuming process(es) and said desired data, said request for said desired data being independent of one or more of said access requirements including at least the identity and/or location of said one or more particular process(es) and/or service instance(s) that publish said requested data and said communication, access or invocation protocol or protocols needed to communicate with said one or more process(es) and/or service instance(s) that publish said requested data, and for satisfying all said access requirements so as to establish a communication path(s) to said desired data, access said data and return said data to said data consuming process(es) that requested said data. - View Dependent Claims (24, 25, 26, 27)
-
Specification