if you want a sensibly priced practical introduction to COM, you will not go far wrong with this book.
Unfortunately the objectives of the marketing department often conflict with the interests of users who want to understand their products. The plethora of names which Microsoft use to refer to COM are a case in point. Although DCOM was introduced when COM was extended to support distributed components, this book is not narrowly targeted at the distributed aspects of the technology. In fact it is one of the best introductions I have seen to COM/DCOM/ActiveX technology.
Subjects covered include a brief history of distributed computing, an overview of COM, objects and components and then a more detailed coverage of the infrastructure and tools such as ATL which the programmer needs to understand.
I was impressed by the use of diagrams throughout and the attention to detail; for instance the clear explanation of the BSTR and SAFEARRAY types which often seem to be glossed over and yet are essential to the programmer. There are occasional typographical errors and I found the language a little odd in places, though generally very readable.
On occasion, I thought the book became misleading when it tried to explain the reasons behind some design feature. An example of this is the explanation why C++ public inheritance can be dangerous. I agree with the conclusion, but not with the reasoning.
As suggested by the title, the book also covers the practical aspects of setting up the infrastructure for distributing components across machines. Overall, if you want a sensibly priced practical introduction to COM, you will not go far wrong with this book.