WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Ally mechanism for interconnecting non-distributed computing environment (DCE) and DCE systems to operate in a network system    
United States Patent5497463   
Link to this pagehttp://www.wikipatents.com/5497463.html
Inventor(s)Stein; Scott A. (Phoenix, AZ); Carlson; Bruce M. (Phoenix, AZ); Yen; Chung S. (Bedford, MA); Farrington; Kevin M. (Williamsville, NY)
AbstractA distributed system includes a non-distributed computing environment (DCE) computer system and at least one DCE computer system which are loosely coupled together through a communications network operating with a standard communications protocol. The non-DCE and DCE computer systems operate under the control of proprietary and UNIX based operating systems respectively. The non-DCE computer system further includes application client software for providing access to distributed DCE service components via a remote procedure call (RPC) mechanism obtained through application server software included on the DCE computer system. A minimum number of software components modules which comprise client RPC runtime component and an import API component included in the non-DCE computer system and an Ally component on the DCE computer systems to operate in conjunction with the client and server software to provide access to DCE services by non-DCE user applications through the RPC mechanisms of both systems eliminating the need to port the DCE software service components onto the non-DCE computer system.
   














 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     Stein; Scott A. (Phoenix, AZ); Carlson; Bruce M. (Phoenix, AZ); Yen; Chung S. (Bedford, MA); Farrington; Kevin M. (Williamsville, NY)
Owner/Assignee     Bull HN Information Systems Inc. (Billerica, MA)
Patent assignment
All assignments
Publication Date     March 5, 1996
Application Number     07/951,069
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     September 25, 1992
US Classification     709/203 703/20 703/27 707/3 719/330
Int'l Classification     G06F 013/00 G06F 013/20 G06F 015/16
Examiner     Lee; Thomas C.
Assistant Examiner     Krick; Rehana P.
Attorney/Law Firm     Driscoll; Faith F. Solakian; John S. ,
Address
Parent Case    
Priority Data    
USPTO Field of Search     395/500 395/200 395/650 395/600
Patent Tags     ally mechanism interconnecting non-distributed computing environment (dce) dce operate network
   
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
5327532
Ainsworth
709/248
Jul,1994

[0 after 0 votes]
5280610
Travis, Jr.
707/103R
Jan,1994

[0 after 0 votes]
5228137
Kleinerman
703/26
Jul,1993

[0 after 0 votes]
5027271
Curley
710/240
Jun,1991

[0 after 0 votes]
4972368
O'Brien
710/67
Nov,1990

[0 after 0 votes]
4768150
Chang
719/328
Aug,1988

[0 after 0 votes]
4466063
Segarra
709/226
Aug,1984

[0 after 0 votes]
3614745
Podvin
29/890.01
Oct,1971

[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. A distributed system including a plurality of computer systems coupled together through a common communication network, a first one of said computer systems corresponding to a non distributed computing environment (DCE) computer system which includes a first type of operating system for running non DCE application programs on said first one of said computer systems and a second one of said systems corresponding to a DCE system including a second type of operating system which is compatible with said DCE system for running application programs compiled on said second system and wherein said distributed system further includes:

an ally component and a distributed computing environment (DCE) application system installed in said second system to run in conjunction with said second type of operating system, said DCE application system including a plurality of basic distributed services and a remote procedure call (RPC) component for processing remote procedure calls between client and server application programs communicating through a pair of RPC stub components according to a predetermined RPC protocol, said ally component including a plurality of management routines for enabling local requests made by said client application programs running on said first system to be processed by accessing said plurality of distributed service components of said DCE system; and,

an RPC runtime component included in said first computer system, said RPC runtime component including a RPC subcomponent and an application program interface (API) subcomponent operatively coupled to each other, said RPC subcomponent including a minimum number of ported routines responsive to a corresponding number of standard DCE RPC requests for determining when any local client request is to be forwarded to said ally component of said second computer system and said API subcomponent including a plurality of subroutines for enabling transfer of said each local client request received from said RPC subcomponent of said RPC component of said first computer system to said ally component of said second computer system using said predetermined RPC protocol established by said client and server RPC stubs for accessing a designated one of said distributed service components of said DCE application system of said second computer system thereby eliminating the need of having to port said DCE service components to operate on said first computer system.

2. The system of claim 1 wherein said first type of operating system is a proprietary operating system which does not include facilities to support said DCE application system.

3. The system of claim 1 wherein said second operating system is a UNIX based operating system which includes facilities to support said DCE system.

4. The system of 1 wherein said DCE application system includes a number of software layers, a first DCE layer including said plurality of components for providing a plurality of basic distributed services and a second layer including said RPC component of said DCE application system.

5. The system of claim 4 wherein said ally component is also included in said second layer.

6. The system of claim 1 wherein RPC communications between said first and second computer systems is established according to statements defining an ally interface and wherein said second system further includes an interface definition language (IDL) compiler, said IDL compiler being used to compile said statements into said RPC stub components and said first computer system including a compatible compiler for compiling said client application programs, said compatible compiler compiling said RPC stubs produced by said IDL compiler before being installed on said first computer system.

7. The system of claim 1 wherein said plurality of components includes a naming service component, a security service component, a time service component and a threads service component.

8. The system of claim 1 wherein said API subcomponent of said first computer system includes routines for performing operations for initially establishing association with said ally component for having said ally component carrying certain binding operations and naming service operations.

9. The system of claim 1 wherein said ally component routines for processing said client requests by generating standard DCE calls to said RPC component of said DCE application system installed in said second computer system.

10. The system of claim 9 wherein said ally component includes a routine for performing initialization sequence of operations in response to a first computer client request received from said first system.

11. A method of providing a distributed computing environment (DCE) in a system which includes a plurality of computer systems for a first one of said system which is a non-DCE computer system that does not have operating system facilities for directly supporting DCE services for application programs running in said non-DCE computer system and a second one of said computer systems which is a DCE computer system that includes a DCE application system for providing said DCE services, said DCE application system containing a plurality of components for performing said DCE services without having to port said DCE components to said first computer system, said method comprising the steps of:

a. coupling said first and second computer systems together for enabling said computer systems to process remote procedure (RPC) calls between client and server application programs running on said first and second computer systems respectively which communicate through a pair of RPC stub components;

b. installing in said first computer system, an RPC runtime component which includes an application program interface (API) component to operate in conjunction with said operating system facilities of said first computer system, said RPC runtime component including a number of routines responsive to standard DCE requests for determining when any client request for local services can not be performed by said first computer system and said API component including a plurality of subroutines for enabling transfer of said local client request to said second computer system using a predetermined RPC protocol established by said client and server RPC stubs;

c. installing in said second computer system, an ally component to run said second computer system in conjunction with said DCE components said ally component including a plurality of routines for communicating with said RPC runtime component and for processing said client requests received from said RPC runtime component of said first computer system for performing requested DCE services using said DCE components of said second computer system for those DCE components which were not ported to run on said first computer system;

d. determining by a mapping operation performed by said number of routines of said RPC runtime component of said first computer system which local client request can not be performed locally by said RPC runtime component because of not having ported said DCE components to said first computer system; and,

e. translating and transferring by said API component of said RPC component of said first computer system, each client request which can not be performed locally as determined in step d into a form for receipt by said ally component for execution either by said ally component or by said ally component and said DCE components installed on said second computer system.

12. The method of claim 11 wherein said method further includes the steps of:

including in said DCE application system of said second computer system a number of servers which couples to said DCE application system RPC component; and,

(g) including in said ally component routines for executing client requests by accessing corresponding ones of said servers through said RPC component for performing DCE services for said client application programs running on said first computer system.

13. A distributed system including a plurality of computer systems coupled together through a common communication network, a first one of said computer systems corresponding to a non distributed computing environment (DCE) computer system which includes a first type of operating system for running non DCE application programs on said first one of said computer systems and a second one of said systems corresponding to a DCE system including a second type of operating system which is compatible with said DCE system for running application programs compiled on said second system and wherein said distributed system further includes:

an ally component and a distributed computing environment (DCE) application system installed in said second system to run in conjunction with said second type of operating system, said DCE application system including a plurality of basic distributed services and a remote procedure call (RPC) component for processing remote procedure calls between client and server application programs communicating through a pair of RPC stub components according to a predetermined RPC protocol, said ally component including a plurality of management routines for enabling local request made by said client application programs running on said first system to be processed by accessing said plurality of distributed service components of said DCE system wherein said ally component includes a plurality of sections for processing different types of requests received from said RPC runtime component of said first computer system, said plurality of sections including a requests section, a forwarding service section coupled to said request section, a naming service section coupled to said requests section and a security service section coupled to said requests section; and,

an RPC runtime component included in said first computer system, said RPC runtime component including a RPC subcomponent and an application program interface (API) subcomponent operatively coupled to each other, said RPC subcomponent including a minimum number of ported routines responsive to a corresponding number of standard DCE RPC requests for determining when any local client request is to be forwarded to said requests section of said ally component of said second computer system and said API subcomponent including a plurality of subroutines for enabling transfer of said each local client request received from said RPC subcomponent of said first computer system to said requests section of said ally component of said second computer system using said predetermined RPC protocol established by said client and server RPC stubs for accessing designated ones of said distributed service components of said DCE application system of said second computer system through other sections of said plurality of sections of said ally component thereby eliminating the need of having to port said DCE service components to operate on said first computer system.

14. A distributed system including a plurality of computer systems coupled together through a common communication network, a first one of said computer systems corresponding to a non distributed computing environment (DCE) computer system which includes a first type of operating system for running non DCE application programs on said first one of said computer systems and a second one of said systems corresponding to a DCE system including a second type of operating system which is compatible with said DCE system for running application programs compiled on said second system and wherein said distributed system further includes:

an ally component and a distributed computing environment (DCE) application system installed in said second system to run in conjunction with said second type of operating system, said DCE application system including a plurality of basic distributed services and a remote procedure call (RPC) component for processing remote procedure calls between client and server application programs communicating through a pair of RPC stub components according to a predetermined RPC protocol, said ally component including a plurality of management routines for enabling local request made by said client application programs running on said first system to be processed by accessing said plurality of distributed service components of said DCE system; and,

an RPC runtime component included in said first computer system, said RPC runtime component including a RPC subcomponent and an application program interface (API) subcomponent operatively coupled to each other, said RPC subcomponent including a minimum number of ported routines responsive to a corresponding number of standard DCE RPC requests for determining when any local client request is to be forwarded to said ally component of said second computer system and said API subcomponent including a plurality of subroutines for enabling transfer of said each local client request received from said RPC subcomponent of said first computer system to said ally component of said second computer system using said predetermined RPC protocol established by said client and server RPC stubs for accessing a designated one of said distributed service components of said DCE application system of said second computer system thereby eliminating the need of having to port said DCE service components to operate on said first computer system, said RPC runtime component being constructed by compiling statements which include #ifdef declarations designating those portions of said RPC runtime component which form part of a common porting kit from those portions of said RPC runtime component which are specific to the architecture of said first system thereby facilitating said porting of DCE services to different types of non DCE based computer systems.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

1. Field of Use

This invention relates to data processing systems and more particularly to systems which operate in a distributed computing environment.

2. Prior Art

In the 1980's, computer hardware vendors have responded to the need to provide users with access to UNIX* based systems. Some vendors have provided such access by interconnecting or integrating their proprietary systems with UNIX based systems through the use of separate processor boards and separate operating systems. An example of this type of system is described in U.S. Pat. No. 5,027,271 entitled "Apparatus and Method for Alterable Resource Partitioning Enforcement in a Data Processing System having Central Processing Units using Different Operating Systems" which issued on Jun. 25, 1991.

* UNIX is a registered trademark of X/Open Company Limited

Other approaches include hosting an UNIX environment or process running under a proprietary system and providing external communication/networking functions implemented on a UNIX based platform. These systems allow end user UNIX based systems to use client software to request services from proprietary systems. Examples of these systems are The OPEN7 and OPEN8 systems manufactured by Bull HN Information Systems Inc.

With the continued increases in the speed and power of computer hardware and the development of high speed local area networks, it becomes even more important to be able to combine large numbers of different vendor systems and high speed networks. Such systems are called distributed systems in contrast to centralized systems. The above mentioned OPEN7 and OPEN8 systems are also examples of such distributed systems. Such systems are more economical, provide greater total computing power and provide greater reliability than centralized systems.

However, there are certain problems associated with such systems in terms of the lack of distributed software, network communications and message security. In 1990, the Open Software Foundation, Inc. (OSF), a consortium of computer vendors, announced its choice of a set of integrated services that would provide a comprehensive Distributed Computing Environment (DCE) for the development, use and maintenance of distributed applications without regard to the underlying complexity of the computing network. The DCE architecture is described in the publications entitled, "OSF Distributed Computing Environment Rationale" by Open Software Foundation, Inc. dated May 14, 1990 and "Distributed Computing Environment, An Overview" by Open Software Foundation dated January, 1992.

The DCE architecture envisions support from a platform like a UNIX based platform which includes facilities utilized by such architecture. This poses problems for those vendors which wish to offer such services on a non-UNIX based platform. This problem is further compounded when a vendor wishes to provide such DCE architecture on several different proprietary platforms.

In general, the approach has been to port a substantial number of software services from the proprietary system platform to the UNIX based system platform or visa versa or the addition of special hardware facilities and software for running the UNIX based operating system in another environment. This has proved quite costly and has required the allocation of substantial resources. Additionally, these system platforms have required continuous support in order to provide timely upgrades and enhancements.

Accordingly, it is a primary object of the present invention to provide a technical solution which allows DCE services to provided in an incremental way on a proprietary system platform.

It is a further object of the present invention to provide such incremental services in a timely fashion on several different proprietary system platforms.

SUMMARY OF THE INVENTION

The above objects and advantages are achieved in a preferred embodiment of the distributed system of the present invention. The distributed system includes a non-distributed computer environment (DCE) computer system and at least one DCE computer system which are loosely coupled together through a communications network operating with a standard communications protocol. In the preferred embodiment, the non-DCE and DCE computer systems operate under the control of a non-UNIX/proprietary and UNIX based operating systems respectively. The non-DCE computer system further includes application client software for providing access to the DCE service components via a remote procedure call (RPC) mechanism obtained through the ally software included on the DCE computer system.

According to the present invention, the distributed system further includes three major components which are distributed between the non-DCE and DCE systems. The components are a client side RPC runtime service component which includes an ally application program interface (API) component and an ally component. The arrangement allows non-DCE user distributed applications through client and server software to access DCE service components through the ally component using the RPC mechanism of the non-DCE and DCE systems.

According to the present invention, only those DCE service components which are absolutely necessary are ported to run on the non-DCE system. Other non-ported services are imported from the Ally component through the application program interface (API) component of the non-DCE computer system.

In the present invention, a plurality of APIs are defined for the ally component and are "exported" to the client RPC runtime service components. These APIs are contained in the API component included in the client RPC runtime on the non-DCE system and define the functions required to be performed by the ally component in providing the client application access to the DCE services through the RPC mechanisms of both the non-DCE and DCE systems. According to the present invention, the client application containing the IDL descriptions of the Ally interfaces/specifications are translated into client stub source code by an IDL compiler resident on the DCE system. To complete the building of the client application, a non-DCE system compiler is then used to compile and link the client stub source code with the client RPC runtime component routines on the non-DCE system.

The components of the non-DCE system implemented according to the present invention are partitioned into two parts: a common porting kit and a platform porting kit. The common port kit includes components common to all non-DCE systems and just has to be ported once to the non-DCE reference system. The platform porting kit includes the components which are specific/unique to each non-DCE system and the kit modified when moving from one non-DCE system to another. For example, the platform porting kit includes the RPC runtime environment dependencies, network data representation, import library and communication interface protocols. The common porting kit includes the client RPC runtime common portion, the ally and the API libraries.

Such partitioning allows all of the different nonDCE systems to be implemented in parallel. Also, it reduces cost in upgrading since the common porting kit need only be changed once for all systems. The use of separate platform porting kits permits modifications to made to different systems without affecting any of the other systems.

The novel features which are believed to be characteristic of the invention both as to its organization and method of operation, together with further objects and advantages will be better understood from the following description when considered in connection with the accompanying drawings. It is to be expressly understood, however, that each of the drawings are given for the purpose of illustration and description only and are not intended as a definition of the limits of the present invention.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1a shows the major components of the distributed computing environment (DCE) architecture included in the preferred embodiment of the present invention.

FIGS. 1b through 1d show in greater detail, the DCE RPC component service of FIG. 1a.

FIG. 1e shows a prior art distributed system configured to perform a DCE RPC operation.

FIG. 2a shows in block diagram form, a distributed system which incorporates the components of the present invention.

FIG. 2b shows in greater detail, the ally component of FIG. 2a.

FIGS. 3a through 3c are flow diagrams which diagrammatically illustrate some of the operations performed by the systems of FIG. 2a.

FIGS. 4a through 4c are diagrams used to illustrate the operation of the preferred embodiment of the present invention.

GENERAL DESCRIPTION OF DCE ARCHITECTURE

FIG. 1a illustrates the OSF DCE architecture used in the system of the present invention. As shown, DCE includes a set of server components for providing distributed services that support the development, use and maintenance of distributed applications in a heterogeneous networked environment. The server components include a remote procedure call (RPC) service component including presentation service, a Naming (Directory) service component, a Security service component, a Threads service component, a Time service component and a Distributed file system service component.

The RPC service component is an access mechanism which implements the model of the simple procedure call within the client/server architecture for allowing programs to call procedures located on other systems without such message passing or I/O being at all visible to the programmer. The DCE RPC service component enables distributed applications to be defined and built in an object oriented way.

Remote procedures are viewed as operations on objects (e.g. printers, files, computing units) rather than as calls to particular systems or server processes. As discussed herein, it hides from the programmer various network complexities such as the means for locating and accessing host systems on which the required services are running. It also makes it easier to produce programs that are less dependent on system configurations such as host names and locations. The RPC service component service design is based on the Apollo Network Computing System (NCS) which provides a clearly specified RPC protocol that is independent of the underlying transport layer and runs over either connectionless or connection oriented lower layers.

The RPC service component consists of both a development tool and a runtime system/service (RTS). The development tool consists of a language (and its compiler) that supports the development of distributed applications following the client/server model. It automatically generates code that transforms procedure calls into network messages. The development tool is discussed later herein with reference to FIG. 1d to the extent necessary for an understanding of the present invention.

The RPC runtime service/system implements the network protocols by which the client and server sides of an application communicate. Also, DCE RPC includes software for generating unique identifiers which are useful in identifying service interfaces and other resources.

The DCE Directory or Naming Service component is a central repository for information about resources in the distributed system. Typical resources are users, machines, and RPC-based services. The information consists of the name of the resource and its associated attributes. Typical attributes could include a user's home directory, or the location of an RPC-based server. The DCE Directory Service comprises several parts: the Cell Directory Service (CDS), the Global Directory Service (GDS), the Global Directory Agent (GDA), and a directory service programming interface. The Cell Directory Service (CDS) manages a database of information about the resources in a group of machines called a DCE cell. The Global Directory Service implements an international standard directory service and provides a global namespace that connects the local DCE cells into one worldwide hierarchy. The Global Directory Agent (GDA) acts as a go-between for cell and global directory services. Both CDS and GDS are accessed using a single directory service application programming interface (API) and the X/Open Directory Service (XDS) API.

The DCE Security Service component provides secure communications and controlled access to resources in the distributed system. There are three aspects to DCE security: authentication, secure communication, and authorization. These aspects are implemented by several services and facilities that together comprise the DCE Security Service, including the Registry Service, the Authentication Service, and Privilege Service, the Access Control List (ACL) Facility, and the Login Facility. The identity of a DCE user or service is verified, or authenticated, by the Authentication Service. Communication is protected by the integration of DCE RPC with the Security Service-communication over the network can be checked for tampering or encrypted for privacy. Finally, access to resources is controlled by comparing the credentials conferred to a user by the Privilege Service with the rights to the resource, which are specified in the resource's Access Control List. The Login Facility initializes a user's security environment, and the Registry Service manages the information (such as user accounts) in the DCE Security database.

The DCE Threads Service component supports the creation, management, and synchronization of multiple threads of control within a single process. This component is conceptually a part of the operating system layer, the layer below DCE. If the host operating system already supports threads, DCE can use that software and DCE Threads is not necessary. However, not all operating systems provide a threads facility, and DCE components require that threads be present, so this user-level threads package is included in DCE.

The Distributed File System Service component allows users to access and share files stored on a File Server anywhere on the network, without having to know the physical location of the file. Files are part of a single, global namespace, so no matter where in the network a user is, the file can be found using the same name. The Distributed File Service achieves high performance, particularly through caching of file system data, so that many users can access files that are located on a given File Server without prohibitive amounts of network traffic and resulting delays. DCE DFS includes a physical file system, the DCE Local File System (LFS), which supports special features that are useful in a distributed environment. They include the ability to replicate data; log file system data, enabling quick recovery after a crash; simplify administration by dividing the file system into easily managed units called filesets; and associate ACLs with files and directories.

The DCE Time Service component provides synchronized time on the computers participating in a Distributed Computing Environment. DTS synchronizes a DCE host's time with Coordinated Universal Time (UTC), an international time standard.

THE DCE RPC RUNTIME SYSTEM ARCHITECTURE

FIG. 1b shows in greater detail, the DCE RPC run time system (RTS). As shown, the system is divided into three major components. These are the Communication Services (CS), Naming services (NS), and Management services (MS). The CS is responsible for carrying out the actual work being done when a remote procedure is called. That is, it accesses the network and provides the means for simultaneously executing different transport and RPC protocols. As shown, the CS includes a network address family extension services section, a common communication services section, a RPC protocol machines section and a common network services section which contains network independent functions such as read, write, open and close.

The network address family extension services section provides functions for manipulating addresses within separate modules for each network service which present the same interface to the CCS. Whenever a network specific operation such as returning the endpoint in a network address needs to be performed, the CCS makes the corresponding function call causing the activation of the specific module determined during initialization time. The RPC protocol machines provides functions for handling different protocols. The hiding of two supported RPC protocols, connection oriented or connectionless (datagram) based is achieved in the same way as described above. For each RPC protocol machine, an initialization routine returns function pointer arrays which present a common interface to the CCS. The CCS uses them to make data transfer calls, collect statistics, access the relevant fields in the binding representation structure and notify the RPC protocol machine of network events.

The NS accesses the distributed system's naming service such as an X.500 directory to locate servers by specifying an interface or an object which have to be exported by servers and imported by clients. The NS manages RPC services either locally or remotely. Remote management functions are a subset of local ones and are made available via the RPC mechanism.

FIG. 1c shows the CCS in greater detail. As shown, the CCS includes an initialization service component, a thread service component, a call service component, a network listener service component, a binding service component, a security service component, an interface service component, an object service component, a communications management service component and a utility service component.

The initialization service component sets up the RPC environment and the creation of prerequisites for communication services such as the allocation of static tables. Also, transport and RPC protocols to be supported are also established. A table is generated during initialization that assigns an identifier (RPC protocol sequence id) to each combination of network, transport and RPC protocols. These types of identifiers appear later as attributes to structures that specify interfaces. Thus, an interface representation data structure may exist several times for the same interface but with different protocol sequence identifiers associated with it. When the RTS library is build as a non-shared image, the initialization routines are called when either the application or stub first calls the CS.

The thread service component contains functions for manipulating threads such as creating and destroying them. It also manages a table that keeps track of a thread's status and relates it to the RPC context it is executing. In the DCE RPC implementation, there is a client call thread for each request an application makes. This thread executes all of the stub and CS code. When all of the parameters are marshalled and passed to the network, the client thread is blocked until the result of the call is returned.

The call service component provides functions of sending and receiving data. It also manipulates the call handle data structure which serves as a parameter for all the functions in the component. The important components of this structure are the binding representation structure which contains information about the remote partner, interface and operation identification, a thread identifier, dynamic information such as the employed transfer syntax, and RPC protocol specific information. The other parameter common to the call service functions is the I/O vector which is an array of buffer descriptors. The buffers pointed to in the I/O vector provide the memory for the marshalled data. The routines in the call service are used to start and end transfers or to send and receive data. Data is sent or received in fragments for larger quantities of data these calls have to be repeated until all the data is processed, There is a special call that is utilized to indicate to the remote RPC process that the last chunk of data belonging to the same request or response is being sent.

The network listener service component detects events on any network and delivers them to the correct RPC protocol manager (PM). It accesses an internal table where network descriptors are related to RPC protocol sequences (transport and RPC protocols). It manages that table (add, delete operations) as well as monitors the network itself. For example, it checks the liveliness of the remote partner in the case a connectionless protocol is employed. The network listener service component further manages the network listener thread (creation, termination, notification of events).

The binding service component provides functions to manipulate the binding representation data structure or binding handle. A client makes a request to the naming service to first obtain this structure. The binding handle contains information that relates a client to the server process. It consists of the location of the server the entire presentation address consisting of the server network address and the communication port of the server process), an object identifier, an interface identifier and further RPC protocol specific information. This structure is pointed to in the call handle which is part of every function in the call service component.

The RPC security service component provides for the selection of four levels of security. These are the performance of authentication on every association establishment, the performance of authentication on every call, the enforcement of integrity on every packet and the enforcement of privacy on every packet. The interface service component includes functions to handle the internal interface registry table which keeps track of all of the interfaces registered with CCS. It contains interface uuids, version numbers and operation counts.

The object service component manipulates another internal table that relates objects to the types to which they belong. Particular objects include servers, server groups and configuration profiles. The communication management service component includes functions for managing all of the CS: CCS, network services, and the RPC protocol services. This includes processing incoming calls, indicating how fault messages should be treated, allowing or barring shut-downs, and gathering statistics. The utility service component includes the functions for handling uuid, timers and buffers.

The RPC naming service component of FIG. 1b provides the following groups of services: operations for manipulating binding handles, none of which imply communications between the client and server (e.g. export, import, lookup); operations for retrieving information about entries in general (e.g. interfaces and objects exported by a server); operations on server groups (e.g. create, delete, add, remove members); operations on profiles; and interfaces for managing applications for creating or deleting name service entries in a consistent manner.

The Management Service component of FIG. 1b provides functions that can only be used by an application to manage itself locally and functions that can be called to manage remote RPC based applications. In the case of the latter, an application to be managed has to make itself available by calling the appropriate run-time functions. An application can control remote access to its management interface through authenticated RPC services. Examples of local management services are calls to inquire about or set time-out values for binding handles or alerts. Examples of remote management functions are to determine whether a server is listening for incoming calls, start/stop listening on a server or collect statistics.

RPC SERVICE COMPONENT ARCHITECTURE

FIG. 1d shows the basic components of the DCE RPC service component. As previously mentioned, this component consists of both a development tool and the runtime system described in connection with FIG. 1c. The development tool includes an UUID generator, the RPC Interface Definition Language (IDL) and an IDL compiler. The RPC runtime system includes a client or server application, an RPC stub interface, an RPC runtime interface and the RPC runtime system (RTS) which includes the previously described components.

Development Tool

The UUID generator is an interactive utility that creates UUIDs (universal unique identifiers). The significance of a given UUID depends entirely on its context and when the UUID is declared in the definition of an interface, it defines that interface uniquely from all other interfaces.

A specific RPC interface is written in IDL which is a high level descriptive language whose syntax resembles that of the ANSI C programming