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.
Autorentext
Tim McCarthy is a freelance consultant who architects, designs and builds highly scalable layered web and smart client applications utilizing the latest Microsoft platforms and technologies. Tim is a Microsoft MVP in Solutions Architecture, and his 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, Windows Presentation Foundation), SQL Server, Active Directory, MS Exchange development, UDDI, SharePoint, and Service Oriented Architecture (SOA) applications.
Tim has worked as both a project technical lead/member as well as being in a technical consulting role for several Fortune 500 companies. He has held the Microsoft Certified Solution Developer (MCSD) and Microsoft Certified Trainer (MCT) certifications for several years, and was one of the first wave of developers to earn the Microsoft Certified Application Developer (MCAD) for .NET and MCSD for .NET certifications. He also holds the Microsoft Certified Database Administrator certification for SQL Server 2000. Tim is also certified as an IEEE Certified Software Development Professional, and he is one of only 550 people to hold this certification in the world.
Tim has been an author and technical reviewer for several books from Wrox Press. His other books include being a lead author on Professional VB 2005 , several editions of Professional VB.NET , Professional Commerce Server 2000 , and Professional ADO 2.5 Programming . He also has written and presented a DVD titled SharePoint Portal Services Programming 2003 . Tim has written numerous articles for the Developer .NET Update newsletter, developed packaged presentations for the Microsoft Developer Network (MSDN), and wrote a whitepaper for Microsoft on using COM+ services in .NET. He has also written articles for SQL Server Magazine and Windows & .NET Magazine.
Klappentext
.NET Domain-Driven Design with C# Problem Design Solution
As the first technical book of its kind, this unique resource walks you through the process of building a real-world application usingDomain-Driven Design implemented in C#. Based on a real application for an existing company, the project featured throughout the book focuses on the Domain Model and the framework that is being built to support it.
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, offering you indispensable, hands-on practice at creating code that builds applications.
What you will learn from this book
- When, why, and how to use Domain-Driven Design
- How to design and build the initial Domain Model
- What to do to achieve ?Persistence Ignorance?
- Ways to build a Repository framework for the Domain Model
- Techniques for applying TDD to the Domain Model
- How to apply the Model-View-ViewModel Pattern
- How to build a client-side membership system
- What to do to synchronize the client application with the server
Who this book is for
This book is for experienced C# .NET developers who want to improve their techniques for writing applications that perform well and are highly scalable.
Wrox Problem - Design - Solution references give you solid, workable solutions to real-world development problems. Each is devoted to a single application, analyzing every problem, examining relevant design issues, and implementing the ideal solution.
Inhalt
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 Aggr…