|
Claims  |
|
|
What is claimed is:
1. In an apparatus comprising one or more application software processes in
execution on and controlling operations of at least one host computer,
each said host computer electrically coupled by a data path to at least
one server computer having in execution thereon at least one service
process controlling operations of said server computer, an apparatus,
comprising:
communication means in execution on and controlling operations by each said
host computer and each said server computer and including at least one
protocol engine encapsulating a communication protocol for exchanging data
with other processes coupled to said data path, for receiving said link
requests to set up a data communication link over said data path to all
server computers identified in said link request or requests and for
establishing said data communication link with all servers identified in
said link requests;
service means in execution on and controlling operations by each said host
computer and coupled to each application software process in execution on
each said host computer, and in execution on and controlling operations of
each said server computer and coupled to each said service process in
execution thereon, including at least one service discipline encapsulating
a communication protocol for communicating to at least a selected one of
said service processes, for receiving a subscription request directed to
at least one of said service disciplines requesting establishment of a
subscription on a particular subject with one or more of said service
processes, and for mapping said subscription request to all server
computers which have in execution thereon a service process supplying data
on said subject and one or more protocol engines encapsulating appropriate
communication protocols needed to communicate over said network media with
said server computers identified in said mapping by said service means,
and for generating a said link request requesting establishment of a
communication link with all server computers identified in said mapping of
the subject to server, and transmitting said link request to said
communication means, and, after said communication link is established for
passing a message to the selected service process to establish a
subscription on the subject and for sending all data published by any said
selected service process on said subject to the application process or
processes that have outstanding subscriptions on the subject until said
subscription is cancelled; and
information means in execution on and controlling operations by each said
host computer and coupled to each application software process in
execution on each said host computer, and in execution on and controlling
operations of each said server computer and coupled to each said service
process in execution thereon, for receiving a subscribe request from said
application process requesting data on a particular subject and mapping
said subject contained therein to all service processes which supply data
on said subject and one or more of said service disciplines which
encapsulate communication protocols for communicating with all said
service processes identified in said mapping, and for generating and
sending said subscription request to said service means requesting
establishment of a subscription on said subject with all said service
processes identified in said mapping.
2. The apparatus of claim 1 further comprising:
a memory in said server computer coupled to said communication means;
means in said protocol engine of said communication means for sending data
on said subject published by said service process as a sequence of data
packets, each packet having a header, and for adding reliability enhancing
sequence numbers to each packet header prior to transmission, and for
storing each data packet and its header in said memory for later use in
retransmission if necessary;
means in said protocol engine of said communication means for generating
error correction data for each data packet and adding said error
correction data to each data packet and for transmitting each data packet
with its error correction data and header to make up a complete message
via said network media using a broadcast communication protocol;
means in said protocol engine of said communication means of said host
computer for receiving said data packets, the error correction data for
each data packet and the header for each data packet and checking said
reliability sequence numbers in said headers and the error correction data
to verify that all data packets have arrived and to determine if any data
packet was garbled during transmission over said network media, and for
requesting the protocol engine in the communication means of said server
computer to retransmit any missing or garbled packets, or, if all data
packets were successfully received, for acknowledging that all data
packets were received successfully; and
means in said protocol engine of said communication means coupled to said
server computer for retransmitting any missing or garbled packets upon
receiving a request from said protocol engine of the communication means
of said host computer to which said data packets were directed, and for
flushing any data packets no longer needed from said memory.
3. An apparatus for facilitating data exchange between one or more data
consuming and data publishing processes in execution on one or more
computers coupled by any data exchange medium or network having any
architecture, comprising:
a first software layer programmed into said one or more computers and
coupled by all said data publishing and data consuming processes in
execution thereon for implementing architectural decoupling between said
data publishing and data consuming processes such that no data consuming
process need know the particular architecture of the network or data
exchange medium coupling said data publishing and data consuming processes
nor include any software routine to determine the address of any
particular data publishing process which is published data desired by any
said data consuming process which has requested said data, but may simply
request desired data by subject and said subject will then be
automatically mapped to the appropriate one or more data publishing
processes publishing data on that subject and an appropriate one or more
communication protocols necessary to communicate with said data publishing
process or processes;
a second software layer programmed into said one or more computers and
coupled to all said data publishing and data consuming processes in
execution thereon and to said first software layer for implementing
service protocol decoupling between said processes such that no data
consuming or data publishing process need include any software routine to
implement a communication protocol necessary to communicate with any other
data consuming or data publishing process, all said communication
protocols being encoded in service discipline programs forming part of
said second software layer, said second software layer including means for
receiving information from said first software layer regarding the which
said data publishing process or processes with which communications are to
be established and for automatically generating a communications request
requesting the establishment of a communication data path to one or more
of said data publishing processes; and
a third software layer programmed into all said computers and coupled to
all said data publishing and data consuming processes in execution thereon
and to said second software layer for implementing data format decoupling
between said data publishing and data consuming processes such that data
publishing and data consuming processes communicating with each other need
not include software routines to translate between differing data
representation formats and data record organizations used in data objects
being exchanged by said communicating data publishing and data consuming
processes, all necessary translation from the data representation used by
a data publishing process to a data representation used by the data
consuming process which requested data on the subject being carried out by
said third software layer, and;
distributed communication means coupled to each said computer and to said
first, second and third software layers for receiving said communications
request to establish a communication link to a particular one or more of
said data publishing processes and for establishing communications through
said data exchange medium or network with the particular data publishing
process or processes which requested said data and passing any data
received from said data publishing process or processes directly or
indirectly back to the data consuming process which requested said data.
4. The apparatus of claim 3 wherein said distributed communication means
further comprises communication software coupled to said second software
layer for providing reliable communications between said data publishing
and data consuming processes to insure that all data transmitted on a
particular subject is received successfully, and wherein said third
software layer includes semantic operation means for receiving requests
form a data consuming process to retrieve data from a particular named
field of data from a data record published by a data publishing process
and for determining the location of said particular named field within
said data record and retrieving the data from said field and returning it
to the data consuming process which requested data from said named field.
5. An apparatus for coupling data between processes running in a computing
environment, comprising:
one or more data consuming processes programmed into said at least one
computer and having therein at least one software routine for generating a
subscription request for data on a particular subject;
one or more service processes programmed into one or more of said at least
one computer, each having an associated communication protocol and each
for supplying data on a particular subject or group of subjects when in
execution on said at least one computer;
one or more data exchange media such as shared memory, and/or shared
distributed memory, and/or local area networks and/or wide area networks
coupling processes in execution on said at least one computer together;
one or more service discipline programs programmed into said at least one
computer;
one or more subject-based addressing programs programmed into said at least
one computer and coupled at least to said data consuming and service
processes for execution on said at least one computer, for receiving
subscribe requests from said data consuming processes, each subscribe
request requesting data on a particular subject, said subject-based
addressing programs including means programmed into said at least one
computer having data consuming processes in execution thereon for mapping
the subject of each said subscribe request to the network address and/or
identity of one or more of said service processes which supply data on
said subject and to a service discipline program capable of communicating
with said service process with the appropriate communication protocol, and
for generating a link request to establish a communication link per
subscribe request to at least one service process on each said subject
with said communication link being established with at least some of the
service processes identified in the mapping process, said service
discipline programs which are programmed into a computer on which a
service process is in execution including means for recording said
subscribe requests received by said at least one computer on a list of
active subscriptions, and for making available for communication over said
data exchange media all data available from said service process relevant
to said active subscription whenever data on the subject of said active
subscription is published to the service process and for continuing to
supply said data until said subscription is cancelled;
each said service discipline program including means programmed into said
at least one computer upon which a data consuming process is in execution
for receiving said one or more link requests to establish a communication
link on each said subject with a particular service process, and for
accessing the desired data by establishing a communication link to the
service process identified by the subject based addressing program and
sending a subscription request to said service discipline program coupled
to said service process or processes identifying the subject on which data
is requested and including information regarding where to send the
requested data, said communication link and transmission of the
subscription request being accomplished using appropriate access and
communication protocols for traversing the appropriate data exchange media
and for logging onto the service process which will supply the requested
data so as to establish a subscription for data on each said subject with
the appropriate service process or processes, said service discipline
programs for continuing to assist in passing data on each said subject for
which there is an active subscription to the appropriate data consuming
process that originated the subscription request and filtering out all
data published by said service process which is not on a subject for which
there is an active subscription until said subscription request on said
subject is canceled.
6. In a computing environment having a first computer, a second computer,
one or more data consuming processes executing on said first and/or second
computers for requesting and using data on a subject, and one or more
service processes executing on said first or second computers, each
capable of supplying data on particular subjects, and one or more data
exchange media coupling said one or more data consuming processes to said
one or more service processes, an apparatus for facilitating data exchange
between one or more of said data consuming processes and one or more of
said service processes, comprising:
one or more service discipline program means programmed into said first and
second computers and coupled to said one or more data consuming
applications and to said one or more service processes, said service
discipline program means for carrying out communication protocols to
communicate with particular ones of said service processes, each said
service discipline program means for receiving a subscription request to
establish a communications link on a particular subject with a particular
service process, and for establishing said communications link with said
service process and registering a subscription therewith and for
continuously receiving data on the subject from said service process
whenever data on the subject is published and passing said data to said
data consuming process which issued said subscription request until said
subscription request is cancelled; and
a subject based addressing program means programmed into said first and
second computers and coupled to said one or more data consuming
applications for receiving a subscription request on a particular subject
from a data consuming process needing data on that subject and for mapping
the subject to all service processes capable of supplying data on that
subject and one or more service discipline program means capable of
accessing and communicating with the service process or processes so
identified using an appropriate communication protocol, and for selecting
one or more of the service processes so identified and issuing to said
service discipline program means identified during said mapping process
for the selected service process said subscription request to establish a
communications link with the selected service process on the requested
subject.
7. The apparatus of claim 6 wherein said subject-based addressing program
means are also coupled to each service process and include subscription
means programmed into at least said first and second computers which have
service processes in execution thereon which maintain records of all
active subscription subjects and which support subject-based addressing by
filtering data messages to be transmitted over said data exchange media by
subject such that data on subjects for which there are not active
subscriptions is never transmitted on said data exchange media thereby
conserving computing resources, and wherein said service discipline
program means include cancel means programmed into at least said first and
second computers having data consuming processes in execution thereon to
receive cancel requests naming a subject for which a subscription is to be
canceled when data on that particular subject are no longer desired by the
data consuming process which issued the subscription request and to send a
cancel message to the service discipline program coupled to the service
process supplying data, and wherein said service discipline program means
coupled to the service process supplying data on the subject for which a
subscription has been cancelled include subscription list management means
programmed into at least said first and second computers having service
processes in execution thereon to compare the subject of each said cancel
request to the list of active subscriptions and, if a match is found, to
prevent any further transmission of data on that subject to the data
consuming process issued the cancel request.
8. The apparatus of claim 6 wherein said subject-based addressing program
means include a directory services program means programmed into at least
said first and second computers having data consuming processes in
execution thereon, and coupled to said one or more data consuming
applications for maintaining service records which contain information on
each said service process indicating which subject on which each service
process can supply data, and the data exchange media address of each said
service process, and the particular service discipline program means
encapsulating an appropriate communication protocol to access said service
process, said subject based addressing program means including means for
invoking said directory services program means and passing to it the
subject of said subscription request, said directory services program
means including software means programmed into as least said first and
second computers having data consuming processes in execution thereon for
comparing the subject of said subscription request to the subjects listed
in said service records and for returning at least one said service
records for which there is a subject match to said subject based
addressing program which received the subscription request, said subject
based addressing program means including software means programmed into at
least said first and second computers having data consuming processes in
execution thereon for examining said service record or records and
identifying the appropriate one or more service discipline program means
that are capable of communicating with the service processes identified in
said service records and for passing said service records to the selected
service discipline program means with said request to establish said
communication with the service process identified in said service records
to aid said service discipline program means in establishing one or more
subscription communication links on the requested subject.
9. The apparatus of claim 5 wherein said mapping means includes means for
sending each said subscribe request and the subject thereof to a directory
services program programmed into said at least one computer having data
consuming processes in execution thereon which maintains service records
matching subjects to the addresses of service processes which supply data
on said subjects, and wherein said directory services program includes a
routine to compare the subject in each said subscription request to the
subjects in said service records and to pass all service records for which
there is a subject match back to said means for mapping, and for invoking
all the service discipline programs identified by said service records
passed back from said directory services program so as to set up
communication links on the pertinent subject with all the service
processes identified in said service records.
10. The apparatus of claim 9 wherein said service record for each said
service process includes data identifying the address where said service
process can e accessed through said data exchange media and the
appropriate service discipline program used in communicate with said
service process.
11. The apparatus of claim 10 wherein said service records also include
data identifying the computer upon which each service process is in
execution and the address on said data exchange media of said, and wherein
said subject-based addressing programs and said service discipline
programs coupled to data consuming processes include software means for
assigning a channel number for each subject which identifies routing
information regarding how to send data on the assigned subject to the data
consuming process that requested said data, and for including said channel
number in the link request and in any message sent to the service
discipline coupled to the service process selected to supply said data,
and wherein the service discipline program coupled to said service process
selected to supply said data includes said channel number in an entry in
said subscription list assigned to said subject.
12. The apparatus of claim 5 further comprising one or more failure
recovery program means programmed into at least said at least one computer
having a data consuming process in execution thereon for monitoring the
performance of the computer on which is executing the service process
supplying data on a subscription to insure that data on said subject can
still be received from said computer and for switching to another service
processes supplying data on the same subject or switching to an available
alternative paths, if any, through the data exchange media upon failure to
receive the requested data so as to maintain the flow of data on the
subject.
13. The apparatus of claim 5 wherein each service process is coupled to
said one or more data exchange media through a communications daemon which
includes software routines programmed into said at least one computer
coupled to said service processes to filter data output by said service
process in accordance with active subscription subjects such that only
data pertaining to the subject or subjects of one or more active
subscriptions are transmitted over said data exchange media to service
discipline programs managing one or more active subscription communication
links.
14. The apparatus of claim 5 wherein any service discipline program which
has established an active subscription communication link with a service
process which is broadcasting data on more subjects than just the subject
of said active subscription includes a software routine programmed into
said at least one computer having data consuming processes in execution
thereon to filter out data not pertinent to the subject of said active
subscription and pass the remaining data on the subscribing data consuming
process.
15. The apparatus of claim 5 wherein said one or more subject-based
addressing programs and said one or more service discipline programs
together comprise a communication library or programs, and wherein each of
said data consuming process and each said service process is linked to its
one copy of said communication library programs, and further comprising a
communication daemon coupling each of said at least one computer to said
one or more data exchange media, each daemon comprising one or more
protocol engine programs linking said communication library or libraries
to said one or more data exchange media, each said protocol engine
implementing a communication protocol to interface a service discipline
program to said data exchange media, each said protocol engine being
linked to data consuming process with an active subscription and including
means programmed on said at least one computer for exchanging messages
with and otherwise cooperating with another protocol engine linked to a
service process supplying the requested data, said cooperation carried out
for ensuring reliable communication of data on the requested subject over
said data exchange media by attaching sequence numbers and error
correction bits to all segments of a data message on a particular subject
and, checking on the data consuming process side of the communication link
to ensure that all segments of a data message on a subject have been
received using said sequence numbers and ensuring that all data bits of
each segments have been correctly received by using said error correction
bits attached to each segment.
16. The apparatus of claim 15 wherein said communication daemons include
programs and/or software subroutines programmed into said first and/or
second computers to provide support for subject based addressing by
filtering data messages to be transmitted via said data exchange media by
subject.
17. The apparatus of claim 5 wherein at least some of said data exchange
media have transport layer protocols programmed into said at least one
computer and wherein said one or more subject-based addressing programs
and said one or more service discipline programs together comprise a
communication library of programs, and wherein each said data consuming
process and each said service process is linked to its own copy of said
communication library programs, and further comprising one or more
communication daemons programmed into said at least one computer, each
coupling to said data exchange media, and each daemon comprising one or
more protocol engine programs programmed into said at least one computer,
each said protocol engine encapsulating a communication protocol suitable
for communication over at least one of said data exchange media, said
protocol engines for cooperating with each other and with said transport
layer protocols of said data exchange media to ensure reliable
communications of data between data consuming processes and/or said
service processes by detecting and correcting transmission errors and lost
data in transmissions of data for active subscriptions, and further
comprising one or more data exchange means programmed into said at least
one computer and linked to said data consuming process and service
processes, each data exchange means comprised of a library of programs for
execution of said at least one computer for managing data exchange between
data consuming processes and service processes in execution on said at
least one computer which use different data record formats and/or data
representations by automatically performing data format conversion
services such that a data consuming process can request and receive data
on a subject from a service process and receive the request data in a
format and/or data representation which is useable by the requesting
process regardless of the data format used by said service process which
supplied the data thereby freeing the requesting process of the need to
convert said data into a data format used by said data consuming process
such that the formalities of data format conversion necessary for
effective data communication between data consuming and service processes
is transparent to these processes such that neither data consuming nor
service processes communicating with each other need contain software
routines capable of performing said data format conversions.
18. An apparatus for assisting in the communication of data between
computer processes in a computer network having one or more host CPU's or
workstations and/or servers coupled together by a data communication
structure comprising one or more local area networks and/or wide area
networks and/or shared local or distributed memory, each said host CPU,
server and workstation running software processes some of which are
publisher processes which publish data, some of which are subscriber
processes which consume data and some of which may do both, said
publication of data carried out by sending data over said communication
structure comprising:
a library of communication programs, programmed into each CPU and
workstation, a copy of which is linked to every software process in
execution on a CPU or workstation, for receiving subscription requests
from data consuming processes requesting data on particular subjects, and
for mapping each of said subjects to an appropriate communication program
programmed into a CPU or workstation, which is capable of establishing
communications with a publisher process which supplied data on the
requested subjects, and for invoking said appropriate communication
program for each said subject so as to establish and maintain a
communication link with at least one of said publisher processes in
execution on a CPU or workstation and supplying data on said subject, said
communication program encapsulating all of the software communication
protocols needed to access said publisher process and to provide a
programmatic interface by which subscription requests to said
communication library are entered by said subscriber processes in
execution on a CPU or workstation; and
one or more libraries of data format decoupling programs programmed into
each CPU or workstation, a copy of which is linked to each said
communication library and to each said software process for performing
data format translation services for publisher and subscriber processes
between which data exchange takes place such that any subscriber process
may receive data in a format useable by said subscriber process even
though the publisher process form which the data originated may use a
different data record format or data representation, and for providing
semantic data retrieval services whereby subscriber processes may extract
desired data from specific fields of specific data records from a
publisher process despite the fact that the specified data record from
which data is to be retrieved may have a different data record
organization without the need for any software routines in the subscriber
process or the publisher process to process or translate differences in
the organization of data records or differences in the field names in said
data records.
19. The apparatus of claim 18 wherein each said library of programs for
data format decoupling includes one or more forms-manager program means
programmed into a CPU or workstation for manipulating instances of
self-describing data records organized as classes and stored in and
manipulated by said CPU's and workstations each of which contains both
actual data and format data, said format data being defined in one or more
form class definitions stored as a data structure in a CPU or workstation,
said form class definition defining the names and formats or data
representation type of each field of data records in a class of data
records corresponding to said form class definition and defining the
organization of said fields within each instance of a data record of that
class, and further includes one or more forms-class manager program means
programmed into a CPU or workstation and coupled to said forms-manager
program means for manipulation of said form class definitions and
including a means programmed into a CPU or workstation for receiving a
get-field call from a subscriber or data publishing process or from a
program in said library of communication programs, said get-field call
including the address of a particular data record and the name of a field
therein, and for retrieving the form class definition of the class of the
data record identified in said get-field call and searching said form
class definition for a field having the same name or a synonym of the name
of the field name given in said get-field call, and for returning a
relative offset pointer to the calling program, and including means
programmed in a CPU or workstation for receiving a get-data call from a
subscriber or data publishing process or from a program in said library of
communication programs, said get-data call including the relative address
pointer for the location of the desired data field in the desired data
record identified by said get-field call, and for extracting the data in
the field of the desired data record as identified by said relative
address pointer and returning said data to the calling program, and
including one or more format conversion program means programmed into a
CPU or workstation for converting data records to be sent to a subscribing
process form the data record format of the transmitting process to a data
record format necessary for transmission over said communication
structure, and, upon arrival at the receiving host CPU or workstation or
server, for converting the data record format from the data record format
used for transmission over said communication structure to the data record
format by the receiving process.
20. A process for communicating data between software processes operating
in one or more computers coupled by a data communication path, comprising:
receiving a request for information on a particular subject from a
requesting software process and automatically mapping that subject to the
identity and location of a software process which supplies data on the
subject and the identity of a service discipline program which is capable
of communicating with said software process so identified that supplied
data on that subject; and
invoking said service discipline program identified by said subject mapper
program and establishing a communication link to said software process
which was identified in said automatic mapping step over said data
communication path software process to publish; and
using said service discipline program to communicate with said software
process to cause said software process to start sending data to the
software process that requested said data; and
using said service discipline program to filter data published by said
software process identified in said automatic mapping step by subject such
that only data on the requested subject reaches said requesting software
process.
21. The apparatus of claim 5 wherein said subject-based addressing programs
are also coupled to each service process and include software routines
programmed into at least said first and second computers which have
service processes in execution thereon which maintains records of all
active subscription subjects and which support subject-based addressing by
filtering data messages to be transmitted over said data exchange media by
subject such that data on subjects for which there are no active
subscriptions is never transmitted on said data exchange media thereby
conserving computing resources, and wherein said data consuming processes
include software routines programmed into at least said first and second
computers having data consuming processes in execution thereon to generate
cancel requests naming a subject for which a subscription is to be
cancelled when data on that particular subject are no longer desired by
the data consuming process which issued the subscription request and to
send a cancel message to the service discipline program coupled to the
service process supplying data, and wherein said service discipline
programs include software routines programmed into at least said first and
second computers having service processes in execution thereon to compare
the subject of each said cancel request to the list of active
subscriptions and, if a match is found, to prevent any further
transmission of data on that subject to the data consuming process issued
the cancel request.
22. The apparatus of claim 5 wherein said subject-based addressing programs
include a directory services program programmed into at least said first
and second computers having data consuming processes in execution thereon,
and coupled to said one or more data consuming applications which
maintains service records which contain information on each said service
process indicating which subject on which each service process can supply
data, and the address of each said service process, and the particular
service discipline program encapsulating an appropriate communication
protocol to access said service process, said means for mapping including
means for invoking said directory services program and passing to it the
subject of said subscription request, said directory services program
including software means programmed into at least said first and second
computers having data consuming processes in execution thereon for
comparing the subject of said subscription request to the subjects listed
in said service records and for returning all said service records for
which there is a subject match to said subject based addressing program
which received the subscription request, said subject based addressing
program including software means programmed into at least said first and
second computers having data consuming processes in execution thereon for
examining said service record or records and identifying the appropriate
one or more service discipline programs that | | |