Understanding Foundational Architectural Principles Slides
Understanding Foundational Architectural Principles Slides
Architectural Principles
Gill Cleeren
CTO Xpirit Belgium
@gillcleeren | xpirit.com/gill
Overview
Foundational design principles
Different application architecture styles
Understanding Clean Architecture
Foundational Architectural Principles
Important Design Principles
Dependency Separation of
Single responsibility
inversion concerns
Persistence
DRY
ignorance
Dependency Inversion
- Decoupling modules
Class B Class C
Separation of Concerns
Easier to maintain
Single Responsibility
OO terminology
Each block should just have one single
responsibility which it encapsulates
More, new classes are created
All-in-one
architecture
All-in-one Architecture
Promote reuse
Easier to maintain
Pluggable
Typical Layered Architecture
Presentation layer
Separate concerns
Separation of concerns
Loose coupling
Independent of “external” influences
- UI
- Database
Circular Design
Different circles for different “layers”
User interface
Application Core
- Abstractions (high-level)
- Interfaces and entities
Interfaces - Business logic at the center of the
Core
Entities
application (use-cases)
- Agnostic to outer circles
Application Core - Has no dependencies on external
influences
Infrastructure
Understanding Clean Architecture
Outer circles are infrastructure
User interface
(mechanisms)
- Depends on Core
- Implements interfaces from Core
Infrastructure
Understanding Clean Architecture
User interface
Interfaces
Entities
Application Core
Infrastructure
Two Important Principles
Application Core
Infrastructure
Understanding Clean Architecture
UI
User interface
- API/MVC/Razor
- Specific ASP.NET Core items
- Middleware
Interfaces - Filters
Entities - Interact with services through MediatR
- Loose coupling
Application Core - Lightweight controllers
Infrastructure
Clean Architecture Benefits