Ehsan Ghanbari

Experience, DotNet, Solutions

Patterns, Principles, and practices of Domain-Driven Design

I don't know why I'm writing this blog post right now! I was supposed to write it when I was honored to receive this topless book as a gift by Scott Millett about 4 years ago! Now It's my send time that I'm reading this book and it's literally phenomenal one. I've read all the books written by Mr. Millett and I adore all of them. You will learn more than DDD and patterns by reading this book, and, I do believe that every single paragraph of this book deserves to be focused for several times.


If you are interested in software architecture and design patterns, firstly, read this book! I think you should have some architectural backgrounds in your mind, despite, everything has been covered in detail and approximately from scratch in this book.  For more information about the book you can see the table of content here and for purchasing the book you can refer to Amazon.

Introducing book: Fast websites

Although I've decided to write a blog post about the key points of this book after finishing it But before that I want to tell you how I enjoy by reading this book in the way of coming back to home in the taxi from my workplace!

As every developer should know something about website optimization, this book shares some good experiences in building fast web applications. there are dozens of techniques you can apply immediately to make your sites and applications faster.


Table of Contents


  1. High-speed websites
  2. First steps toward a faster website


  1. Compression
  2. Caching: The sell-by date
  3. Minifying and bundling static files
  4. HTML optimization tips
  5. Image optimization
  6. ETags
  7. Content Delivery Networks


  1. Tweaking ASP.NET MVC performance
  2. Tweaking ASP.NET Web Forms performance

Definition of Amazon about the book:

Fast ASP.NET Websites delivers just what it promises—practical, hands-on guidance to create faster, more efficient ASP.NET sites and applications. This book offers step-by-step .NET-specific examples showing you how to apply classic page optimization tips, ASP.NET-specific techniques, and ways to leverage new HTML5 features.


Introducing book: Pro .Net best Practices

Recently I've started reading this book, so I can't talk about it more as I've just read only first chapter. It seems to be a good experience, I think it's different and covers lots of best practices of real world issues on making software. If you take a look at its content you will find it convers C# constrains, Testing frameworks, Continues integration, Code analyses and … I don't advice you to purchase it because I haven't completely read it but you can do if you want in here


Pro .net best practices



Introducing the book by Amazon:

"Pro .NET Best Practices is a practical reference to the best practices that you can apply to your .NET projects today. You will learn standards, techniques, and conventions that are sharply focused, realistic and helpful for achieving results, steering clear of unproven, idealistic, and impractical recommendations. 

Pro .NET Best Practices covers a broad range of practices and principles that development experts agree are the right ways to develop software, which includes continuous integration, automated testing, automated deployment, and code analysis. Whether the solution is from a free and open source or a commercial offering, you will learn how to get a continuous integration server running and executing builds every time code changes. You will write clearer and more maintainable automated testing code that focuses on prevention and helping your .NET project succeed. By learning and following the .NET best practices in this book, you will avoid making the same mistakes once."

Introducing syncfusion books

Have you ever heard about syncfusion? It has lots of free resources on different kinds of technologies and famous programming languages. I've read several books of this publication such as JavaScript, TypeScript, Knockoutjs, Unit test, jQuery and F#.

they are free and averaging around 100 pages. Most of the time you don't need to read a reference book about 1500 pages to learn something!  If you want to jump start over any programming language, framework or technology, trust to all of this publication's books. I've got all of the free e-books of syncfusion and definitely want to read them.




You can get the free e-books of syncfusion here, I recommend you to get these e-books based on your fields of skill as they are free and full of useful contents written by experienced people. I hope that syncfusion publish more books on various fields such as NoSQL databases, architecture, patterns and ...

finally thanks for Jennifer on the marketing team at Syncfusion for designing the above image for me, I've read all of the books in the image! cheers...

Introducing book: Pro design patterns

Professional ASP.NET Design Patterns by Scott Millett is all about showing you how to use the power of design patterns and core design principles in real ASP.NET applications. The goal of this book is to educate developers on the fundamentals of object-oriented programming, design patterns, principles, and methodologies. Each chapter contains an enterprise application in to show using patterns in real-world applications. Design patterns and principles enable loosely coupled and highly cohesive code, which will improve your code’s readability, flexibility, and maintenance. Each chapter addresses a layer in an enterprise ASP.NET application and shows how proven patterns, principles, and best practices can be leveraged to solve problems and improve the design of your code.

Professional ASP.NET Design Patterns is for ASP.NET developers who are comfortable with the .NET framework but are looking to improve how they code and understand why design patterns, design principles, and best practices will make their code more maintainable and adaptable. Readers who have had experience with design patterns before may wish to skip Part 1 of the book, which acts as an introduction to the Gang of Four design patterns and common design principles, including the S.O.L.I.D. principles and Martin Fowler’s enterprise patterns. All code samples are written in C# but the concepts can be applied very easily to VB.NET.


Design Pattern


Book's content in nutshell:

  • The origins of the Gang of Four design patterns, their relevance in today’s world, and their decoupling from specific programming languages.
  • An overview of some common design principles and the S.O.L.I.D. design principles follows, and the chapter ends with a description of Fowler’s enterprise patterns.
  • Layering Your Application and Separating Your Concerns
  • A description of the Transaction Script pattern followed by the Active Record, with an exercise to demonstrate the pattern using the Castle Windsor project.
  • The Domain Model pattern demonstrated in an exercise with NHibernate and a review of the domain-driven design (DDD) methodology
  • Patterns and principles that can be used construct your objects and how to make sure that you are building your application for scalability and maintainability: Factory, Decorator, Template, State, Strategy, Composite, Specification and Layer Supertype.
  • Design principles that can improve your code’s maintainability and flexibility; these include Dependency Injection, Interface Segregation, and Liskov Substitution Principle
  • Service Oriented Architecture, the Facade design pattern, messaging patterns such as Document Message, Request-Response, Reservation, and the Idempotent pattern
  • The Data Access Layer: Two data access strategies are demonstrated to help organize your persistence layer: Repository and Data Access Objects. Enterprise patterns and principles that will help you fulfill your data access requirement needs elegantly, including Lazy Loading, Identity Map, Unit of Work, and the Query Object.
  • An introduction to Object Relational Mappers and the problems they solve.
  • An enterprise Domain Driven exercise with POCO business entities utilizing both NHibernate and the MS Entity Framework.
  • The Presentation Layer: how you can tie your loosely coupled code together Structure Map and an Inversion of Control container.
  • Presentation patterns, including letting the view be in charge with the Model-View-Presenter pattern and ASP.NET web forms, the Front Controller presentation pattern utilizing the Command and Chain of Responsibility patterns, as well as the Model-View-Controller Pattern, implemented with the ASP.NET MVC framework and Windsor’s Castle Monorail framework. The final presentation pattern covered is PageController as used in ASP.NET web forms.
  • A pattern that can be used with organizational patterns, namely the ViewModel pattern and how to automate domain entities to ViewModel mapping with AutoMapper
  • The User Experience Layer: AJAX, JavaScript libraries, including jQuery. AJAX patterns: Ajax Periodic Refresh and Timeout patterns, maintaining history with the Unique URL pattern, client-side data binding with JTemplate, and the Ajax Predictive Fetch pattern
  • An end-to-end e-commerce store case study with ASP.NET MVC, NHibernate, jQuery, JSON, AutoMapper, ASP.NET membership provider and a second 3rd party authentication method, and PayPal as a payment merchant


I dare say this is the best book I've ever read about computer science! I really enjoy with it, although I've read it for twice I want to read it another time. You can purchase the book on

About Me

Ehsan Ghanbari

Hi! my name is Ehsan. I'm a developer, passionate technologist, and fan of clean code. I'm interested in enterprise and large-scale applications architecture and design patterns and I'm spending a lot of my time on architecture subject. Since 2008, I've been as a developer for companies and organizations and I've been focusing on Microsoft ecosystem all the time. During the&nb Read More

Post Tags
Pending Blog Posts
Strategic design
Factory Pattern
time out pattern in ajax
Selectors in Jquery
Peridic pattern
How to query over Icollection<> of a type with linq
How to use PagedList In MVC
Domain driven design VS model driven architecture
What's the DDD-lite?
Using Generic type for type casting in F#