Chapter 4. Components
In this chapter:
In the last chapter, you learned how to package a COM object from a number of interfaces. You also learned how to build a class factory that can dynamically create your COM objects in a distributed environment. You wrote the code, but you couldn’t test the COM object just yet, because you haven’t put the code for the COM object and its class factory inside a binary module, such as a DLL or an EXE, that can be executed.
In this chapter, you will learn how to build these binary modules, which can both use and expose COM objects. We call these binary modules COM components. As shown in Figure 4-1, a client component can be any COM application that uses a COM object’s interfaces. Server components, on the other hand, are the ones that host COM objects and their associated class factories.

Figure 4-1. Client and server components
Tip
The C++ code that you see in this chapter can be automated by Visual C++ and the ATL wizards with a few mouse clicks. However, knowing what’s needed to create a component from scratch will empower you. There’s no magic in the wizard-generated code, shown in Chapter 6 and onwards.
By the time you finish this chapter, you will know how to package COM objects into a COM application suitable for a distributed environment. You will also know how to write client applications that make use of remote ...