This book is a new edition of Professional ActiveX/COM Control Programming by the same authors, and aims to be the book on COM and ATL within DNA. First impressions say the authors have succeeded.
The book states from the beginning that it intends to teach enterprise development for MTS, MSMQ, and OLE DB using ATL3 and VC++ 6.0. This appears to be quite ambitious, but a look at the full contents pages shows that thought has gone into how the material fits together. The book begins with "An Unusual Introduction to COM" that I found to be the most useful introduction to COM that I have read anywhere. The following chapter, "Just When You Thought it was Safe..." provides further important information on COM such as automation, notification, containment, aggregation and threading models. Right from the start, the authors are constantly making the reader aware of the bigger picture. They place fundamental points in boxes for emphasis. They constantly make you aware of considerations to possible clients. They clearly explain why things happen the way they do; they know their subject.
The third chapter concerns itself with writing an ActiveX control from scratch. The authors take you through using MIDL to define the interfaces, assembling the vtables, implementing a class factory, and registering the control. The third chapter is hard work, but worth the effort for the insights provided - namely how much ATL does for you.
Throughout the book, the authors make comments on how things have been/will be improved over time, and the beginning of chapter 4 (ActiveX Controls the Easy Way) even sounds the last post for MFC. The chapter then gives the reader a healthy introduction to the ATL covering include files, the history of ATL and why ATL is what it is. The example from the previous chapter is whizzed through using ATL pointing out how much better life is under ATL, and the component tested numerous development packages.
Chapters 5 to 8 concern themselves with a lengthy example of creating a DNA calendar system and related issues such as OLE DB. The chapter on MTS runs to over 80 pages and deals well with how MTS fits in with the grand scheme of things. The oxymoron of objects and transactions is made clear for all and the authors' experiences with MTS are comforting to the reader. Chapter 10 introduces the reader to hybrid controls (DHTML front-end to an ActiveX control) and the MS Message Queue. Chapters 9 onwards are "read it if you want to" chapters, but they are worth reading. The introductions to MTS and MSMQ are useful knowledge even if you don't intend to use them.
Overall, this is an impressive book containing quality material on COM, ATL and related technologies. The authors assume you are a competent VC++ developer and don't insult your intelligence; the appendices are actually useful and worth reading. The authors' patient yet progressive style and UML diagrams makes this a good technical book. Readers who are less interested in DNA will find it hard to justify the price (£45.99) for half the book, especially considering the book's expected lifetime.