WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes    
United States Patent5257369   
Link to this pagehttp://www.wikipatents.com/5257369.html
Inventor(s)Skeen; Marion D. (3826 Magnolia Dr., Palo Alto, CA 94306); Bowles; Mark (30 Tripp Ct., Woodside, CA 94062)
AbstractA 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.



 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5257369
Apparatus and method for providing decoupling of data exchange details

     for providing high performance communication between software processes - US Patent 5257369 Drawing
Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
Inventor     Skeen; Marion D. (3826 Magnolia Dr., Palo Alto, CA 94306); Bowles; Mark (30 Tripp Ct., Woodside, CA 94062)
Owner/Assignee    
Patent assignment
All assignments
Publication Date     October 26, 1993
Application Number     07/601,117
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     October 22, 1990
US Classification     719/312 709/229 719/313
Int'l Classification     G06F 015/16 G06F 015/62
Examiner     Heckler; Thomas M.
Assistant Examiner     Katbab; A.
Attorney/Law Firm    
Address
Parent Case    
Priority Data    
USPTO Field of Search     395/650 395/700
Patent Tags     providing decoupling data exchange details providing high performance communication between software
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5101406
Messenger
370/349
Mar,1992

[0 after 0 votes]
5073852
Siegel

Dec,1991

[0 after 0 votes]
5062037
Shorter

Oct,1991

[0 after 0 votes]
4999771
Ralph
710/315
Mar,1991

[0 after 0 votes]
4992972
Brooks

Feb,1991

[0 after 0 votes]
4975830
Gerpheide
709/228
Dec,1990

[0 after 0 votes]
4937784
Masai
718/104
Jun,1990

[0 after 0 votes]
4914583
Weisshaar
719/313
Apr,1990

[0 after 0 votes]
4815988
Scherer
439/392
Mar,1989

[0 after 0 votes]
4815030
Cross
707/10
Mar,1989

[0 after 0 votes]
4718005
Feigenbaum
709/222
Jan,1988

[0 after 0 votes]
4688170
Waite
703/27
Aug,1987

[0 after 0 votes]
4463093
Horwath
435/94
Jul,1984

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

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.

2. The apparatus of claim 1 further comprising:

a memory in said server computer coupled to said communication means;

means in said protocol engine of said communication means for sending data on said subject published by said service process as a sequence of data packets, each packet having a header, and for adding reliability enhancing sequence numbers to each packet header prior to transmission, and for storing each data packet and its header in said memory for later use in retransmission if necessary;

means in said protocol engine of said communication means for generating error correction data for each data packet and adding said error correction data to each data packet and for transmitting each data packet with its error correction data and header to make up a complete message via said network media using a broadcast communication protocol;

means in said protocol engine of said communication means of said host computer for receiving said data packets, the error correction data for each data packet and the header for each data packet and checking said reliability sequence numbers in said headers and the error correction data to verify that all data packets have arrived and to determine if any data packet was garbled during transmission over said network media, and for requesting the protocol engine in the communication means of said server computer to retransmit any missing or garbled packets, or, if all data packets were successfully received, for acknowledging that all data packets were received successfully; and

means in said protocol engine of said communication means coupled to said server computer for retransmitting any missing or garbled packets upon receiving a request from said protocol engine of the communication means of said host computer to which said data packets were directed, and for flushing any data packets no longer needed from said memory.

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.

4. The apparatus of claim 3 wherein said distributed communication means further comprises communication software coupled to said second software layer for providing reliable communications between said data publishing and data consuming processes to insure that all data transmitted on a particular subject is received successfully, and wherein said third software layer includes semantic operation means for receiving requests form a data consuming process to retrieve data from a particular named field of data from a data record published by a data publishing process and for determining the location of said particular named field within said data record and retrieving the data from said field and returning it to the data consuming process which requested data from said named field.

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.

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.

7. The apparatus of claim 6 wherein said subject-based addressing program means are also coupled to each service process and include subscription means programmed into at least said first and second computers which have service processes in execution thereon which maintain records of all active subscription subjects and which support subject-based addressing by filtering data messages to be transmitted over said data exchange media by subject such that data on subjects for which there are not active subscriptions is never transmitted on said data exchange media thereby conserving computing resources, and wherein said service discipline program means include cancel means programmed into at least said first and second computers having data consuming processes in execution thereon to receive cancel requests naming a subject for which a subscription is to be canceled when data on that particular subject are no longer desired by the data consuming process which issued the subscription request and to send a cancel message to the service discipline program coupled to the service process supplying data, and wherein said service discipline program means coupled to the service process supplying data on the subject for which a subscription has been cancelled include subscription list management means programmed into at least said first and second computers having service processes in execution thereon to compare the subject of each said cancel request to the list of active subscriptions and, if a match is found, to prevent any further transmission of data on that subject to the data consuming process issued the cancel request.

8. The apparatus of claim 6 wherein said subject-based addressing program means include a directory services program means programmed into at least said first and second computers having data consuming processes in execution thereon, and coupled to said one or more data consuming applications for maintaining service records which contain information on each said service process indicating which subject on which each service process can supply data, and the data exchange media address of each said service process, and the particular service discipline program means encapsulating an appropriate communication protocol to access said service process, said subject based addressing program means including means for invoking said directory services program means and passing to it the subject of said subscription request, said directory services program means including software means programmed into as least said first and second computers having data consuming processes in execution thereon for comparing the subject of said subscription request to the subjects listed in said service records and for returning at least one said service records for which there is a subject match to said subject based addressing program which received the subscription request, said subject based addressing program means including software means programmed into at least said first and second computers having data consuming processes in execution thereon for examining said service record or records and identifying the appropriate one or more service discipline program means that are capable of communicating with the service processes identified in said service records and for passing said service records to the selected service discipline program means with said request to establish said communication with the service process identified in said service records to aid said service discipline program means in establishing one or more subscription communication links on the requested subject.

9. The apparatus of claim 5 wherein said mapping means includes means for sending each said subscribe request and the subject thereof to a directory services program programmed into said at least one computer having data consuming processes in execution thereon which maintains service records matching subjects to the addresses of service processes which supply data on said subjects, and wherein said directory services program includes a routine to compare the subject in each said subscription request to the subjects in said service records and to pass all service records for which there is a subject match back to said means for mapping, and for invoking all the service discipline programs identified by said service records passed back from said directory services program so as to set up communication links on the pertinent subject with all the service processes identified in said service records.

10. The apparatus of claim 9 wherein said service record for each said service process includes data identifying the address where said service process can e accessed through said data exchange media and the appropriate service discipline program used in communicate with said service process.

11. The apparatus of claim 10 wherein said service records also include data identifying the computer upon which each service process is in execution and the address on said data exchange media of said, and wherein said subject-based addressing programs and said service discipline programs coupled to data consuming processes include software means for assigning a channel number for each subject which identifies routing information regarding how to send data on the assigned subject to the data consuming process that requested said data, and for including said channel number in the link request and in any message sent to the service discipline coupled to the service process selected to supply said data, and wherein the service discipline program coupled to said service process selected to supply said data includes said channel number in an entry in said subscription list assigned to said subject.

12. The apparatus of claim 5 further comprising one or more failure recovery program means programmed into at least said at least one computer having a data consuming process in execution thereon for monitoring the performance of the computer on which is executing the service process supplying data on a subscription to insure that data on said subject can still be received from said computer and for switching to another service processes supplying data on the same subject or switching to an available alternative paths, if any, through the data exchange media upon failure to receive the requested data so as to maintain the flow of data on the subject.

13. The apparatus of claim 5 wherein each service process is coupled to said one or more data exchange media through a communications daemon which includes software routines programmed into said at least one computer coupled to said service processes to filter data output by said service process in accordance with active subscription subjects such that only data pertaining to the subject or subjects of one or more active subscriptions are transmitted over said data exchange media to service discipline programs managing one or more active subscription communication links.

14. The apparatus of claim 5 wherein any service discipline program which has established an active subscription communication link with a service process which is broadcasting data on more subjects than just the subject of said active subscription includes a software routine programmed into said at least one computer having data consuming processes in execution thereon to filter out data not pertinent to the subject of said active subscription and pass the remaining data on the subscribing data consuming process.

15. The apparatus of claim 5 wherein said one or more subject-based addressing programs and said one or more service discipline programs together comprise a communication library or programs, and wherein each of said data consuming process and each said service process is linked to its one copy of said communication library programs, and further comprising a communication daemon coupling each of said at least one computer to said one or more data exchange media, each daemon comprising one or more protocol engine programs linking said communication library or libraries to said one or more data exchange media, each said protocol engine implementing a communication protocol to interface a service discipline program to said data exchange media, each said protocol engine being linked to data consuming process with an active subscription and including means programmed on said at least one computer for exchanging messages with and otherwise cooperating with another protocol engine linked to a service process supplying the requested data, said cooperation carried out for ensuring reliable communication of data on the requested subject over said data exchange media by attaching sequence numbers and error correction bits to all segments of a data message on a particular subject and, checking on the data consuming process side of the communication link to ensure that all segments of a data message on a subject have been received using said sequence numbers and ensuring that all data bits of each segments have been correctly received by using said error correction bits attached to each segment.

16. The apparatus of claim 15 wherein said communication daemons include programs and/or software subroutines programmed into said first and/or second computers to provide support for subject based addressing by filtering data messages to be transmitted via said data exchange media by subject.

17. The apparatus of claim 5 wherein at least some of said data exchange media have transport layer protocols programmed into said at least one computer and wherein said one or more subject-based addressing programs and said one or more service discipline programs together comprise a communication library of programs, and wherein each said data consuming process and each said service process is linked to its own copy of said communication library programs, and further comprising one or more communication daemons programmed into said at least one computer, each coupling to said data exchange media, and each daemon comprising one or more protocol engine programs programmed into said at least one computer, each said protocol engine encapsulating a communication protocol suitable for communication over at least one of said data exchange media, said protocol engines for cooperating with each other and with said transport layer protocols of said data exchange media to ensure reliable communications of data between data consuming processes and/or said service processes by detecting and correcting transmission errors and lost data in transmissions of data for active subscriptions, and further comprising one or more data exchange means programmed into said at least one computer and linked to said data consuming process and service processes, each data exchange means comprised of a library of programs for execution of said at least one computer for managing data exchange between data consuming processes and service processes in execution on said at least one computer which use different data record formats and/or data representations by automatically performing data format conversion services such that a data consuming process can request and receive data on a subject from a service process and receive the request data in a format and/or data representation which is useable by the requesting process regardless of the data format used by said service process which supplied the data thereby freeing the requesting process of the need to convert said data into a data format used by said data consuming process such that the formalities of data format conversion necessary for effective data communication between data consuming and service processes is transparent to these processes such that neither data consuming nor service processes communicating with each other need contain software routines capable of performing said data format conversions.

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.

19. The apparatus of claim 18 wherein each said library of programs for data format decoupling includes one or more forms-manager program means programmed into a CPU or workstation for manipulating instances of self-describing data records organized as classes and stored in and manipulated by said CPU's and workstations each of which contains both actual data and format data, said format data being defined in one or more form class definitions stored as a data structure in a CPU or workstation, said form class definition defining the names and formats or data representation type of each field of data records in a class of data records corresponding to said form class definition and defining the organization of said fields within each instance of a data record of that class, and further includes one or more forms-class manager program means programmed into a CPU or workstation and coupled to said forms-manager program means for manipulation of said form class definitions and including a means programmed into a CPU or workstation for receiving a get-field call from a subscriber or data publishing process or from a program in said library of communication programs, said get-field call including the address of a particular data record and the name of a field therein, and for retrieving the form class definition of the class of the data record identified in said get-field call and searching said form class definition for a field having the same name or a synonym of the name of the field name given in said get-field call, and for returning a relative offset pointer to the calling program, and including means programmed in a CPU or workstation for receiving a get-data call from a subscriber or data publishing process or from a program in said library of communication programs, said get-data call including the relative address pointer for the location of the desired data field in the desired data record identified by said get-field call, and for extracting the data in the field of the desired data record as identified by said relative address pointer and returning said data to the calling program, and including one or more format conversion program means programmed into a CPU or workstation for converting data records to be sent to a subscribing process form the data record format of the transmitting process to a data record format necessary for transmission over said communication structure, and, upon arrival at the receiving host CPU or workstation or server, for converting the data record format from the data record format used for transmission over said communication structure to the data record format by the receiving process.

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.

21. The apparatus of claim 5 wherein said subject-based addressing programs are also coupled to each service process and include software routines programmed into at least said first and second computers which have service processes in execution thereon which maintains records of all active subscription subjects and which support subject-based addressing by filtering data messages to be transmitted over said data exchange media by subject such that data on subjects for which there are no active subscriptions is never transmitted on said data exchange media thereby conserving computing resources, and wherein said data consuming processes include software routines programmed into at least said first and second computers having data consuming processes in execution thereon to generate cancel requests naming a subject for which a subscription is to be cancelled when data on that particular subject are no longer desired by the data consuming process which issued the subscription request and to send a cancel message to the service discipline program coupled to the service process supplying data, and wherein said service discipline programs include software routines programmed into at least said first and second computers having service processes in execution thereon to compare the subject of each said cancel request to the list of active subscriptions and, if a match is found, to prevent any further transmission of data on that subject to the data consuming process issued the cancel request.

22. The apparatus of claim 5 wherein said subject-based addressing programs include a directory services program programmed into at least said first and second computers having data consuming processes in execution thereon, and coupled to said one or more data consuming applications which maintains service records which contain information on each said service process indicating which subject on which each service process can supply data, and the address of each said service process, and the particular service discipline program encapsulating an appropriate communication protocol to access said service process, said means for mapping including means for invoking said directory services program and passing to it the subject of said subscription request, said directory services program including software means programmed into at least said first and second computers having data consuming processes in execution thereon for comparing the subject of said subscription request to the subjects listed in said service records and for returning all said service records for which there is a subject match to said subject based addressing program which received the subscription request, said subject based addressing program including software means programmed into at least said first and second computers having data consuming processes in execution thereon for examining said service record or records and identifying the appropriate one or more service discipline programs that