IT:AD:Patterns:DDD

## 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.

Simple 3 Tier Application

Diagrams


!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

Diagrams


!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