Written by a leading COM authority, this unique book reveals the essence of COM, helping developers to truly understand the why, not just the how, of COM. Understanding the motivation for the design of COM and its distributed aspects is critical for developers who wish to go beyond simplistic applications of COM and become truly effective COM programmers, and to stay current with extensions, such as Microsoft Transaction Server and COM+. Box examines COM from the perspective of a C++ developer, offering a familiar frame of reference to ease you into the topic.
It is a well-written easily readable and understandable book which is still relevant in 2025 despite some parts being slightly dated.
The book was released in 1997 (I was not born yet then). It is a good book even in 2025. The book targets mainly Windows NT 4.0. NT 5.0 (later known as Windows 2000) it mentions as a near future. Because Windows maintains very strong backward compatibility, the vast majority of the book is still valid. Of course, nowadays you will likely not heavily use distributed variant and RPC, but still, COM is used in Microsoft technologies a lot (and new technologies like WinRT are surprisingly still powered by it). Even if you want to stay on the client side, the book gives you a comprehensive description of how COM is designed and how to properly use it. Almost every enum listed in the book is incomplete and nowadays contains more options that did not exist at the time of writing the book. Similarly, all links are dead, but some resources are possible to find with some manual searching effort. The downloadable code at the end of the book is no longer downloadable, but it is printed (on 35 pages), so you can retype it. Code snippets follow the code style typical for the 90s. I do not like Hungarian notation, but who cares? Code examples are mainly in C++, some small codes are in VB (original VB, not VB.NET) and Java. Nowadays you will likely interop with something more modern like Rust, but it is very interesting to see how futureproof this technology is.
The book mentions solely COM. It does not describe related technologies like OLE and MFC much. Naturally, it does not know about any features and improvements which were released later. So nothing like COM+, WinMD, regfree COM, etc. is there.
I would welcome it if the author described more concepts with diagrams. Typically, some kind of class diagrams are here, but COM concepts are described exclusively using long textual descriptions with a huge cadence of statements. Reading/Understanding some parts is very slow due to this, especially in chapter 5. Otherwise, the book is very easy to read and follow, there are no cross-references across text. At the end of every chapter, there are nice reasonable long summaries which I liked a lot.
Revisiting the definitive book on COM that taught me everything I needed to know. Even if you are not a developer, the first three chapters are worth a read simply for understanding it. COM has had a long life in the Microsoft developer ecosystem so that drives home the historical significance of this book even more.
It was very good book and I got from it what I wanted, which was to get a better understanding of 'why?' behind COM. However, I've skimmed through the second part of the book as it was a bit too much hands-on for me at this point.
Another dip into the history of computing. This is the book I should of read before Learning DCOM, as it focuses somewhat more closely on the core of COM (although it does spend a fair bit of time on distributed COM).
The first chapter is great, as it describes the problems that COM was supposed to solve, and shows the approaches taken to solve them. The rest of the book is the details. Really.
An issue with this sort of book is that 95% of the code that uses COM uses probably at most 10% of COM, so the book spends most of its pages on things that most people working with COM needed rarely, if ever. But of course, that rarely used stuff is when a book like this is the most valuable, as that's the stuff you always have to look up before using.
The book shows its age with its obsession with saving small (by modern standards) of memory at the cost of more complex code. The trade offs described seem strange today for a software stack meant to run on PCs. I suspect that existing software using such techniques is not particularly loved by the people stuck maintaining.
There is also too much enthusiasm for varieties of remote procedure calls designed to look like local calls. This was always a weak point in COM, as you absolutely need to understand where your code was going to execute, as the latency would be enormously different depending where the component executed. A direct call <> a call into another thread <> a call into another process <> a call across the network. COM probably works best as a local system.
The book is very readable, with a light touch and very clear examples.
For the average programmer, the first couple of chapters and the last are the most beneficial. A lot of the material gets bogged down in the implementation details that get abstracted away.