.NET Domain-Driven Design with C#: Problem - Design - SolutionISBN: 978-0-470-14756-6
Paperback
432 pages
April 2008
This title is out-of-print and not currently available for purchase from this site.
|
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