Any developer who wants to create LAN-based, WAN-based, and Web-based applications using Microsoft Windows NT Server as a foundation must use many separate pieces of software. Some of these pieces will be supplied by Microsoft, and you or your company will write other pieces. Still other pieces can come from third-party software vendors. Component Object Model (COM) is the glue that ties all of these pieces together. It enables programmers and companies to distribute and reuse their code efficiently. The more you know about COM, the easier it will be for you to put these systems together.
I believe that COM is the most important thing that a Windows programmer can learn. Whether you're creating a desktop application that relies on ActiveX controls or an MTS application that runs business objects in an N-tier architecture, COM ties it all together. Whatever programming language or languages you're using, understanding COM is a prerequisite. However, learning about COM isn't easy. Just ask anybody who's taken the time to really get up to speed.
The creators of COM claim that they made it as simple as possible and no simpler. For a programmer with an IQ of 184 and a ponytail who spends 14 hours a day writing software, COM might seem simple. To the rest of us, COM looks like several challenging high-level concepts and thousands of grungy details. People who learned COM using C++ in the early days speak of the six months of fog they walked through in search of the light. Visual Basic has whittled down the required details from thousands to merely hundreds, but as you read through this book, you'll find that every time you peel back another layer, another daunting level of complexity appears.
The early days of COM are now fondly remembered as the days of pain and suffering. The brave developers who became productive in COM between 1993 and 1995 had to hack their way to productivity by studying the few available resources. Only the most hardcore C++ programmers became COM-literate by reading and rereading the COM Specification and Kraig Brockschmidt's Inside OLE. Today several development tools and frameworks enable you to benefit from COM without having to ride the intense learning curve that was required only a few years ago.
A thriving community of C++ programmers now eats, breathes, and sleeps the ways of COM. Some C++ programmers write COM code by hand, while others use a productivity framework such as the Active Template Library. You can find excellent books such as Essential COM by Don Box, and Inside COM by Dale Rogerson, which explain the critical aspects of COM that you need to understand to be productive.