To meet the COM standard for component instantiation, a server must provide the following, regardless of whether it's a DLL or an EXE:
Although all servers follow the generic structure shown in Figure 5-3 on the next page, the exact implementation of each of these requirements differs for DLLs and EXEs, regardless of whether those modules exist on the same machine or on a different machine from the client. The details of these requirements apply to remote servers just as they do to in-process and local servers. In addition, an object handler is structurally equivalent to a full-blown DLL server, so everything described here for DLLs also applies to handlers. The only difference between a handler and a full server is the extent of the implementation found in that component.
Figure 5-3.
The generic structure of a server module.