PreviousNext

Interface Ambiguity and Partial Bindings

The interface UUID, which was generated by the IDL compiler, uniquely identifies the set of operations that the client will access through that interface. In short, it identifies the interface. An interface UUID may also happen to identify a server which offers that interface. But if more than one server on the same host offers the same interface (which could easily be the case), the interface UUID alone will not be sufficient to identify a specific server. The result is that if a remote call comes in with such an ambiguous interface and a partial binding, the endpoint mapper will have to randomly choose any one of its eligible registered endpoints, complete the binding with it, and send the call on to that server.

Imagine several print servers residing on the same machine (see the following figure). Each server manages a group of printers that share a common physical location. All the printers in room A are managed by the A print server, all the printers in room B by the B print server, and so on. Now suppose each of these servers has a separate entry in the namespace. The following figure shows the sequence of events that occurs.


Print Server Entries in Namespace

The following steps describe the sequence of events shown in the above figure:

1. The client imports a partial binding to the printer interface from the entry A in the namespace.

2. The client makes its first call with the binding it imported from A.

3. The endpoint mapper at print server A's host, when it receives the call from the client, has no way of knowing which of the four print servers it should map the call to, since all four servers have registered their endpoints under the same interface. It therefore picks one at random to complete the binding.

The entry names are different, but the partial binding information contained in the entries is identical, since the servers' host machine is the same. The interface UUID included in the call is no help, since that same interface is offered by all the servers. A client seeking a print server may not care to which server (and thus to which printer) its request goes, but then again, it may care. If it does, there is a way it can specify a server so that the endpoint mapper can select an appropriate endpoint to complete the partial binding.