all in all this is a good introduction to the main services of COM+.
This book is, in some ways, a sequel to David Chappell's Understanding ActiveX and OLE (Microsoft Press, 1996). Understanding COM+ introduces the larger-scale changes to COM that have occurred over the last few years culminating in the version that will be shipped as a standard part of Windows 2000.
Throughout the book, David Platt's mantra is 'Let go and let COM+'. This apparently derives from a similar motto used by the developers of MTS (Microsoft Transaction Server). The idea is that the operating system (in this case, the COM subsystem) should provide the common infrastructure that any enterprise application requires, rather than forcing developers of each application to craft it themselves. COM+ provides this framework of facilities, each of which can save developers from writing their own (possibly less robust) equivalents.
The book opens with a couple of chapters outlining the facilities COM+ provides and explaining how COM+ achieves these by means of intercepting calls to your objects, pre- and post-processing method calls, managing object lifetimes, etc. The 'COM+ Catalogue' - the new repository for component registration - is discussed, as is COM+'s role-based security framework including authentication and authorisation facilities. Finally, threading, the new thread neutral apartment and automatic activity-based synchronisation issues are outlined.
Following this, there is a long chapter on transactions. MTS has been merged into COM+ so you can now get distributed transaction handling automatically and for free. Full details are given on how you can use the COM+ transaction framework in conjunction with a Resource Managers (RM) such as SQL Server. COM+ can also help you write a Compensating Resource Managers (CRM) if you have nothing better to do and want to handle commit/rollback semantics yourself. Just-in-time activation and object pooling are also covered in the context of transactions.
Queued components are discussed next. The advantages of using asynchronous methods calls are covered and details given of how Microsoft Message Queue (MSMQ) makes these work, even managing to support transactions at the same time.
The Event Service supports loosely-coupled events and is an improvement over the older connection-point standard or yore. The service is described and event filtering and security issues explained.
A short chapter on the In-Memory Database (IMDB) support discusses how COM+ allows you to cache selected tables from an RDBMS on a local machine with a lot of RAM to improve database query speed.
Finally, the chapter on Load Balancing shows how stateless objects can be pooled and instantiated at a location determined at runtime by the current dynamic machine load.
The book consists of about 210 pages of text and diagrams, with margin notes akin to those in Chappell's book. I wish every book had margin notes. They are handy for a quick preview before delving into a chapter, can be used to aid memory by reviewing after the book has been read and are ideal to help you locate something you know you've read when the index fails you.
The book's web site athttp://www.rollthunder.com/contains little more than sample code right now, with no activity on the empty errata page for the last eight months. I only found one grammatical typo. Either there are few significant errors in the technical info, or the web-site errata have not been maintained!
In order to develop applications using COM+ you will need some other technical references to work along with, but all in all this is a good introduction to the main services of COM+. Recommended.