Click here to Skip to main content
13,347,998 members (66,303 online)
Click here to Skip to main content
Add your own
alternative version


9 bookmarked
Posted 10 Jul 2014

Applying Domain-Driven Design and Patterns Book

, 10 Jul 2014
Rate this:
Please Sign up or sign in to vote.
Review of the book how to apply DDD in .NET

Editorial Note

This article is in the Book Review chapter. Reviews are intended to provide you with information on books - both paid and free - that others consider useful and of value to developers. Read a good programming book? Write a review!



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


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


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.





This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Dominique Gilleman
Belgium Belgium
I'm a software engineer working for a company in the field of laboratory services. I started programming at 10 years old, first in basic and pascal, and now in C++ and C#

My main interests are Software architecture, Team leading, Algorithms and complex problems.
I did independant project in image analysis, clustering software, 3D visualization and Enterprise social networks

You can have more information on my website:

You may also be interested in...


Comments and Discussions

-- There are no messages in this forum --
Permalink | Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.180111.1 | Last Updated 11 Jul 2014
Article Copyright 2014 by Dominique Gilleman
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid