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 Patent5557798   
Link to this pagehttp://www.wikipatents.com/5557798.html
Inventor(s)Skeen; Marion D. (Palo Alto, CA); Bowles; Mark (Woodside, CA)
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
Inventor     Skeen; Marion D. (Palo Alto, CA); Bowles; Mark (Woodside, CA)
Owner/Assignee     Tibco, Inc. (Palo Alto, CA)
Patent assignment
All assignments
Publication Date     September 17, 1996
Application Number     07/632,551
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     December 21, 1990
US Classification    
Int'l Classification    
Examiner     Kriess; Kevin A.
Assistant Examiner    
Attorney/Law Firm     Fish; Ronald Falk, Vestal & Fish
Address
Parent Case     This is a continuation-in-part application of a U.S. patent application entitled "Apparatus and Method for Providing Decoupling of Data Exchange Details for Providing High Performance Communications Between Software Processes", U.S. Ser. No. 07/601,117, now U.S. Pat. No. 5,257,369, filed Oct. 22, 1990 which is a continuation-in-part application of U.S. Ser. No. 07/386,584, now U.S. Pat. No. 5,187,787 filed Jul. 27, 1989.
Priority Data    
USPTO Field of Search    
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
 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 a distributed computing environment including one or more computers coupled together by one or more networks, said one or more computers having in execution thereon one or more subscriber applications each of which has the capability of making a subscription request requesting that data on one or more subjects be sent to said subscriber application whenever data on said subject becomes available until said subscription is canceled, and said one or more computers having in execution thereon one or more service applications, each of which is capable of transmitting over said one or more networks data on one or more subjects, an apparatus comprising:

intermediary software controlling said one or more computers and coupled to said one or more networks and said one or more subscriber and service applications, so as to logically decouple said one or more subscriber applications from said service applications in the sense of performing all necessary functions to get data requested by subject by said subscriber applications from one or more service applications that supply data on the requested subject to all computers on which a subscriber application is in execution which has an open subscription to the subject of said data and from each such computer to the subscribing applications themselves and delivering said data only to said computers on which there is in execution a subscriber application having an open subscription to the subject of said data, said logical decoupling also implemented by said intermediary software by eliminating the need to have computer code in any said service application which outputs any data, other than the subject itself, which controls where in said distributed computing environment data published by said service application in execution on one or more of said computers is distributed or which identifies or locates any subscriber application or computer in said distributed computing environment to which data published by any said service application is to be distributed, and by eliminating the need for any subscriber application to include computer code which identifies any particular service application from which data is to be sought or which can find a service application which can supply data on a subject desired by said subscriber application, said intermediary software for controlling said one or more computers so as to automatically set up a communication path through said network between service applications which publish data on a subject and all and only computers having in execution thereon subscriber applications having an open subscription to the subject of said data.

2. An apparatus for use in a distributed computing system comprised of one or more computers some of which may be clients and some of which may be servers and some of which may be both clients and servers, all said computers coupled by a network or data path, said apparatus for interfacing at least one application process in execution on at least one client computer having an operating system embodying a transport layer communication protocol and a network interface circuit card coupling the client computer to said network to which is coupled at least one server computer having an operating system embodying a transport layer protocol and execution of which is controlled by at least one service process, such that said at least one application process requesting data on a subject can be selectively linked to at least one service process which is capable of supplying data on said subject using a subscription paradigm, and wherein each said at least one application process is capable of issuing subscription requests requesting an ongoing flow of data on the subject named in each said subscription request whenever said data is published, comprising:

communication means including at least one protocol engine for execution on each of said host and server computers and coupled to said transport layer communication protocols of said host and server computers, each protocol engine encapsulating a communication protocol providing reliability or efficiency enhancing functions not supplied by said transpod layer communication protocol, said protocol engines for exchanging data with each other over said network, said communication means for receiving a link request to set up a subscription-based data communication link to a selected server computer and for selecting and invoking selected ones of said protocol engines encapsulating a desired communication protocol and for invoking said transport layer communication protocol to physically establish said data communication link;

service means for processing subscription requests, said service means including at least two service discipline(s) including a consumer side service discipline program for controlling one or more of said computers so as to communicate with said at least one application process and a publisher side service discipline program for controlling one or more of said computers so as to communicate with said at least one service process and which is capable of receiving data published on a subject by said service process and distributing said published data to only those computers having in execution thereon an application process having an open subscription to the subject of said data, said data published by said service process containing no data indicating where said data is to be sent within said distributed computing system, other than the subject of the published data itself, said service means for transmitting said data to all application processes which have issued subscription requests naming the subject of said data as being of interest, and wherein at least said consumer side service discipline encapsulates a communication protocol for communicating to at least a selected one of said services via the publisher side service discipline coupled thereto, said service means for receiving a subscription link request requesting establishment of a subscription communication link with one or more of said service processes named in said subscription communication link which publishes data on a particular subject and for generating and transmitting to said communication means said link request requesting the establishment by said communication means of said subscription-based data communication link with the service identified in said subscription link request, and for sending a subscription registration message to said publisher side service discipline coupled to said one or more service processes requesting that all data on said subject, whenever published, be sent to each said application process(es) which has issued a subscription request on the subject so long as said subscription has not been canceled, said publisher side service discipline being selectively coupled to said service process for registering said subscription in a subscription list identifying at least all application processes that have active subscriptions and the subjects thereof, at least one of said service disciplines being coupled to each said application and services process for which an active subscription and communication link have been established and cooperating with each said application process that issued a subscription request and at least one said service process that is capable of supplying data on the subject so as to forward data published by said service process(es)on the subject of an active subscription to all said application processes having an active subscription on said subject, said service means for filtering said published data by subject on the service side of the data communication link such that data published by said service process which does not correspond to the subject of any active subscription is not transmitted over the network but such that data having a subject matching the subject of an active subscription reaches all application processes which have active subscriptions on the subject; and

information means for controlling one or more computers so as to present a programmatic interface at least to said one or more application processes and said at least one service processes such said one or more application processes can open a subscription to a subject simply by passing a subscribe request to said programmatic interface and passing a subject thereto in said subscription request and such that a service process can publish data on a subject to all said application processes having an open subscription to said subject simply by invoking a publish function of said programmatic interface and passing the data to be published thereto along with a subject of said data, said information means for receiving said subscribe request(s) from said one or more application process(es), each said subscribe request containing at least a subject and the identity of a callback routine for said application process, and, for each said subscribe request, mapping said subject contained therein to one or more of said service processes which can supply data on said subject and at least a selected one of said service disciplines which encapsulates a communication protocol capable of communicating with said selected service or services, and for transmitting the subject of said subscribe request to said service means along with data identifying and/or giving the address in said distributed computing system of at least one service process with which subscription based data communication links are to be established.

3. The apparatus of claim 2 wherein data transmitted between said application process and said service process is transmitted over said data path or network as a data message comprising a plurality of sequential packets, each of which has a header and error corrections bits as part of said packet, and wherein said communication means further comprises:

a memory;

means for adding reliability enhancing sequence numbers to said packet headers prior to transmission;

means for transmitting over said data path or network the packets, error correction bits and sequence numbers which comprise a complete data message;

means for saving said packets in said memory with said sequence numbers and error correction bits in case some or all of the packets need to be retransmitted;

means for transmitting said packets;

means for receiving said packets and checking said reliability sequence numbers to determine that all packets have arrived and using said error correction bits to determine if any of said packets were garbled during transmission, and for requesting retransmission of any missing or garbled packets, or acknowledging that all packets were properly received; and

means for retransmitting any missing or garbled packets and for flushing any packets no longer needed from said memory.

4. In a distributed computing environment including at least one data consuming process in execution on one or more computers and at least one data producing process in execution on one or more computers, said one or more computers and said data consuming and data producing processes coupled by at least one data path and/or network, an apparatus comprising:

one or more computers in said distributed computing environment processing of which is controlled by one or more subject based addressing programs, said one or more subject based addressing programs for controlling said one or more computers to receive a subscription request from one or more data consuming processes to locate and access data on a specified subject, and for controlling said one or more computers to automatically locate at least one data producing process which produces data on said subject and for controlling said one or more computers to automatically generate each of said one or more link requests requesting that one or more subscription communication links be established over said data path between at least one of said data producing processes which supply data on the subject of said subscription request and at least one of said data consuming processes which made subscription requests for data on said subject; and

one or more computers in said distributed computing environment controlled by one or more communication programs to receive said link requests from said one or more computers controlled by said subject based addressing programs, and for controlling said one or more computers so as to automatically establish said one or more subscription communication links over said data path, each of said one or more subscription communication links being established using a communication protocol appropriate for communication with the data producing process with which said subscription communication link is established, said one or more subscription communication links being established by controlling said one or more computers controlled by said one or more communication programs such that there is no need for said one or more computers controlled by said one or more communication programs to receive any address or address related data, other than the subject itself of the subscription request, from any data consuming process indicating where in said distributed computing environment a data producing process which is publishing data on the subject may be found and by controlling said one or more computers controlled by said one or more communication programs such that there is no need to receive any data from any data producing process, other than the subject itself of the data published by said data producing process, indicating or controlling where the data published by the data producing process is to be sent in said distributed computing environment, said one or more communication programs also for controlling said one or more computers so as to automatically transport data published on the subjects of any active subscription(s) to all but only said one or more computers processing of which is controlled by a data consuming processes which issued a subscription request requesting data on said subject and for controlling said one or more computers so as to automatically route said data published on a subject for which there is an active subscription to all said one or more data consuming processes having an active subscription on the subject of said data until said subscription(s) is canceled.

5. The apparatus of claim 4 wherein said subject based addressing program includes directory services means for storing data identifying which data producing processes supply data on which subjects and for searching said data in response to receipt of a subscription request and returning any data located during said search identifying or giving the address in said distributed computing environment of one or more data producing processes which can supply data on the subject of said subscription request to said one or more computers controlled by said one or more subject based addressing programs for use in generating said one or more link requests.

6. The apparatus of claim 4 wherein each said subject can have multiple parts which are arranged into a subject space containing 30 or more multiple part subjects, and wherein said subject space is arranged hierarchically based upon said multiple parts of said subjects, and wherein said one or more computers controlled by said one or more subject based addressing programs include means for locating all data producing processes which publish data having a subject which satisfies all parts of said multiple part subject.

7. The apparatus of claim 4 wherein said subject contained within said subscription request can have multiple pads, and wherein each said multiple part subject can include empty strings or other wild card notations, and wherein said one or more computers controlled by said one or more subject based addressing programs includes means for locating all data producing processes which supply data having a subject which satisfies all parts of said multiple part subject which are not empty strings or wild card notations, and wherein no data producing process controlling any of said one or more computers so as to publish data on one or more subjects includes any software routine, program or data the content of which is dependent upon the existence or location in said distributed computing environment of any data consuming process which can issue subscription request or the purpose of which is to directly or indirectly locate any data consuming process which can issue subscription request, and wherein no data producing process controlling any of said one or more computers so as to publish data on one or more subjects includes any software routine, program or subroutine which functions to assist in any way, other than outputting the subject of published data, in routing data between any said data producing process which controls said one or more computers so as to publish data and any data consuming process controlling one or more computers, and wherein no data consuming process controlling one or more computers includes any software routine, program or the content of which is dependent upon the existence or location of any data producing process or the purpose of which is to control one or more of said computers so as to locate any data producing process other than by outputting the subject itself of the subscription request.

8. The apparatus of claim 6 wherein said multiple parts of said subject are hierarchically arranged, and wherein there are at least 30 data producing and data consuming processes controlling processing by one or more of said computers in said distributed computing environment.

9. The apparatus of claim 7 wherein said multiple pads of said subject are hierarchically arranged.

10. The apparatus of claim 5 wherein said one or more communication programs include means coupled to each of said one or more computers under control of one or more of said data producing processes for keeping a subscription list of all of said one or more data consuming processes which have requested subscriptions and the subjects of said subscriptions and for filtering data published by said one or more computers under control of said one or more data publishing processes such that only data having a subject which matches the subject of an active subscription is transmitted over said network or data path.

11. The apparatus of claim 6 wherein each said computer under control of one of said communication programs further comprise means coupled to each data consuming process and each data producing process via the one or more computers controlled thereby for keeping a list indicating for each subject whether there are or are not active subscriptions for that subject, and wherein each said computer under control of one of said communication programs further comprises means for checking said list each time a data message on any subject is published by one or more computers under control of one or more of said data producing processes and for broadcasting over said data path or network each data message published by one or more computers under control of any data producing process on a subject for which there is at least one active subscription indicated on said list, and each said computer under control of at least one of said communication programs further comprising a communication daemon means for controlling execution by each said computer by multitasking so as to cause each said computer under control of at least one of said communications means to filter incoming data messages by subject so that data messages on any subject for which there is an active subscription entered by a data consuming process controlling processing in a multitasking environment on one of said computers on which a communication daemon means is also controlling execution of said computer on a multitasking basis are automatically sent to all data consuming processes in execution on said computer that requested said data and all other data messages on subjects for which there are no active subscriptions by any data consuming process controlling execution of said computer on a multitasking basis are discarded.

12. The apparatus of claim 8 wherein said one or more computers under control of said one or more communication programs further comprises means coupled to each data consuming process for filtering incoming data by subject so that only data on the requested subject reaches the data consuming process which requested said data.

13. The apparatus of claim 4 further comprising a distributed communications component comprised of one or more computers controlled by one or more computer programs to receive instructions from said one or more computers controlled by one or more subject based addressing programs to establish communications with one or more computers controlled by one or more data publishing computer programs, said distributed communications component for shielding said application and data publishing computer programs from the need to have routines or computer instructions therein to control said one or more computers so as to be able to know the physical distribution of other computers and computer programs in said distributed system and the communication processes so as to be able to communicate with said other computers and computer programs thereby insulating said application and data publishing computer programs from having dependencies on various characteristics of said distributed system designed into the computer programming instructions of said application and data publishing computer programs which could render said application and data publishing computer programs obsolete when said characteristics of said distributed system change.

14. In a computing environment having one or more computers coupled by one or more data paths and/or one or more networks, and having one or more data producing processes which publish data messages on one or more subjects arranged into a subject space, and one or more data consuming processes which need data on one or more subjects, said one or more data producing processes and said one or more data consuming processes in execution on said one or more computers, a process comprising the steps of:

storing data encoding the subjects in said subject space in a memory or other means for storing data coupled to of one or more of said computers, and storing in said memory or said other means for storing data mapping data which maps the identity and/or the address in said computing environment of one or more of said data producing processes for execution on one or more of said computers in said distributed computing system which can supply data on a subject for one or more subjects in said subject space;

receiving a subscription request from one or more data consuming processes for data on a particular subject and automatically locating all data producing processes which can supply data messages on that subject by using the subject of said subscription request to search said mapping data to locate a data producing process which can supply data on that subject without any assistance from said one or more data consuming processes other than receipt of the subject of the subscription request, and generating a link request, said link request directly or indirectly identifying said at least one data producing process located by search of said mapping data which can supply data on the requested subject included in said subscription request, said link request requesting that a communication link be established between at least one of said data producing processes identified in said link request and all of said data consuming processes which requested data on said subject; and

receiving said link request and automatically setting up a communications link with said at least one data producing process identified directly or indirectly in said link request, and directing data messages received from any said data producing process on said subject to all and only computers having their processing controlled by said data consuming processes which requested data on said subject without receiving any data from any said data producing process which publishes a data message, other than the subject of the data itself, which indicates or controls to which computers in said computing environment any said data message is to be sent,

and wherein no data producing process needs to include any data or computer instructions the purpose of which is to identify or locate any said data consuming process other than to output the subject of the data message being published.

15. The process of claim 14 wherein said step of automatically setting up said communications link further comprises the step of sending a request for a subscription to said at least one data producing process identified in said link request, said subscription request identifying directly or indirectly the data consuming process or processes which requested data on said subject, and wherein said step of directing data messages published by said data producing process on each said subject includes the step of directing all data messages published by said at least one data producing process to all data consuming processes which have an active subscription for data on said subject, said directing of data messages on a subject to all data consuming processes having active subscriptions for data on said subject occurring continuously each time a data message on said subject is published but not transmitting any message on any subject to any computer in said communication environment not having in execution thereon a data consuming process having an active subscription to the subject of said message, but ceasing to direct data messages to any data consuming process which has canceled its subscription.

16. The process of claim 14 wherein the step of locating all data producing processes which can supply data messages on the subject of a subscription request includes the steps of passing the subject of said subscription request to said one or more computers controlled by said directory services program which causes said one or more computers controlled by said directory services program to search said mapping data in said data stored in said computer memory encoding said subject space to locate the subject of said subscription request and return data identifying and/or giving the address in said computing environment of at least one data producing process which can supply data on the subject if any such process exists, and wherein said data returned by said computer controlled by said directory services programs is used to generate said link request, and wherein the step of automatically setting up a communications link further comprises the step of making one or more subscription lists listing subjects for which there are active subscriptions, said one or more subscription lists directly or indirectly identifying the data consuming processes that initiated the active subscriptions, and wherein the step of directing data messages on a subject to all data consuming processes which requested data on said subject further comprises the steps of comparing the subject of each data message published by any data publishing process to the subjects having active subscriptions listed on said one or more subscription lists and directing any data message published on a subject for which there is an active subscription to all data consuming processes that requested data on the subject of said data message, but not allowing any data message published by said data producing processes which does not match the subject of at least one active subscription to be transmitted over said data path.

17. The process of claim 14 wherein data messages transmitted between said data producing processes and said data consuming processes, hereafter referred to as processes, are transmitted as self describing data objects, wherein each self describing data object is comprised of one or more fields each of which is either a primitive class form which stores data or a constructed class form which is comprised of other fields which themselves may be primitive or constructed class forms, each said constructed class form belonging to a class which has a corresponding class definition, said self describing data objects being organized into classes defined by class definitions, each class definition comprising a list of the fields by name and data representation type which are common to all self describing data objects of that class, each self describing data object including both data format information and actual data or field values for each said field, and further comprising the steps of:

automatically converting any self describing data objects to be transmitted from one process to another from the format of the transmitting process to the format necessary for transmission across said data path prior to transmission thereof, and then transmitting said self describing data object through said data path; and

automatically converting any self describing data objects received after transmission through said data path which are bound for either a data consuming process or a data producing process, from the format used to transmit data across said data path to the format used by said receiving process.

18. The process of claim 17 wherein each said conversion step comprises the steps of:

receiving a format conversion call identifying the desired "from" format and the desired "to" format and identifying a specific self describing data object upon which the conversion is to be performed;

accessing a table storing identifiers of particular from-to format conversions;

locating the first field in said self describing data object which is a primitive class form;

using the format information stored in said self describing data object for the primitive field so located, looking up a "from" format in said table corresponding to the format of the primitive class field so located and determining the required "to" format for the conversion specified in said conversion call;

using a table storing pointers to appropriate conversion software routines for the desired from-to format conversion, looking up a from-to format conversion pointer using the "from" and "to" formats just determined and using said pointer to execute an appropriate software routine to perform the desired from-to format conversion;

locating the next field containing a primitive class form in the self describing data object identified in said conversion call and repeating the above steps to convert the data in the next primitive class form from the then existing "from" format to the desired "to" format and repeating this process until all fields containing primitive class forms have been so processed; and

processing every field containing a constructed class form as defined above by searching the constructed class form until the first field is found containing a primitive class form and converting the format thereof using the steps defined above and repeating this process until all fields containing primitive class forms for all levels of nesting of fields containing constructed class forms have been converted to the desired "to" format.

19. The process of claim 14 wherein data transmitted between said data producing processes and said data consuming processes is transmitted as self describing data objects, each self describing data object comprised of one or more fields each of which is either a primitive class form which stores data or a constructed class form which is comprised of other fields which themselves may be primitive or constructed class forms, each said constructed class form belonging to a class which has a corresponding class definition, said self describing data objects being organized into classes defined by class definitions, each class definition comprising a list of the fields by name and data representation type which are common to all self describing data objects of that class, each self describing data object including both data format information and actual data or field values for each said field, for providing the capability for a data consuming or data producing process to obtain data from a particular field of a particular self describing data object generated by another process, comprising the steps of:

receiving in a Get-Field call from a process that desires particular data, said Get-Field call identifying the particular field name of the field of the self describing data object from which the data is to be obtained and the particular one of said self describing data objects from which data is to be obtained;

searching the class definition for said self describing data object from which data is to be obtained to locate said field name identified in said Get-Field call or some synonym thereof;

returning a relative address for said field identified in said Get-Field call, said relative address identifying where in instances of said class of said self describing data object identified in said Get-Field call said field named in said Get-Field call can be found;

accessing said self describing data object identified in said Get-Field call and retrieving the desired data using said relative address of the field in which the desired data is stored, and returning the desired data to the process which requested said data.

20. The process of claim 14 wherein the step of automatically setting up a communications link further comprises the steps of:

sending a subscription request message to a publisher side service discipline process which controls one or more of said computers so as to be coupled to receive data on the subject of said subscription request from a data producing process or processes which control the same said one or more computers having said publisher side service discipline process in execution thereon so as to publish data messages on said subject and with which communication links are to be set up on said subject;

recording all said subscription requests in a subscription table or list;

assigning a channel on said one or more data paths and/or one or more networks to each said subject for which there is an active subscription and recording said channel in said subscription table for each;

when a data message is published by any said data producing process, checking the subject thereof against the subjects of all active subscriptions in said subscription table or list to determine if there are any active subscriptions on the subject;

sending said data message published by any data producing process to all data consuming processes having active subscriptions to the subject of said data by a broadcast communication protocol by dividing said data message into one or more sequential packets suitable for transmission over said data path and/or network, each sequential packet having a header and adding to said header the channel number assigned to said subject and a sequence number indicating where said packet lies in the sequence of packets which, taken together, comprise the data message published by said data publishing process, and calculating error correction bits on data within each said packet and adding said error correction bits so calculated to each said packet;

storing all said packets in a retransmit memory;

sending messages to each data consuming process having an active subscription to the subject of said data informing each data consuming process of the channel on which said data will be broadcast;

broadcasting said data packets on said channel assigned to the subject of said data via said data path and/or network;

receiving said packets at the location of each computer in said computing environment and, at the location of each said computer, comparing the channel number of each said packet so received to the channel numbers recorded in said subscription table of all active subscriptions initiated by any data consuming process in execution at the location of said computer;

if the channel number of the received packets at any computer in said computing environment matches the channel number of any active subscription recorded in said subscription table of a data consuming process in execution on said computer, checking the sequence numbers of all packets received at the location of said computer in said computing environment to determine if all packets comprising the complete data message have been received and using said error correction bits to determine if each received packet has been correctly received, and repeating this process at the location of each said computer, and if the channel number of the received packets at any computer in said computing environment does not match the channel number recorded in said subscription table of a data consuming process in execution on said computer, discarding all said packets whose channel numbers do not match the channel number recorded in said subscription table of a data consuming process in execution on said computer;

if all packets have been successfully received, sending a message back to the process that transmitted the data that all packets have been successfully received, or, if any packet was not received or was not correctly received, sending a message to the process that transmitted the data requesting retransmission of any packets which were not received or which were not correctly received and which cannot be corrected at the receiving computer using said error correction bits;

retransmitting any packets that were not received or which were not correctly received to any computer in said computing environment that transmitted a message indicating one or more packets were not received or were not received correctly;

verifying that the newly transmitted packets have been received and have been correctly received; and

reassembling said data packets into said data message at the location of any computer which received data packets having channel numbers matching the channel number of an active subscription entered by a data consuming process in execution on said computer, and passing said reassembled data message to the data consuming process or processes which requested data on the subject of said data message which is in execution on said computer.

21. The process of claim 14 wherein the step of setting up a communications link further comprises the steps of:

sending a subscription request message to a publisher side service discipline process which controls one or more of said computers so as to be coupled to receive data on the subject of said subscription request from a data producing process or processes which control the same said one or more computers having said publisher side service discipline process in execution thereon so as to publish data on the subject of said subscription request;

recording all said subscription requests in a subscription table and storing in said table the identities of all data consuming processes desiring data on each subject which is the subject of an active subscription;

assigning a channel on said one or more data paths and/or one or more networks to each said subject for which there is an active subscription and recording said channel in said subscription table for each said subscription recorded therein;

when data is published by any said data producing process with which a communication link has been established, checking the subject thereof against the subjects of all active subscriptions in said subscription table to determine how many data consuming processes have active subscriptions on the subject;

comparing the number of said data consuming processes to a predetermined threshold, and determining whether it would be more efficient to transmit the data to all data consuming processes having active subscriptions on said subject using a point-to-point communication protocol by sending the same data multiple times over said one or more data paths and/or one or more networks, one said point to point communication being addressed to each data consuming processes having an active subscription to the subject of said data or by broadcasting said data on a predetermined channel on said one or more data paths and/or one or more networks;

sending said data to all data consuming processes having active subscriptions to the subject of said data by said point-to-point communication protocol if said point-to-point communication protocol is most efficient;

sending said data to all data consuming processes having active subscriptions to the subject of said data by a broadcast communication protocol if said broadcast communication protocol is most efficient;

if said broadcast communication protocol is selected, dividing said data into one or more sequential packets suitable for transmission over a data path, each with a header and adding to said header the channel number assigned to said subject and a sequence number indicating where in the sequence of packets which, taken together, comprise the data message published by said data publishing process, and calculating error correction bits on each packet and adding said error correction bits to each said packet;

storing all said packets in a retransmit memory;

sending messages to each data consuming process having an active subscription to the subject of said data informing each data consuming process of the channel on which said data will be broadcast;

broadcasting on said one or more data paths and/or said one or more networks said data packets via said channel on said one or more data paths and/or one or more networks assigned to the subject of said data;

receiving said packets at each said computer in said computing environment and, at each said computer, comparing the channel number of each said packet to the channel numbers of all active subscriptions listed in said subscription table entered by a data consuming process in execution on said computer;

if the channel number of packets received at a computer in said computing environment matches the channel number of any active subscription listed in said subscription table entered by a data consuming process in execution on said computer, checking the sequence numbers of all packets received to determine if all packets have been received and using said error correction bits to determine if each packet has been correctly received and to correct any errors which can be corrected at the receiving computer using said error correction bits, and if the channel number of packets received at a computer in said computing environment does not match the channel number of any active subscription listed in said subscription table entered by a data consuming process in execution on said computer, discarding all such packets;

sending a message back to the process that transmitted said packets that all packets have been successfully received, or, if any packet was not received or was not correctly received, sending a message to the process that transmitted said packets requesting retransmission of any packets which were not received or which were not correctly received;

retransmitting any packets that were not received or which were not correctly received;

verifying that the newly transmitted packets have been received and have been correctly received; and

reassembling said data packets into a data message and passing the data packets to the data consuming process or processes which requested data on the subject.

22. The process of claim 17 wherein the step of setting up a communications link further comprises the steps of:

sending a subscription request message to a publisher side service discipline process which controls one or more of said computers so as to be coupled to receive data on the subject of said subscription request from a data producing process or processes with which communication links are to be set up on said subject and which control the same said one or more computers having said publisher side service discipline process in execution thereon;

recording all said subscription requests in a subscription table and storing in said table the identities or addresses of all data consuming processes desiring data on each subject which is the subject of an active subscription;

assigning a channel on said one or more data paths and/or one or more networks to each said subject for which there is an active subscription and recording said channel in said subscription table for each said subscription recorded therein;

when data is published by any said data producing process with which a communication link has been established, checking the subject thereof against the subjects of all active subscriptions in said subscription table to determine how many data consuming processes have active subscriptions on the subject;

comparing the number of said data consuming processes to a predetermined threshold, and determining whether it would be more efficient to transmit the data to all data consuming processes having active subscriptions on said subject using a point-to-point communication protocol by sending the same data multiple times over said one or more data paths and/or one or more networks, one said point to point communication being addressed to each data consuming processes having an active subscription to the subject of said data message or by broadcasting said data message on a predetermined channel on said one or more data paths and/or one or more networks and sending a message to all data consuming processes having active subscriptions on said subject to listen for data on the subject of said active subscriptions on said predetermined channel on said one or more data paths and/or one or more networks;

sending said data message to all data consuming processes having active subscriptions to the subject of said data by said point-to-point communication protocol if said point-to-point communication protocol is most efficient;

sending said data message to all data consuming processes having active subscriptions to the subject of said data message by a broadcast communication protocol if said broadcast communication protocol is most efficient;

if said broadcast communication protocol is selected, dividing said data message into one or more sequential packets suitable for transmission over a data path, each with a header and adding to said header the channel number assigned to said subject and a sequence number indicating where in the sequence of packets which, taken together, comprise the data published by said data publishing process, and calculating error correction bits and adding said error correction bits to each said packet;

storing all said packets in a retransmit memory;

broadcasting on said one or more data paths and/or said one or more networks said data packets on said channel on said one or more data paths and/or one or more networks assigned to the subject of said data;

receiving said packets at each said computer in said computing environment and, at each said computer, comparing the channel number to the channel numbers of all active subscriptions listed in said subscription table entered by a data consuming process in execution on said computer;

if the channel number of packets received at a computer in said computing environment of a packet matches the channel number of any active subscription, listed in said subscription table entered by a data consuming process in execution on said computer, checking the sequence numbers of all packets received to determine if all packets have been received and using said error correction bits to determine if each packet has been correctly received and to correct any errors which can be corrected at the receiving computer using said error correction bits, and if the channel number of packets received at a computer in said computing environment does not match the channel number of any active subscription listed in said subscription table entered by a data consuming process in execution on said computer, discarding all such packets;

sending a message back to the data producing process that all packets have been successfully received, or, if any packet was not received or was not correctly received, sending a message to the data producing process that published the data requesting retransmission of any packets which were not received or which were not correctly received;

retransmitting any packets that were not received or which were not correctly received;

verifying that the newly transmitted packets have been received and have been correctly received; and

reassembling the data packets into the original data message and passing the data message to the data consuming process or processes which requested data on the subject.

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 on one or more appropriate communication paths through said network(s) or other data path(s), 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 server computer having an operating system and one or more other process(es), data consuming process(es) or service instance(s) in execution thereon, each of said operating system(s), process(es), data consuming 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 of said operating system(s), process(es) and/or service instance(s) having one or more appropriate communication, access and/or invocation protocol(s);

one or more computers having in execution thereon one or more data location and access programs which control processing by said one or more computers, said data location and access programs being coupled to said one or more data consuming process(es) and said one or more other process(es) and/or service instance(s), for receiving 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 one 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 server computer(s) on which the process(es) publishing the desired data is or were 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 were in execution, the particular process(es) and/or service instance(s) or the programming language(s) of the particular process(es) and/or service instance(s) which is or were publishing said desired data, and the communication, access or invocation protocol(s) which must be invoked to communicate, access or invoke said process(es) or service instance(s) which is or were publishing said desired data or the transport protocol(s) or operating system or systems in execution on any of said host or server computers involved in accessing and transporting said desired data from the process(es) which publish or distribute said desired data to the data consuming process which requested said data, all of said access requirements uniquely defining the attributes of a communication mechanism between said data consuming process(es) desiring said data and said desired data itself, said request for said desired data and said data consuming process which made said request being independent of one or more of said access requirements or attributes including at least the identity and/or location of said one or more particular process(es) and/or service instance(s) that publish or distribute 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 or distribute said requested data as well as the location or address of the one or more computer(s) being controlled by said one or more processes and/or service instance(s) that publish or distribute said requested data, said independence meaning that the data consuming process which requested said desired data need include no program, code or data the purpose of which is to satisfy any of said access requirements, said one or more computers processing of which is controlled by said one or more data location and access programs being controlled thereby so as to automatically satisfy 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, and wherein said one or more process(es) and/or service instance(s) that publish or distribute said requested data also do not include any program, code or data the purpose of which is to satisfy any said access requirement, other than to output the subject itself of the data being published, or the purpose of which is to direct where said data is to be transmitted or to assist in any other way in satisfying any other of said access requirements.

24. The apparatus of claim 23 wherein said one or more data location and access programs include one or more data format decoupling programs couple