Summary
In this chapter, you learned about out-of-process servers. The first
thing you learned was that like DLLs, EXEs have to perform four main
tasks: registration, unregistration, proper termination, and object
creation (exposing their class objects using class factories).
Registration and unregistration are done with command-line
parameters: /RegServer
and
/UnregServer
. To expose its class objects, the SCM
uses the command-line switch -Embedding
. The
-Embedding
switch tells the ActiveX EXE to
register its class objects with the system’s class table. The
SCM then searches the class table for the class objects. If the class
table does not have a class object that meets the client’s
request, the SCM launches the executable.
COM objects live in apartments. VB COM objects live in single-threaded apartments (STAs). Whenever communication occurs between apartments, it happens through a proxy and a stub. Communication through proxies and stubs is much slower than direct communication. To use an object from another apartment, we must export the object’s interface from one apartment and import it into the client’s apartment. To export the object’s interface means to marshal it. Marshaling the interface creates a stub. To create the stub, the universal marshaler needs to have access to the server’s type library. This is also the case when the object needs to be imported into the client’s apartment. In this case, the universal marshaler needs to build a proxy from the type library. This ...
Get COM+ Programming with Visual Basic now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.