I was surprised that this book slipped under my radar for almost 3 months. I've been on the lookout for just such a unifying tome of knowledge that relates patterns and domain-driven design (DDD) to a practical .NET example for quite some while. The book delivers well on its promises, significantly surpassing the only other real competitor, Foundations of Object-Oriented Programming Using .NET 2.0 Patterns. The pros and cons, as I see them, are outlined below:
* Combines the ideas of Domain Driven Design (Evans) with Patterns of Enterprise Application Architecture (Fowler). These books are pretty much mandatory reading prior to diving into this book.
* Draws upon a myriad of other well-known sources, including materials from Refactoring to Patterns and the GoF, work from Johnson and Lowy, as well as a rare reference to Naked Objects. The more experienced and better read you are, the more this stuff will make sense.
* Rare .NET coverage of advanced concepts like Plain Old CLR Objects (POCOs), persistence ignorant (PI) objects, O/R mapping with NHibernate, Dependency Injection, Inversion of Control, and Aspect-Oriented Programming.
* While some sections are really insightful and could contain more interesting materials, other sections seem to drone on too long. The work on defining the NUnit tests, in particular, flows like a stream of consciousness and doesn't really add a lot of structured value to understanding DDD, patters, or TDD for that matter.
* Embedded comments in the text adopt from the style used in Framework Design Guidelines. It worked very well for Cwalina / Abrams in their book because it seemed planned in from the outset. Comments like "one reviewer commented on the code with the following, more succinct version" seem like editorial comments left in and not collaborative authoring by design.
All-in-all a very solid book that fills a unique market niche, leaving it pretty much without peers. If Amazon had a 4.5 starts rating, Applying DDD would get it. As a secondary reference book, it doesn't offer the earth shattering insights of some of the innovative source materials found in the Fowler Signature Series, for example. It does, however, weave together an interesting example of how to tie all of these concepts together for the .NET architect looking to take their understanding to the next level.