|
Claims  |
|
|
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 | | |