The best thing about a COM object is that it acts in a predictable way. After it's activated, it waits patiently to service your method requests. It knows when you've finished using it, and it politely excuses itself from the application by releasing all its resources back to the system. It can answer intelligently when you ask it what interfaces it supports. What's more, a COM object lets you navigate among all of its interfaces so that you can get at all of the functionality it offers.
This chapter explains how COM objects provide this base level of functionality. It also describes how objects provide access to less sophisticated clients through the use of a COM mechanism called automation. The chapter concludes by explaining how a client binds to an object that is running in a remote process. COM does a great job of hooking up the interprocess communication channel between a client and a remote object. What's remarkable is that most of the plumbing details of interprocess communication are completely hidden from most COM programmers.