REVIEW - Creating Lightweight Components with ATL


Creating Lightweight Components with ATL


Jonathan Bates



Sams Publishing (1999)




Lawrence Dack


February 2001



If you need 'Lightweight Components with ATL', buy the book, because it explains how to link several different technologies together to achieve a worthwhile end

This book is primarily targeted at the professional developer, who is expected to be a C++ programmer with at least some Win32 experience but little or no Component Object Model (COM) knowledge. (At this point it's probably worth saying that I fit the book's target audience pretty well, which puts me in a good position to review it as a teaching aid, but less able to comment on its technical correctness).

Its objective is to teach the reader to develop small, efficient COM components. To this end it promotes the use of Microsoft's Active Template Library (ATL) and strongly discourages use of Microsoft Foundation Classes (MFC). The Standard Template Library is offered as a source of container classes to replace those found in the MFC.

The early part of the book contains an overview of COM and STL and a summary of the reasons for ignoring MFC (large memory footprint and problems with multiple inheritance). However in keeping with the title the bulk of the book illustrates use of the ATL in components for a range of applications, starting with standard COM techniques, moving on to Windowing and ActiveX controls in ATL and then to database applications. Topics covered include:

  • Building ATL-based COM clients and servers
  • DCOM: remote severs and Security
  • OLE Automation
  • Connectable Data objects
  • Data persistence with structured storage
  • Web pages
  • Active document
  • Test tools
  • Database access
  • Database back end using OLE DB
  • Distributed transaction support using MTS
A CD is provided with the book; it contains Microsoft Visual Studio projects covering code examples from the book and a range of 3rd party software.

In general, I found Bates writing style and logical approach to be competent and definitely clear enough to get the message across although several sections that appeared complex at first sight, turned out on re-reading to boil down to something quite simple. Although targeted at a 'no COM required' audience, the main focus of this book is on practical development of 'Components with ATL' and within that the emphasis is more on use of ATL than an explanation of COM. The COM overview provides just enough understanding to make later chapters intelligible; if you are new to COM, this book is no substitute for one of the standard COM texts. STL is also dealt with very lightly.

Although light on concepts, the book has a very practical bias throughout; it provides detailed walk-throughs of the steps involved in creating ATL components through Visual Studio, including frequent screen shots of Visual Studio forms and occasional hints and tips. In keeping with this bias, the book also devotes space to some of the test tools available to exercise components before they are released to a wider community. Although I have not been able to examine the example applications in depth, I am inclined to believe that the advice is sound and based on practical experience. The book is noticeably proscriptive; methods to achieve an end are described in detail, but much less emphasis is placed on explaining why that particular method was chosen or what the design compromises were. Having said this, there are occasional flashes of insight for example, Chapter six outlines the underlying implementation of a Single Threaded apartment model (as an invisible window with a message queue), which is not something I've found described elsewhere.

Overall, the real value of this book lies not in its parts but the whole. If you need 'Lightweight Components with ATL', buy the book, because it explains how to link several different technologies together to achieve a worthwhile end, which is often the hardest knowledge to glean from single-technology descriptions.

Book cover image courtesy of Open Library.

Your Privacy

By clicking "Accept Non-Essential Cookies" you agree ACCU can store non-essential cookies on your device and disclose information in accordance with our Privacy Policy and Cookie Policy.

Current Setting: Non-Essential Cookies REJECTED

By clicking "Include Third Party Content" you agree ACCU can forward your IP address to third-party sites (such as YouTube) to enhance the information presented on this site, and that third-party sites may store cookies on your device.

Current Setting: Third Party Content EXCLUDED

Settings can be changed at any time from the Cookie Policy page.