Loading in 2 Seconds...
Loading in 2 Seconds...
Building an Offline Smart Client using Domain-Driven Design Principles. Tim McCarthy. Agenda. DDD Definitions/Patterns The SmartCA Application Designing the Layered Architecture WPF and the Model-View-ViewModel Pattern Synchronizing the Data. Agenda. DDD Definitions/Patterns
Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.
Most development time is still spent writing plumbing code instead of business logic
Typically, the UI will change a LOT more than the business logic
The model is a great tool for communication between developers and users
.NET has good support for it!
Represent an aspect of the domain with NO conceptual identity
Use when you care about what something is, not who they are
Same thing as a DTO [Fowler PoEAA]
Simple, immutable objects
The root ENTITY has global identity
ENTITIES inside the boundary have local identity
Nothing outside the AGGREGATE boundary can hold a reference to anything inside, except to the root ENTITY
Objects in the AGGREGATE can hold references to other AGGREGATE roots
…a few more
An operation offered as an interface that stands alone in the model
Does not fit into any of the objects in the model
To be used judiciously (do not turn your app into a Transaction Script)
Use when an operation is an important domain concept
Provide access to AGGREGATE roots
Represents all objects of a certain type as a conceptual set (usually emulated)
Behaves like a collection, e.g. Add(), Remove(), FindBy(id), etc.
Reliability and Availability
Rich client application functionality
Intelligent installation and auto-update functionality
Additional client device support
Layers represented in the SmartCA Visual Studio Solution
Unit of Work
Repository Base Classes
Repository Framework Implementation
Entity Factory Builder
Entity Factory Framework Implementation
Declarative Programming (Using XAML)
Built-in Command Pattern
Strong Data Binding Support
[Evans]: Domain-Driven Design: Tackling Complexity in the Heart of Software, Evans, Addison-Wesley (2003)
[Fowler]: Patterns of Enterprise Application Architecture, Fowler, Addison-Wesley (2003)
[Nilsson]: Applying Domain Driven Design and Patterns: using .NET, Addison Wesley 2006