EP0412232A2

Apparatus and method for providing high performance communication between software processes.

Abstract

A communication interface for decoupling one software application from another software application such communications between applications are facilitated and applications may be developed in modularized fashion. The communication interface is comprised of two libraries of programs. One library manages self-describing forms which contain actual data to be exchanged as well as type information regarding data format and class definition that contain semantic information. Another library man­ages 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.

EP0412232A2, drawing sheet 1
Sheet 1 of 28

Term

Term ended

Projected expiry passed 19 January 2010, 16.7 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

15 claims: 8 independent, 7 dependent

  1. 1
    A communication interface for decoupling a first computer program or application's natural data record or form format from the foreign data record or form format of a second computer program or application with which data records are to be exchanged, comprising:first means coupled to said first computer program or application for creating and manipulating self-­describing data records or forms which contain both data and class identification data corresponding to one or more class definitions that define the names and organization of fields within said form as well as the format for data representation within said fields;second means coupled to said first means for converting the format of a form in a format native to said first application to be transmitted to said second ap­plication to the format of said second application.
  2. 2
    A communication interface for decoupling a transmitting application's natural data record or form format from the foreign data record or form format of a receiving application, for facilitating the transfer of forms from said transmitting application to said receiving application via a network, comprising:first means coupled to said transmitting ap­plication for creating, storing, recalling, manipulating and destroying self-describing data objects called forms which contain both data and class identification data cor­responding to one or more class definitions that define the names and organization of fields within said form as well as the format for data representation within said fields, said form being created in the natural form format of said transmitting application;second means coupled to said receiving applica­tion for creating, storing, recalling, manipulating and destroyimg self-describing data objects called forms which contain both data and class identification data cor­responding to one or more class definitions that define the names and organization of fields within said form as well as the format for data representation within said fields, said form being created in the natural form format of said application which is a foreign form format relative to the natural format used by said transmitting application;third means coupled to said network and to said first means for converting the format of a form in a format native to the transmitting application to be transmitted to a foreign application to the format of said network and for transmitting said form over said network;fourth means coupled to said second means and to said network for receiving said transmitted form to the format native to said receiving application and for sup­plying said form to said receiving application.
  3. 4
    A communication interface for decoupling one application's data format from the data format of another application with which data is to be exchanged, compris­ing:means coupled to each said application for creating and managing forms containing data pertinent to the corresponding application in the format native to each said application, each said form containing one or more class identifiers corresponding to one or more class definitions the give the name, data type and organization of the fields of each form instance of the class to which said form belongs and wherein each said field may contain data or another subform of another class, each said subform storing one or more class identifiers and the field names, data type and organization of the fields of said subform, and wherein each said field of said subform may contain data or another sub-subform and so on for a selectable number of levels of nesting;and means for converting the format of a form to be transmitted to another application to all formats neces­sary to accomplish the transmission including a final conversion to the format rendering the form suitable for use by the receiving application.
  4. 5
    A communication interface for decoupling a transmitting application's natural form format from the foreign form format of a receiving application, for facilitating the transfer of data records called forms from said transmitting application to said receiving ap­plication via a network, comprising:first means coupled to said transmitting ap­plication for creating, storing, recalling, manipulating and destroying self-describing data objects called forms which contain both data and class identification data cor­responding to one or more class definitions that define the names and organization of fields within said form as well as the format for data representation within said fields, said form being created in the natural form format of said transmitting application;second means coupled to said receiving applica­tion for creating, storing, recalling, manipulating and destroying self-describing data objects called forms which contain both data and class identification data cor­ responding to one or more class definitions that define the names and organization of fields within said form as well as the format for data representation within said fields, said form being created in the natural form format of said application which is a foreign form format relative to the natural format used by said transmitting application;third means coupled to said first means for storing said class definitions for form classes of forms created and used by said first means and the locations of files in which class definitions for form classes of forms created and used by said second means can be found;fourth means coupled to said second means for storing said class definitions for form classes of forms created and used by said second means and the locations of files in which class definitions for form classes of forms created and used by said first means can be found;fifth means in said third means for receiving a request to locate a particular field name in a form and for accessing one or more class definitions identified by class identifiers stored in said form and searching said class definitions for a field name which matches the name of the field in the original request and returning a pointer address which can be used to find the value stored in the named field and for receiving a request to obtain the data stored in the field named in the original request and accessing said form and obtaining the data in said field using said pointer address;sixth means in said fourth means for receiving a request to locate a particular field name in a form and for accessing one or more class definitions identified by class identifiers stored in said form and searching said class definitions for a field name which matches the name of the field in the original request and returning a pointer address which can be used to find the value stored in the named field and for receiving a request to obtain the data stored in the field named in the original request and accessing said form and obtaining the data in said field using said pointer address.
  5. 6
    A communication interface for decoupling a first application's natural form format from the foreign form format of a second application, comprising:first means coupled to said first application for creating and manipulating self-describing data objects called forms which contain both data and class identifica­tion data corresponding to one or more class definitions that define the names and organization of fields within said form as well as the format for data representation within said fields;and second means coupled to said first means for receiving requests by said first application to access the data in any selected field of a foreign form used by said second application and accessing the class definition defining the field names and organization of said form used by said second application and locating the named field which matches the field name given in said request and returning a pointer address to said field and access­ing said form and using said pointer address to obtain and return to said first application the data stored in the field named in the original request.
  6. 8
    An apparatus for implementing the exchange of information between software modules which may or may not have the same format in terms of data representation and organization of the data for data records called forms where an instance of a form is actual data in the data representation and organization defined by the form and where the software modules may or may not reside in the same computer and may or may not reside in the same software process and where the software modules may or may not use data records having the same semantic information for various fields of data where semantic information defines the names of the various fields of data, compris­ing:first means linked to one or more of said software modules and comprising a computer and a library of software programs executed by said computer for creat­ing, storing, retrieving and reading class descriptors, said class descriptors being data records which contain data defining both semantic information regarding the names of each field of data in an instance of the form class to which the class descriptor applies and format information regarding the data representation and organization of the fields of data in instances of forms of the class to which said class descriptor corresponds;second means linked to one or more of said modules and comprising a computer and a library of software programs executed by said computer for creating, storing, retrieving and reading instances of one or more class of forms, each said instance containing both format data regarding the data representation and organization of the data in said form as well as the actual data compris­ing the instance of said form;third means linked to one or more of said modules and comprising a computer and a library of software programs for providing an interface between said software modules and said first and second means such that said software modules can usefully exchange instances of forms by calling appropriate software programs in said first and second means to cause said first and second means to combine to translate, manipulate and interpret information from one of said modules and send said information to another said software module as an instance of a form in such a manner that said exchanged information has meaning to and can be used by said other module despite format and semantic differences between said software modules.
  7. 10
    An apparatus for providing a communication facility between first and second computer programs each of which use data records having different structures and data representation formats, comprising:means for creating nested data records for each of said first and second computer programs having the structures and data representation formats native to each of said first and second programs, said data records being nested in the sense that any one data record may have one or more fields that contain other data records and so on for any number of levels of nesting, each data record be­ ing assigned to a class having associated therewith a class identifier and each instance of a data record including the class identifiers of all the classes for all data records which, taken together, comprise the data record;means for facilitating transfers of data records between said first and second computer programs by automatically translating the format of data records from the format of the sending computer program to the format of the receiving computer program without the need for processing by either said first or second computer program.
  8. 15
    An apparatus for decoupling a first software application from the need to know the address, service name, or prococol of a service software applica­tion with which data is to be exchanged, comprising:directory-services means for electronically storing data mapping particular subjects to the addresses of services which supply data regarding particular subjects and to the name of an associated service discipline for each said service which defines a com­munication protocol for exchanging data with said service;one or more service discipline means for establishing subscription communication links with the associated services by which said service sends only data regarding a particular subject to said associated service discipline means, and for passing data regarding said subject received from said service to said first software application;subject mapper means coupled to said first software application and to said directory-services means for receiving a subscription request from said first software application requesting data regarding a particular subject and for electronically searching said directory-services means to find the address of a service running on a server computer which supplies data regarding said subject and the name of said associated service discipline which defines how data exchanges with said service are to be carried out and for passing the subject data in said subscription request to the service discipline means identified by access to said service directory means and causing said service discipline means to establish a said subscription communication link with the associated service.