Differences

This shows you the differences between two versions of the page.

Link to this comparison view

it:ad:patterns:ddd [2019/03/24 12:17] (current)
Line 1: Line 1:
 +# IT:​AD:​Patterns:​DDD #
  
 +
 +
 +<callout type="​Navigation"​ class="​small">​
 +* [[../​|(UP)]]
 +{{indexmenu>​.#​2|nsort tsort}}
 +
 +
 +
 +
 +
 +## Domain Oriented Design ##
 +* THe app's architecture is oriented/​dominated by focus on encapsulating the Domain (the Client'​s Biz) isolating it from technology (perishable).
 +* Notice the word *Oriented*: the app is skewed (if you will) towards the Domain, not the Technology.
 +
 +
 +</​callout>​
 +
 +
 +## Overview ##
 +
 +### Simple 3 Tier Application
 +
 +![](https://​dl.dropboxusercontent.com/​u/​11851202/​Posted/​IT/​AD/​Design/​Patterns/​DDD/​DDD%20-%203Tier.png)
 +
 +* Download the source Visio:
 +  * https://​dl.dropboxusercontent.com/​u/​11851202/​Posted/​IT/​AD/​Design/​Patterns/​DDD/​DDD%20-%203Tier.vsd
 +
 +
 +### Diagrams
 +
 +<uml>
 +!includeurl http://​skysigal.com/​_media/​resources/​configuration/​plantuml/​minimalist.txt
 +
 +class "​Application Service Facade"​ as SF
 +class "​Application Services"​ as AS
 +class "​Infrastructure Services"​ as IS
 +class "​Shared (Models)"​ as SM
 +class "​Domain Services"​ as DS
 +class "​Vendor Libs\nand Services"​ as 3RD
 +class "​Data\nServices"​ as DATA
 +SF --> AS : protect
 +AS --> IS : orchestrate
 +AS --> SM : use
 +AS --> DS : orchestrate
 +IS -> SM : use
 +SM <- DS : use
 +
 +IS --> 3RD
 +IS --> DATA
 +
 +</​uml>​
 +
 +
 +
 +
 +
 +
 +### Diagrams
 +
 +<uml>
 +!includeurl http://​skysigal.com/​_media/​resources/​configuration/​plantuml/​minimalist.txt
 +
 +title Modular DDD
 +
 +together {
 +class "​App.Core.Application"​ as ACA
 +class "​App.Core.Infrastructure"​ as ACI
 +class "​App.Core.Shared"​ as ACS
 +class "​App.Core.Domain"​ as ACD
 +
 +ACA --> ACI : orchestrate
 +ACA --> ACS : use
 +ACA --> ACD : orchestrate
 +ACI -> ACS : use
 +ACS <- ACD : use
 +}
 +
 +together {
 +class "​App.Mod1.Application"​ as AM1A
 +class "​App.Mod1.Infrastructure"​ as AM1I
 +class "​App.Mod1.Shared"​ as AM1S
 +class "​App.Mod1.Domain"​ as AM1D
 +
 +AM1A --> AM1I : orchestrate
 +AM1A --> AM1S : use
 +AM1A --> AM1D : orchestrate
 +AM1I -> AM1S : use
 +AM1S <- AM1D : use
 +}
 +
 +
 +ACA --> AM1A
 +
 +ACI <-- AM1I
 +ACS <-- AM1S
 +ACD <-- AM1D
 +</​uml>​
 +
 +
 +
 +
 +## References ​
 +
 +* http://​domaindrivendesign.org/​
 +* https://​books.google.co.nz/​books?​id=HGyraCo-u_EC&​printsec=frontcover#​v=onepage&​q&​f=false
 +* http://​msdn.microsoft.com/​en-us/​magazine/​dd419654.aspx
 +* {{ :​resources:​books:​domain_driven_design_quickly:​dddbook.pdf }}