Onion Architecture
E679172
Onion Architecture is a software architectural pattern that emphasizes a domain-centric design with concentric layers that enforce dependency inversion and separation of concerns.
Statements (50)
| Predicate | Object |
|---|---|
| instanceOf |
architectural style
ⓘ
software architectural pattern ⓘ |
| contrastsWith | layered architecture with outward dependencies ⓘ |
| definesRule |
UI depends on application and domain layers
ⓘ
data access is implemented in outer layers ⓘ dependencies point inwards toward the domain ⓘ infrastructure depends on domain, not vice versa ⓘ inner layers must not depend on outer layers ⓘ |
| emphasizes |
business logic
ⓘ
domain model ⓘ independence from databases ⓘ independence from frameworks ⓘ independence from infrastructure ⓘ independence from user interface ⓘ |
| encourages |
use of dependency injection containers
ⓘ
use of repositories for persistence abstraction ⓘ writing unit tests against domain interfaces ⓘ |
| focusesOn | core domain as the center of the system ⓘ |
| goal |
enable easier replacement of infrastructure
ⓘ
improve testability of domain logic ⓘ isolate business logic from technical concerns ⓘ reduce coupling to frameworks ⓘ support long-term maintainability ⓘ |
| hasDesignPrinciple |
dependency inversion
ⓘ
domain-centric design ⓘ encapsulation of business rules ⓘ loose coupling ⓘ maintainability ⓘ separation of concerns ⓘ testability ⓘ |
| hasLayer |
application layer
ⓘ
core layer ⓘ domain layer ⓘ infrastructure layer ⓘ outer layers ⓘ presentation layer ⓘ |
| organizesCodeAs | concentric layers ⓘ |
| relatedTo |
Clean Architecture
NERFINISHED
ⓘ
Hexagonal Architecture NERFINISHED ⓘ |
| separates |
application services from user interface
ⓘ
business rules from persistence concerns ⓘ domain logic from infrastructure code ⓘ |
| similarConcept | ports and adapters architecture ⓘ |
| supports | domain-driven design ⓘ |
| typicalUseCase |
complex business systems
ⓘ
domain-driven design projects ⓘ enterprise applications ⓘ |
| usesPattern |
dependency inversion principle
ⓘ
interfaces for abstractions ⓘ inversion of control ⓘ |
Referenced by (1)
Full triples — surface form annotated when it differs from this entity's canonical label.