.NET Domain-Driven Design with C# (Programmer to Programmer Series)

( 3 )


As the first technical book of its kind, this unique resource walks you through the process of building a real-world application using Domain-Driven Design implemented in C#. Based on a real application for an existing company, each chapter is broken down into specific modules so that you can identify the problem, decide what solution will provide the best results, and then execute that design to solve the problem. With each chapter, you'll build a complete project from ...

See more details below
Other sellers (Paperback)
  • All (12) from $6.28   
  • New (4) from $20.80   
  • Used (8) from $6.26   
Sending request ...


As the first technical book of its kind, this unique resource walks you through the process of building a real-world application using Domain-Driven Design implemented in C#. Based on a real application for an existing company, each chapter is broken down into specific modules so that you can identify the problem, decide what solution will provide the best results, and then execute that design to solve the problem. With each chapter, you'll build a complete project from beginning to end.

Read More Show Less

Product Details

  • ISBN-13: 9780470147566
  • Publisher: Wiley
  • Publication date: 4/28/2008
  • Series: Programmer to Programmer Series
  • Edition number: 1
  • Pages: 432
  • Product dimensions: 7.30 (w) x 9.10 (h) x 1.10 (d)

Meet the Author

Tim McCarthy is a freelance consultant who architects,designs and builds highly scalable layered web and smart clientapplications utilizing the latest Microsoft platforms andtechnologies. Tim is a Microsoft MVP in Solutions Architecture, andhis expertise covers a wide range of Microsoft technologies,including, but not limited to, the following: .NET Framework(ASP.NET/Smart Clients/VSTO/Workflow/Web Services, WindowsPresentation Foundation), SQL Server, Active Directory, MS Exchangedevelopment, UDDI, SharePoint, and Service Oriented Architecture(SOA) applications.
Tim has worked as both a project technical lead/member as well asbeing in a technical consulting role for several Fortune 500companies. He has held the Microsoft Certified Solution Developer(MCSD) and Microsoft Certified Trainer (MCT) certifications forseveral years, and was one of the first wave of developers to earnthe Microsoft Certified Application Developer (MCAD) for .NET andMCSD for .NET certifications. He also holds the Microsoft CertifiedDatabase Administrator certification for SQL Server 2000. Tim isalso certified as an IEEE Certified Software DevelopmentProfessional, and he is one of only 550 people to hold thiscertification in the world.
Tim has been an author and technical reviewer for several booksfrom Wrox Press. His other books include being a lead author onProfessional VB 2005 , several editions of ProfessionalVB.NET , Professional Commerce Server 2000 , andProfessional ADO 2.5 Programming . He also has written andpresented a DVD titled SharePoint Portal Services Programming2003 . Tim has written numerous articles for the Developer .NETUpdate newsletter, developed packaged presentations for theMicrosoft Developer Network (MSDN), and wrote a whitepaper forMicrosoft on using COM+ services in .NET. He has also writtenarticles for SQL Server Magazine and Windows &.NET Magazine.

Read More Show Less

Table of Contents

Acknowledgments xv

Introduction xvii

Chapter 1: Introducing the Project: The SmartCA Application 1

The Problem 1

The Design 4

Reliability and Availability 4

Scalability 5

Maintainability 5

Rich Client Application Functionality 5

Offline Capable 5

Web Access 5

Intelligent Installation and Auto-Update Functionality 5

Additional Client Device Support 5

The Solution 6

Fulfilling the Reliability, Availability, Scalability, Offline Capable, and Additional Client Device Support Requirements 6

Fulfilling the Maintainability Requirement 7

Fulfilling the Rich Client Application Functionality Requirement 9

Fulfilling the Web Access Requirement 11

Fulfilling the Intelligent Installation and Auto-Update Functionality Requirement 11

Summary 11

Chapter 2: Designing the Layered Architecture 13

The Problem 13

The Design 13

Designing the Visual Studio Solution 13

Designing the Architectural Layers 14

The Solution 18

Implementing the Visual Studio Solution 19

Implementing the Architectural Layers 19

Summary 53

Chapter 3: Managing Projects 55

The Problem 55

The Design 55

Designing the Domain Model 56

Defining the Project Aggregate 56

Defining the Aggregate Boundaries 57

Designing the Repositories 58

Writing the Unit Tests 60

The Solution 65

The Project Class 65

The Repository Implementations 77

The Service Class Implementations 90

The Project Information ViewModel Implementation 92

The Project Information View Implementation 102

Summary 107

Chapter 4: Companies and Contacts 109

The Problem 109

The Design 109

Designing the Domain Model 110

Defining the Company and Contact Aggregates 110

Defining the Aggregate Boundaries 111

Designing the Repositories 112

Writing the Unit Tests 114

The Solution 119

The Company Class 119

The Contact Class 121

The ProjectContact Class 123

The Repository Implementations 124

The Service Class Implementations 134

The Company ViewModel 137

The Company View 144

The Project Contact View Model 148

The Project Contact View 154

Summary 156

Chapter 5: Submittal Transmittals 157

The Problem 157

The Design 158

Designing the Domain Model 158

Defining the Submittal Aggregate 159

Defining the Aggregate Boundaries 159

Designing the Repository 160

Writing the Unit Tests 161

The Solution 164

The Submittal Repository Implementation 178

The Submittal Service Implementation 187

The Submittal View Model 188

The Submittal View 192

Summary 197

Chapter 6: Requests for Information 199

The Problem 199

The Design 200

Designing the Domain Model 200

Defining the RFI Aggregate 201

Defining the Aggregate Boundaries 202

Designing the Repository 203

Writing the Unit Tests 204

The Solution 207

The RFI Repository Implementation 213

The RFI Service Implementation 223

The RFI ViewModel Classes 224

The RFI View 231

Summary 232

Chapter 7: Proposal Requests 233

The Problem 233

The Design 234

Designing the Domain Model 234

Designing the Proposal Request Aggregate 235

Defining the Aggregate Boundaries 236

Designing the Repository 237

Writing the Unit Tests 239

The Solution 242

The Proposal Request Class Private Fields and Constructors 242

The ProposalRequest Properties 245

The Validate Method 248

The Proposal Request Repository Implementation 253

The Proposal Request Service Implementation 257

The Proposal Request View Model Class 258

The Proposal Request View 260

Summary 263

Chapter 8: Change Orders 265

The Problem 265

The Design 266

Designing the Domain Model 266

Designing the Change Order Aggregate 267

Defining the Aggregate Boundaries 268

Designing the Repository 268

Writing the Unit Tests 271

The Solution 271

The Change Order Repository Implementation 283

The Change Order Service Implementation 288

The Change Order View Model Class 289

The Change Order View 292

Summary 293

Chapter 9: Construction Change Directives 295

The Problem 295

The Design 295

Designing the Domain Model 296

Designing the Construction Change Directive Aggregate 297

Defining the Aggregate Boundaries 298

Designing the Repository 299

Writing the Unit Tests 300

The Solution 300

The Construction Change Directive Class Private Fields and Constructors 300

The Construction Change Directive Repository Implementation 307

The Construction Change Directive Service Implementation 313

The Construction Change Directive ViewModel Class 314

The Construction Change Directive View 324

Summary 325

Chapter 10: Synchronizing With the Server 327

The Problem 327

The Design 327

Redesigning the Unit of Work 328

Designing the Synchronization 330

Writing the Unit Tests 331

The Solution 333

Unit of Work Refactoring 333

Synchronizing with the Synchronizer Class 349

Summary 356

Chapter 11: The Client Membership System 357

The Problem 357

The Design 357

Password Security 358

Designing the Client Membership System 358

The Solution 359

The Client Membership System Domain Model Classes 360

Client Membership System Unit Tests 388

Summary 389

Index 391

Read More Show Less

Customer Reviews

Average Rating 3.5
( 3 )
Rating Distribution

5 Star


4 Star


3 Star


2 Star


1 Star


Your Rating:

Your Name: Create a Pen Name or

Barnes & Noble.com Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & Noble.com that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & Noble.com does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at BN.com or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation


  • - By submitting a review, you grant to Barnes & Noble.com and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Noble.com Terms of Use.
  • - Barnes & Noble.com reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & Noble.com also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on BN.com. It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously
Sort by: Showing all of 3 Customer Reviews
  • Posted September 9, 2011

    Good read..High recommended!

    This book has practical implementations of DDD patterns like Layered Super Type, Unit of work, Persistence Ignorance, Repository, as well as the common patterns like Template method, Specification, and Visitor. I liked the way Tim organized the book, every section enhances and refactors the code of the previous sections. Overall very good read! It's a good reference material for .NET developers who likes to implement the DDD in their software development, along with Domain-Driven Design: Tackling Complexity in the Heart of Software, Applying Domain - Driven Design and Patterns.

    Was this review helpful? Yes  No   Report this review
  • Posted September 5, 2009

    more from this reviewer

    Read fowler's book first, unless you want to learn by osmosis

    This was one book that I was very excited to read. Chapter 2 was when it hit me, this book wasn't what I thought! The entire book is nothing more than a walk-through of an application that the author is building, using DDD. I honestly don't see the point in this book at all, except for putting DDD to practical use, but even still, the author fails to explain some of the concepts in a clean manner. Very often throughout the book does the author make reference to Martin Fowler's book as well as 2 other authors. In fact, the author admits that he wrote this book after reading the other authors' books.

    If you are able to learn through osmosis then this book is for you. I was able to pick up some things and I was happy about that, but it just wasn't worth finishing the book. I suggest you read fowler's book based on the numerous recommendations that the author gave.

    Was this review helpful? Yes  No   Report this review
  • Anonymous

    Posted July 28, 2008

    Biased but a Good Book

    So let me state up front I've known Tim McCarthy for many years and we also worked together until recently. Having said that I recommend this book to those looking to design a custom business application, or those looking to understand how to create a custom business application. The book does an excellent job of taking a hands-on approach and does an excellent job of showing the role of refactoring over the life of a project.

    Was this review helpful? Yes  No   Report this review
Sort by: Showing all of 3 Customer Reviews

If you find inappropriate content, please report it to Barnes & Noble
Why is this product inappropriate?
Comments (optional)