Introduction
|
Hardcover: 576 pages
Publisher: Addison-Wesley Professional; 1 edition (May 18, 2006)
Language: English
ISBN-10: 0321268202
ISBN-13: 978-0321268204
|
Applying Domain-Driven Design and Patterns is a practical guide of patterns, domain-driven design, and test-driven development in .NET environments. It combines the ideas of Domain Driven Design (Evans) with Patterns of Enterprise Application Architecture (Fowler)
You’ll learn one way to apply DDD: prepare domain models for application infrastructure; support business rules; provide persistence support; plan for the presentation layer and UI testing; and design for service orientation or aspect orientation.
In the book everything is explained with clear pieces of codes in C# and SQL Server
Content
Part 1: Background
Chapter 1. Values to Value: Or Embarrassing Ramblings When Self-Reflecting on the Last Few Years
Chapter 2. A Head Start on Patterns
Chapter 3. TDD and Refactoring
Part II: Applying DDD
Chapter 4. A New Default Architecture
Chapter 5. Moving Further with Domain-Driven Design
Chapter 6. Preparing for Infrastructure
Chapter 7. Let the Rules Rule
Part III: Applying PoEaa
Chapter 8. Infrastructure for Persistence
Chapter 9. Putting NHibernate into Action
Part IV: What's Next?
Chapter 10. Design Techniques to Embrace
Chapter 11. Focus on the UI
The book is really enjoyable and presented in a humble manner, the author explain how to put in practise Domain Driven Design, globally it seems to be a walk through Jimmy's experiences ,and from time to time it points out pros and cons of differents techniques and patterns such as patterns, inversion of control, testing, high and low level design...
During all the book, we have references to patterns in support of described architecture, giving a strong background to the flow of the text and Nilsson conclusions. It also deepen the reader understanding and fill a lack of knowledge in the area
There is a good compromising between theoretical references and clear “Down to Earth” pieces of code real world examples.
The book is not for beginners or intermediate programmers, you need a really good understanding of Oriented Object Programing, Design Patterns, Test-Driven Design and Refactoring
Part I: Background
The book jump around many different topics explaining a lot of concepts useful, with little notes everywhere. The author try to sense all topics, all concepts around Domain Driven Design or software programming in general, patterns (in particular state pattern), TDD, domain concepts. The little notes helps to go deeper in a subject, to have more explanations on a subject because here we don’t have time to explain everything and we have to go to the main topic.
Part II: Applying DDD
Since the title is applying DDD the focus is on building the right model for the example, leaving out infrastructure and security concerns for a moment.
We are in the head of the author, he starts the domain to build it. We’re flying with his ideas, how to construct things, first the domain, then infrastructure, how to cope with repositories and unit of work (transactions).
I appreciate that we understand the need to begin the design with the domain and not database centric, and how it will solve for us a lot of problems.
This part is a good put in practice and complement of Eric Evans book “Domain-Driven Design: Tackling Complexity in the Heart of Software“
Part III: Applying PoEaa
PoEaa is Patterns of Enterprise Application Architecture,a famous book from Martin Fowler which presents the principal patterns used in orms and big applications.
We’ll also see Infrastructure in action, and it’s focused on nHibernate. We’ll see practical code to implement this layer, how to choose between query and specification patterns. It’s very good, however is it’s a bit too focused and not very helpful if we don’t use nHibernate.
Part IV :What's next?
Get the pleasure of guest writers talking about:
- various design techniques to embrace when using Domain-Driven Design
- other domain models other than what Jimmy discusses.
It’s great stuff and I recommend 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
Conclusion
Summing up, Applying DDD is a good panoramic on practicing Domain-Driven Design, but also on implementing patterns and using modern tools and approaches like Dependency Injection and Test-Driven Development. It can also be read along or after the original DDD book to improve the understanding of Factories, Repositories and other domain patterns.