Just returned home from a nice long vacation at Universal Studios in Florida with the family. This is just what the doctor ordered as I feel much more energized and my nagging eye problems have now gone away.
I finished the final chapters of Appying Domain-Driven Design and Patterns With Examples in C# and .NET by Jimmy Nilsson. You can read my thoughts on the first 8 chapters here:
I thought I might be at a disadvantage by reading the last third of the book (Chapter 9+) a few weeks after reading the first 8 chapters, but such is not the case. The last third of the book is written mainly by guest writers on a number of useful subjects.
Chapter 9 offers you a glimpse of how to use NHibernate as a persistence framework for you domain model. This subject could fill an entire book, so if you are expecting a treatise on how to achieve the details of persistence using NHibernate you will be disappointed. The chapter is good, however, giving one some manner of detail as to how an O/R Mapper ( NHibernate in this case ) offers persistence to the domain layer and the various design patterns ( Identity Map, Unit of Work, Lazy Load, etc.) that come into play. Never do we get any detail about the Nilsson Workspace, which has been alluded to several times in the book, but I don't think it really matters.
Starting with Chapter 10 you get the pleasure of guest writers talking about 1) various design techniques to embrace when using Domain-Driven Design as well as 2) other domain models other than what Jimmy discusses. Let me just say that this is great stuff and I commend the guest writers. You've got some really good introductions on:
- SOA
- IoC and Dependency Injection
- AOP
- MVC Pattern
- TDD of a Web Form
- A Presentation Model
In the appendices, Mats Helander, Frans Bouma, and Ingemar Lundberg offer additional examples of Domain Models that really get you thinking about other approaches to domain model discovery and implementations at the end of the book. More great examples and discussions that give a whole new meaning to the word "Appendices." :)
Conclusion
The book is quite excellent as it offers much more needed detail than we got from Domain-Driven Design by Eric Evans as well as puts a number of design patterns in a bit more perspective in the given context. I considered this book an excellent buy as it is difficult to find books that talk about such a breadth of topics and bring them together in a very pragmatic manner.
Just a quick note that if you're looking for an end-to-end executable sample showing off Domain-Driven Design in action you will be a bit disappointed as the book doesn't go that far. You've got enough to build upon by reading the book, but it doesn't come on a silver platter.
That being said, I think the market is ripe for a person(s) to author a book that expands upon Jimmy's ideas. A book that implements and discusses the following design techniques mentioned above into an actual executable application using open source tools like NHibernate, Spring.NET, NMock, NUnit, etc., would be the icing on the cake and a sure winner.