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 Patent5187787   
Link to this pagehttp://www.wikipatents.com/5187787.html
Inventor(s)Skeen; Marion D. (San Francisco, 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 libray manages self-describing forms which contain actual data to be exchanged as well as type information regarding data format and class definition that contain semantic information. Another library manages communications and includes a subject mapper to receive subscription requests regarding a particular subject and map them to particular communication disciplines and to particular services supplying this information. A number of communication disciplines also cooperate with the subject mapper or directly with client applications to manage communications with various other applications using the communication protocols used by those other applications.



 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. (San Francisco, CA); Bowles; Mark (Woodside, CA)
Owner/Assignee     Teknekron Software Systems, Inc. (Palo Alto, CA)
Patent assignment
All assignments
Publication Date     February 16, 1993
Application Number     07/386,584
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     July 27, 1989
US Classification     719/314
Int'l Classification     G06F 015/16
Examiner     Heckler; Thomas M.
Assistant Examiner    
Attorney/Law Firm     Fish; Ronald Craig
Address
Parent Case    
Priority Data    
USPTO Field of Search     364/DIG. 1 364/DIG. 2 395/600
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]
4851988
Trottier
709/226
Jul,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]
4363093
Davis
709/227
Dec,1982

[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. An apparatus for facilitating data exchange between one or more data consuming and data publishing processes running on one or more computers coupled by any data exchange medium, comprising:

a first software layer for execution on said one or more computers and coupled to all said processes for implementing data distribution decoupling between said processes such that no data consuming process need include any software routine to determine the address of any particular process which is publishing data desired by said data consuming process, but may simply request desired data by subject and said subject will then be automatically mapped to the appropriate one or more data publishing processes publishing data on that subject and the appropriate one or more communication protocols necessary to communicate with said data publishing processes;

a second software layer for execution on said one or more computers and coupled to all said processes and to said first software layer for implementing service protocol decoupling between said processes such that no data consuming or data publishing process need include any software routine to implement a communication protocol necessary to communicate with any other data consuming or data publishing process, all said communication protocols being encoded in service discipline programs forming part of said second software layer, said second software layer including means for receiving information from said first software layer regarding the subject upon which data is requested, and including one or more software routines for establishing communication through said data exchange medium such that only data on said requested subject is received by said data consuming process which requested data on said subject; and

a third software layer coupled to all said processes and to said second software layer for implementing data format decoupling between said processes such that processes communicating with each other need not include software routines to translate between differing data representation formats and data record organizations used in data objects being exchanged by said communicating processes, all necessary translation from the data representation used by a data publishing process to a data representation used by the data consuming process which requested data on the subject being carried out by said third software layer.

2. The apparatus of claim 1 further comprising communication layer software coupled to said second software layer for providing reliable communications between said processes such that no data consuming or data producing process need include any software routine to perform reliable communications between processes, and wherein said third software layer includes means for receiving requests 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 field within said data record and retrieving the data from said field and returning it to the process which requested it.

3. An apparatus for coupling data between processes running in a computing environment having

a first central processing unit;

a second central processing unit;

one or more application processes which are data consumers running on said first and/or second central processing units and having at least one software routine to generate a subscription request for data on a particular subject;

one or more service processes running on one or more of said first and/or second central processing units, each having an access protocol and each supplying data on a particular subject or group of subjects;

one or more data exchange media such as shared memory, and/or shared distributed memory, and/or local area networks and/or wide area networks coupling said first and second central processing units together, each data exchange media having a communication protocol, said apparatus for coupling data comprising:

one or more subject-based addressing programs coupled at least to said application processes for execution on said first and/or second central processing units for receiving subscription requests from said application processes, each subscription request requesting data on a particular subject and including means for mapping the subject of each said subscription request to the network address and/or identity of one or more of said service processes which supply data on said subject, and for generating a request that at least one communication link per subscription request to the appropriate service process be established on each said subject with one or more of said service processes which provides data on said subject;

one or more service discipline programs for execution on said first and/or second central processing units which receive said one or more requests to establish a communication link on each said subject, for sending a request to one or more of said service process or processes using the access protocols for traversing the appropriate data exchange media to establish a communication link and for communicating with the selected service process or processes so as to establish a subscription for data on each said subject with the appropriate service process or processes, said service discipline programs for continuing to assist in passing data on each said subject to the appropriate application process that originated the subscription request until said subscription request on said subject cancelled.

4. The apparatus of claim 3 wherein said subject-based addressing programs are also coupled to each service process and include software routines 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 no active subscriptions is never transmitted on said media thereby conserving computing resources, and wherein said application processes include software routines 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 wherein said subject-based addressing programs include routines to compare the subject of each said cancel request to the list of active subscriptions and, if a match is found, to send a cancel request to the appropriate one or more service discipline programs managing communication links on that particular subject, and wherein said service discipline programs include routines to send one or more cancel requests to all service processes which are currently supplying data on a particular subject for which the subscription was cancelled.

5. The apparatus of claim 4 wherein said mapping means includes means for sending each said subscription request and the subject thereof to a directory services program 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 wherein said means for mapping includes a routine to invoke 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.

6. The apparatus of claim 5 wherein said service record for each said service process includes data identifying the address where said service process can be accessed through said data exchange media and the appropriate service discipline program used to communicate with said service process.

7. The apparatus of claim 6 wherein said service records also include data identifying the central processing unit upon which each service process is in execution and the address on said data exchange media of said central processing unit.

8. The apparatus of claim 3 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 to filter out data not pertinent to the subject of said active subscription and pass the remaining data to the subscribing application process.

9. The apparatus of claim 8 wherein said communication daemons include programs and/or software subroutines to provide low-level system support by filtering data messages to be transmitted via said data exchange media by subject.

10. The apparatus of claim 3 wherein said subject-based addressing programs include a directory services program which maintains service records which contain information on each said service process indicating which subjects 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 means 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 means for examining said service record or records and identifying the appropriate one or more service discipline programs 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 or programs with said request to establish said communication link to aid said service discipline program or programs in establishing one or more subscription communication links on the requested subject.

11. The apparatus of claim 3 further comprising one or more failure recovery programs for switching between service processes supplying data on the same subject, or switching between available alternative paths if any through the networks or one or more data exchange media coupling an application process which requested data on a subject to a service process supplying data on that subject upon failure to receive the requested data so as to maintain the flow of data on the subject if possible.

12. The apparatus of claim 3 wherein each service process is coupled to said one or more data exchange media through a communications daemon which includes routines to filter data output by said service process in accordance with active subscriptions 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.

13. The apparatus of claim 3 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 application process and each said service process is linked to its own copy of said communication library programs, and further comprising a communication daemon coupling each said central processing unit 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 linked to an application process with an active subscription for cooperating with another protocol engine linked to a service process supplying the requested data to ensure reliable communication of data on the requested subject over said data exchange media.

14. The apparatus of claim 3 wherein at least some of said data exchange media have transport layer protocols 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 application 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, each coupling one of said central processing units to said data exchange media, and each daemon comprising one or more protocol engine programs, 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 application processes and/or said service processes, and further comprising one or more data exchange components linked to said application and service processes, each data exchange component comprised of a library of programs for execution on said first and/or second central processing units for managing data exchange between application processes and service processes in execution on either of said central processing units which use different data record formats and/or data representations by automatically performing data format conversion services such that an application process can request and receive data on a subject from a service process in a format and/or data representation which is useable by the requesting process and for freeing the requesting process of the need to convert said data request into a data format used by said server process such that the formalities of data format conversion necessary for effective data communication between application and service processes is transparent to these processes in that neither application or service processes communicating with each other need contain software routines capable of performing said data format conversions.

15. In a computing environment having a first computer, a second computer, one or more data consuming application processes executing on said first and/or second computers for requesting and using data on a subject specified in a subscription request, and one or more service processes executing on said first or second computers, each capable of supplying data on particular subjects, and one or more data exchange media coupling said data consuming process to said service process, an apparatus for facilitating data exchange between said data consuming process and said service process, comprising:

one or more service discipline programs which encode communication protocols to communicate with particular ones of said service processes, each for receiving a request to establish communications on a particular subject and for establishing communications with a service process so as to receive data from said service process and pass only data on the requested subject to said data consuming process which issued said subscription request;

a subject based addressing program for receiving a subscription request on a particular subject and for mapping the subject to a particular service discipline and for issuing a request to establish communications on the requested subject to said service discipline.

16. An apparatus for assisting in the communication of data between computer processes in a computer network having one or more host CPU's or workstations and/or servers coupled together by a data communication structure comprising one or more local area networks and/or wide area networks and/or shared local or distributed memory, each said host CPU, server and workstation running software processes some of which are publisher processes which publish data, some of which are subscriber processes which consume data and some of which may do both, said publication of data carried out by sending data over said communication structure, comprising:

a library of communication programs a copy of which is linked to every software process, for receiving subscription requests from data consuming processes requesting data on particular subjects, and for mapping each of said subjects to an appropriate communication program which is capable of establishing communications with a publisher process which supplies data on the requested subjects, and for invoking said appropriate communication program for each said subject in said communication library to establish and maintain a communication link with at least one of said publisher processes supplying data on said subject, said communication program encapsulating all of the software communication protocols needed to access said publisher process and to provide a programmatic interface by which subscription requests to said communication library are entered by said subscriber processes; and

one or more libraries of data format decoupling programs a copy of which is linked to each said communication library and to each said software process for performing data format translation services for publisher and subscriber processes between which data exchange takes place such that any subscriber process may receive data in a format useable by said subscriber process even though the publisher process from which the data originated may use a different data record format or data representation, and for providing semantic data retrieval services whereby subscriber processes may extract desired data from specific fields of specific data records from a publisher process despite the fact that the specified data record from which data is to be retrieved may have a different data record organizations without the need for any software routines in the subscriber process or the publisher process to process or translate differences in the organization of data records or differences in the field names in said data records.

17. The apparatus of claim 16 wherein each said library of programs for data format decoupling includes one or more forms-manager programs for manipulating instances of self-describing data records each of which contains both actual data and format data, said format data being defined in one or more form class definitions, said form class definition defining the names and formats or data representation type of each field of data records in the 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 programs coupled to said forms-manager program or programs for manipulation of said form class definitions including a program 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 of interest 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 a program for receiving a get-data call from a subscriber or data publishing process or from a program in said library of communication programs 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 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 programs for converting data records to be sent to a subscribing process from 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 used by the receiving process.

18. An apparatus for facilitating communication of data between two or more software processes in execution on the same or different computers coupled by a data exchange medium where no process needs to know the port address of any other process, comprising:

one or more computers;

a network comprised of at least one data transfer path, said network coupling said one or more computers by one or more data transfer paths;

at least one application process in execution on at least one of said computers and capable of requesting data by subject;

at least one data publishing process which may or may not be the same as said application process, said data publishing process in execution on at least one said computer and capable of outputting data on at least one subject;

a subject based addressing program including means for obtaining data on different subjects, said subject based addressing program including computer programs linked at least to each of said at least one application and data publishing processes and to said network for receiving and processing subscription requests from said at least one application process on at least one subject and for mapping said subject to an appropriate means for obtaining data on the requested subject, and for entering a subscription for data on the requested subject with said appropriate means for obtaining data on said subject, and for receiving data on the requested subject and passing the data to the appropriate said one or more application processes which requested the data.

19. The apparatus of claim 18 wherein said subject based addressing program further comprises means for issuing a command to establish a subscription communication session on said subject with one or more of said data publishing processes capable of supplying data on the requested subject, and wherein said means for obtaining data on different subjects includes a service discipline program for encapsulating a protocol for obtaining data on the subject, and for receiving said command to establish a subscription communication session on said subject, and for establishing a subscription communication session with one or more of said data publishing processes, and entering a subscription request to said one or more data publishing processes to supply data on said subject, and for receiving data on said subject and passing said data to said one or more application processes which requested data on said subject.

20. The apparatus of claim 19 wherein said one or more computers comprises at least two server computers, and wherein said at least one data publishing process comprises at least two service instances in execution on at least two of said server computers, and wherein at least two of said service instances and/or server computers require different communication protocols to communicate therewith, and wherein said service discipline program encapsulates at least two different service discipline protocols for communicating with said at least two different service instances, and wherein said subject based addressing program includes means for mapping said subject to one or more of said service discipline protocols, and further includes means for issuing a subscription request so as to cause the appropriate service discipline protocol to execute and set up a communication session so as to obtain data on said subject, each said service discipline protocol including means for passing data received on said subject to the one or more application processes which requested data on said subject.

21. The apparatus of claim 20 wherein at least some of said service discipline protocols have different fault tolerance characteristics.

22. The apparatus of claim 21 wherein said network comprises at least two networks each of which is coupled to at least some of said application and data producing processes and wherein said service discipline protocols have different fault tolerance characteristics which comprise at least automatic switchover to a different service instance capable of supplying data on the same subject upon failure of a service instance from which data is being received via a subscription, and automatic switchover to an alternate network coupled to a data producing process capable of supplying data on the same subject upon failure of the data path in use.

23. The apparatus of claim 22 wherein said different fault tolerance characteristics comprise at least automatic switchover to a different server computer having in execution thereon a service instance capable of supplying data on the requested subject upon failure of either the server computer or the service instance from which data is being received.

24. The apparatus of claim 19 wherein said one or more computers includes at least two server computers each of which has running thereon a data publishing process or service instance, at least two of said server computers and the service instances in execution thereon requiring different communication protocols to communicate therewith, and wherein said service discipline program includes means for encapsulating at least two different service discipline protocols, each for communicating with at least one of said different data publishing processes or service instances in execution on said server computers, and wherein said subject based addressing program includes means for mapping said subject to the appropriate said service discipline protocol, and for invoking said service discipline protocol so as to establish a communication session on the requested subject and, for passing data received on said subject to the appropriate one or more application processes which requested data on said subject, and further comprising at least two said networks, and means coupled to said at least two networks and to said at least one application process and said at least one data publishing process or service instance for providing network failure fault tolerance by automatically switching to an alternate network upon failure of the data transfer path being used to transfer data on said subject.

25. The apparatus of claim 24 wherein said service discipline program includes means for monitoring the continued viability of at least one said service instance as a source of data on the requested subject with which a communication session has been established, and, upon failure of the service instance to supply data on the requested subject, for automatically selecting another server computer upon which another service instance is in execution which is capable of supplying data on the requested subject, and for establishing a communication session therewith by invoking an appropriate service discipline protocol and establishing a subscription with said service instance to supply data on the requested subject, and for passing the resulting data on the requested subject to the one or more application processes which requested said data.

26. The apparatus of claim 20 or 24 wherein said service discipline program includes means for monitoring the continued viability of one or more of said server computers as a source of data on the requested subject, and, upon failure of the monitored server computer supplying data on the requested subject, for automatically selecting another server computer upon which a service instance is in execution which is capable of supplying data on said subject, and for establishing a communication session therewith on said subject by invoking an appropriate service discipline protocol, and for passing the resulting data on the requested subject to the one or more application processes which requested said data.

27. The apparatus of claim 19 wherein said one or more computers comprises at least two server computers, and wherein said at least one data publishing process comprises at least two service instances in execution on at least two of said server computers and wherein at least two of said service instances and/or server computers require different communication protocols to communicate therewith, and wherein said service discipline program includes means for encapsulating at least two different service discipline protocols for communicating with said at least two different service instances which require different protocol to communicate therewith, and wherein said subject based addressing program includes means to invoke the appropriate service discipline protocol to obtain data on a particular subject, each said service discipline program including means for passing data received on said subject to the one or more application processes which requested data on the subject, and further comprising communication means coupled at least to said service discipline program and comprising at least one protocol engine for encapsulating a network communication protocol for establishing communications over said network by interfacing said service discipline protocol to said network using the communication protocol native to said network.

28. The apparatus of claim 27 wherein said communication means comprises a plurality of protocol engines, each of which may encapsulate a different network communication protocol, each of said protocol engines being able to interface one or more of said service discipline protocols to said network using the network communication protocol encapsulated in said protocol engine.

29. The apparatus of claim 28 wherein at least some of said service discipline protocols have different fault tolerance characteristics such as automatic switchover to a different server computer supplying data on the same subject upon failure of a server computer from which data is being received via a subscription or automatic switchover to an alternate network to reach the same server computer or another server computer supplying data on the same subject upon failure of the data path currently being used to obtain data on said subject.

30. The apparatus of claim 28 wherein at least some of said protocol engines have different fault tolerance characteristics such as reliable broadcast communication protocols for verifying that all message packets of a broadcast have been successfully received and requiring rebroadcast of any lost or garbled message packets, or automatic switchover to an alternate network upon failure of the data path currently being used.

31. The apparatus of claim 19 wherein said service discipline program is coupled to a data publishing process supplying data on said subject, and supports subject based addressing by filtering data by subject so as to conserve network bandwidth.

32. The apparatus of claim 18 further comprising a data format decoupling program comprised of one or more computer programs coupled to each of said one or more application processes and to each of said one or more data publishing processes, for facilitating the transfer of data via said network between said data publishing process and said application process using self-describing data objects or forms by performing format conversion operations where the formats for the expression and organization of data records used by each computer data publishing process or application process may be different, and where said self-describing data objects each contain one or more fields and are organized into one or more classes each of which has a unique class identification, said data format decoupling program including one or more computer programs to define the general organization of each class of self-describing data objects in terms of the semantic information or names of each field and the format information defining the class identification or code used to express the data contained in each field in a class definition, and wherein the actual data to be transferred and said format information is stored in each instance of a self-describing data object, and wherein said data format decoupling means includes at least one forms manager program means for converting the data format of data on a subject requested by an application process from the data format in which said data is published by said data publishing process to a format suitable for transfer via said network and, upon receipt from said network, for converting said data from the format used for transfer over said network to a format used by said application process, and for performing one or more of said format conversion operations using format information stored in the instance of the form itself or in said class definition.

33. The apparatus of claim 32 further comprising a data format decoupling library comprised of one or more computer programs linked at least to each said one or more application processes and said one or more data publishing processes, including at least one class manager means for performing semantic-dependent operations to facilitate the exchange of self-describing data objects called forms between said at least one application process which uses data in a first format and said at least one data publishing process which may publish data in a second format different from said first format, said forms each being comprised of one or more fields each of which contains another form which may be either a primitive class form in that said field contains data or a constructed class form, said constructed class form containing one or more fields each of which may be a primitive class form or another constructed class form, such that form classes may be nested to any number of nesting levels, said class manager means also for facilitating the exchange of data by receiving a request to get the data from a particular field of a particular instance of a form and for searching a class definition for a field having a name matching the field named in said request, said searching including searching of all class definitions for any fields of said class definition containing constructed class forms and including searching through all levels of nesting of said class definitions, and for returning to the requesting process a relative address pointer identifying the location of the requested field within instances of the form of the class of forms containing the requested field, and further for receiving a request for the particular data contained in said field named in the original request and for using said relative address pointer and the address of the particular instance of the form to read the requested data and return said data to said requesting process.

34. The apparatus of claim 18 further comprising a data format decoupling library comprised of one or more computer programs linked at least to each said one or more application processes and to said one or more data publishing processes, including at least one class manager means for performing semantic-dependent operations to facilitate the exchange of self-describing data objects called forms between said at least one application process which uses data in a first format and said at least one data publishing process which outputs data in a second format which may be different from said first format, said forms each being comprised of one or more fields each of which contains another form which may be either a primitive class form in that said field contains data or a constructed class form, said constructed class form containing one or more fields each which may be a primitive class form or another constructed class form, such that form classes may be nested to any number of nesting levels, said class manager means further for facilitating the exchange of data by receiving a request to get data from a particular named field of a particular instance of a form, and for searching a class definition for a field having a name matching the field named in said request, said searching including searching of all class definitions for any fields in the class definition containing constructed class forms, and including searching through all levels of nesting of said class definitions, and for returning a relative address pointer to the requesting process identifying the location of the requested field within instances of the form of the class of forms containing the requested field, and further for receiving a request for the particular data contained in said field named in the original request and using said relative address pointer and the address of a particular instance of said form to read the requested data and return said data to said requesting process.

35. The apparatus of claim 18 or 32 or 34 further comprising at least two said networks coupling at least some of said one or more computers, and wherein said one or more computers includes at least two server computers upon which at least two data publishing processes or service instances are in execution publishing data on said subject upon which data has been requested and further comprising means coupled to said at least one application process and to said at least two service instances and to said at least two networks for providing network failure and service instance failure fault tolerance by automatically switching to an alternate network upon failure of the data transfer path being used to transfer data to said application process on said subject and by automatically switching to another service instance supplying data on the requested subject in case of service instance failure so as to provide a substantially continuous flow of data on the requested subject to said at least one application process which is requesting data on said subject.

36. The apparatus of claim 35 further comprising means coupled to said server com