A server's implementation definition must be registered in the Implementation Repository before a server can be used. When a client attempts to invoke a method on a remote object, DSOM consults the Implementation Repository to find the location of the target object's server.
An implementation definition is represented by an object of class ImplementationDef, whose attributes describe a server's ID, user-assigned alias, host name, program pathname, the class of its server object, whether or not it is multi-threaded, and so forth. Implementation IDs uniquely identify servers within the Implementation Repository, and are used as keys into the Implementation Repository when retrieving the ImplementationDef for a particular server.
It is possible to change the implementation characteristics of a server, even to the point of using a completely different server program on another machine (with Workgroup DSOM). Thus, the implementation ID identifies a logical server, and the ImplementationDef describes the current implementation of that logical server.
See the topic "Registering Servers and Classes" in section 6.6 for details on server registration. Two registration methods are described: "manual," (via the regimpl, the wregimpl, or the pregimpl utility) and "programmatic," ImplRepository methods.
When a server is initialized, it must retrieve a copy of its ImplementationDef, and keep it in a global variable (SOMD_ImplDefObject). This variable is used by the DSOM run time. (Client-only programs may leave the SOMD_ImplDefObject variable set to NULL.)