Endorsed by object-orientation guru Grady Booch and Microsoft COM expert Charlie Kindel, Box's book takes the reader from an elucidating discussion of why a demand exists for COM and how it fits into the progression of C++ technology to a cool exhibition of some COM programs he's written. Along the way, Box covers the four corners of COM interfaces, classes, apartments, and security--all explained in developer's detail. He also gives attention to access control, marshaling, and Distributed COM (DCOM). Essential COM isn't an application programming interface (API) reference; it is an exploration of the Tao of COM. As the author says in his preface, you will figure out the how of COM programming quickly, as soon as you grasp the why.
Starting from the progressive definition of an informal set of requirements for modular software architectures, the first chapter of Essential COM highlights how, by itself, the C++ language is not capable of satisfying many of them, even when associated with DLLs. Several possible design alternatives are then evaluated, and the final decision leads to the rough engineering of COM. This is perhaps the most vaporware-free introduction to the subject I have ever read because it explains through facts and not conjecture how and why the C++ object model maps well to COM... As the book proceeds, more and more room is given to complex technical issues and useful (while not trivial) COM programming idioms, such as tear-off interfaces for saving memory as the number of interfaces climbs significantly but not all of them happen to be constantly in use. In all cases the solutions make use of only the raw COM API and interfaces at the C++ level. Neither the theory, nor any of the numerous code snippets sprinkled throughout in the book, mention high-level frameworks such as ATL or MFC. The dissertation on multithreading issues and marshaling are very detailed and betray the vast experience of the author in the implementation of nontrivial COM systems. --Davide Marcato, Dr. Dobb's Journal -- Dr. Dobb's Journal