« PreviousContinue »
United States Patent [w]
Osterman et al.
US005864669A [ii] Patent Number:  Date of Patent:
 METHOD AND SYSTEM FOR ACCESSING A PARTICULAR INSTANTIATION OF A SERVER PROCESS
 Inventors: Lawrence William Osterman,
Woodinville; Bharat Shah, New Castle, both of Wash.
 Assignee: Microsoft Corporation, Redmond,
 Appl. No.: 680,231
 Filed: Jul. 11, 1996
 Int. CI. G06F 15 16
 U.S. CI 395/200.33; 395/200.31
 Field of Search 395/200.33, 200.31,
 References Cited
U.S. PATENT DOCUMENTS
5,187,787 2/1993 Skeen et al 395/600
5,218,699 6/1993 Brandle et al 395/650
5,247,676 9/1993 Ozur et al 395/650
5,283,856 2/1994 Gross et al 395/51
5,619,650 4/1997 Bach et al 395/200.01
5,761,507 6/1998 Govett 395/200.33
R. Srinivasan, "Binding Protocols per ONC RPC Version 2," Sun Microsystems, RFC 1833, Aug., 1995 pp. 1-14. TCP/IP Tutorial and Technical Overview, http:// www.tp3.ruhr-uni-bochum.de/rs6000-red books/htmlbooks/gg243376.04//3376c410.html#rpc, Jun. 1995.
Jon Crowcroft, "Open Distributed Systems," http://www.cs.ucl.ac.uk/staff/Jon/ods/ods.htm May 10, 1996. DCE Glossary, http://www.uxl.eiu.edu/~csJay/ dcehntro_to_dce_8.html 1996.
Arpc Messaging System, Ftp://ftp.cs.colorado.edu/pub/cs/ distribs/arcadia/Arpc.txt Mar. 10, 1995. Gregory Zelesnik, "The Unicon Language Reference Manual," http://almond.srv.cs.cmu.edu/afs/cs/misc/mosaic/ all_mach/omega/Web//People/vit/unicon/reference-manual/ ReferenceJVIanual_44.html May 12, 1996. John Shirley et al., Microsoft RPC Programming Guide, Mar. 1995, O'Reilly & Associates, Inc., Sebastopol, California.
Kramer, Matt, "Baranof's MailCheck 2.6 Delivers Improved Tools", PC Week, Sep. 11, 1995, Ziff-Davis Publishing Company 1995.
Frenkel, Gary, "cc:Mail View Keeps an Eye on Your Messaging System", Network Computing, Jun. 1, 1995, CMP Publications, Inc., 1995.
Primary Examiner—Mehmet B. Geckil
Attorney, Agent, or Firm—Workman, Nydegger & Seeley
METHOD AND SYSTEM FOR ACCESSING A
PARTICULAR INSTANTIATION OF A
BACKGROUND OF THE INVENTION
The invention is directed to client/server computing systems.
A client/server computing system may include a client computer that communicates with a server computer over a network. In such a system, a client process (i.e., a process running on the client computer) causes a server process (i.e., a process running on the server computer) to perform an operation by sending a request to the server process over the network. The server process responds by performing the operation and returning any resulting data to the client process over the network.
Exchanges of requests and responses between the client and the server may be made using the Remote Procedure Call ("RPC") protocol. The RPC protocol is discussed, for example, in "Microsoft RPC Programming Guide", John Shirley and Ward Rosenberry, O'Reilly & Associates, Inc., Sebastopol, Calif., 1995, which is incorporated herein by reference.
The RPC protocol permits the client process to communicate with the server process by making a procedure call to the server process. RPC software running on the client computer automatically transmits the procedure call to the server computer. RPC software running on the server computer receives the procedure call and initiates a response by the server process. The RPC software then returns the results to the client computer.
Concepts denned by the RPC protocol include interfaces, endpoints, and binding handles. An interface is a description of the applications programming interfaces ("APIs") supported by a server application. A given application may have many interfaces that are accessed independently.
Each instantiation, or copy, of an interface is called an endpoint. The endpoint describes a communications port that a client process may use to communicate with the server. Viewed simply, an endpoint is an address at which a client may access the particular copy of an interface. An endpoint designates the name or address of the interface, the server on which the interface is located, and the communications protocol, or transport, by which the interface is to be addressed. For example, the endpoint designated by
"ncacn np:\\\\DINO[\pipe\lsasrv]" describes a process that
uses the named pipe protocol (as indicated by "ncacn np"),
is located on the server "DINO", and is named "\pipe\lsasrv". Similarly, the endpoint designated by
"ncacn ip tcp:22.214.171.124" describes a process
that uses the TCP/IP transport (as indicated by "ncacn ip
tcp") and is located at port "1029" of a server having the address "126.96.36.199".
A client process connects to a specific endpoint using a binding handle. As noted above, an endpoint may be viewed as providing an address at which a desired server process is located. A binding handle may be viewed as pointing to that address. More specifically, a binding handle designates a communication protocol sequence (i.e., the transport by which the endpoint is to be addressed), a server name or address for the corresponding endpoint, and a server process name or address for the corresponding endpoint.
In general, binding handles and endpoints may be fully or partially bound. A fully-bound handle (or a fully-bound endpoint) is one that completely describes the path to the
server application. A server application that produces fullybound endpoints defines a separate endpoint for each transport supported by the server application. A large number of transports (i.e., 20 or more) may be available on a given
5 machine. Accordingly, the burden of defining an endpoint for every possible transport soon can become onerous. In addition, consideration must be given to guaranteeing that a chosen endpoint does not conflict with an existing endpoint for a different application or for a different instance of the
10 same application.
To ease this burden, the RPC protocol permits a server process to define partially-bound endpoints. A client process may then communicate with the server process using a partially-bound handle and the partially-bound endpoint of
15 the server process. A partially-bound endpoint may include the server name or address and the name or address of the server process, without including information about a particular transport to be employed. A partially-bound handle may include the same information, or may include only the
20 server process name or address. A partially-bound handle that includes only the name of the server process might be used when the same server process is running on multiple, equally acceptable, servers.
The RPC software includes an endpoint mapper that
25 enables the use of partially-bound handles and partiallybound endpoints. Each server process using the RPC protocol registers partially-bound endpoints with the endpoint mapper. When a client process wishes to communicate with a given server process, the client process provides the
30 endpoint mapper with an appropriate partially-bound handle. The endpoint mapper responds by producing a fully-bound endpoint for a server process that has registered a partially-bound endpoint corresponding to the partiallybound handle. The endpoint mapper then provides the
35 fully-bound endpoint to the client process. The client process produces a fully-bound handle using this fully-bound endpoint and connects to the server process using the fully-bound handle.
40 SUMMARY OF THE INVENTION
A computer-implemented technique permits differentiation between different instantiations of a partially-bound endpoint. When multiple instantiations (i.e., multiple
45 instances) of a process are running on a server, each instantiation may provide the endpoint mapper with the same partially-bound endpoint. Similarly, a particular process may provide multiple instantiations of the same partiallybound endpoint. In existing systems, the RPC endpoint
5Q mapper does not allow the client process to differentiate between different instantiations of a given endpoint when making a request. Instead, the endpoint mapper simply returns the first registered endpoint that corresponds to the partially-bound handle provided by the client process.
55 In some cases, a client process may need to access a particular instantiation of an endpoint. For example, the same server process may be used to backup an information store and to backup a directory service, with a first instantiation of the server process providing backup of the infor
60 mation store and a second instantiation of the server process providing backup of the directory service. A client process that needs to backup the information store would need to access the first instantiation. However, the existing RPC endpoint mapper does not permit the client process to
65 specifically request the first copy.
The technique of the present invention includes annotating the endpoints and permitting a client process to select a