26. Reference Direction vs Control Direction
Presentation
Layer
Data Access
Layer
Business Logic
Layer
Reference DirectionControl Direction
27. Ports & Adapters Introduction
Allow an application to equally be driven by users, programs, automated test
or batch scripts, and to be developed and tested in isolation from its eventual
run-time devices and databases.
35. Domain
Hexagonal - Domain
Web API
Message
Service
Scheduler
Persistence
Adapter
Command
Adapter
Notification
Adapter
36. Domain
Hexagonal - Persistence Port
Web API
Message
Service
Scheduler
Persistence
Adapter
Command
Adapter
Notification
Adapter
37. Domain
Hexagonal - Command Port
Web API
Message
Service
Scheduler
Persistence
Adapter
Command
Adapter
Notification
Adapter
38. Domain
Hexagonal - Notification Port
Web API
Message
Service
Scheduler
Persistence
Adapter
Command
Adapter
Notification
Adapter
39. Hosts Are Types of Adapters
Web Service
Test Harness
Command
Line
Daemon
Windows
Service
Graphical UI
40. Domain
Hexagonal - Host Port
Web API
Message
Service
Scheduler
Persistence
Adapter
Command
Adapter
Notification
Adapter
Host Port
41. Advantages - Domain Testability
Domain
Web API
Message
Service
Scheduler
Persistence
Adapter
Command
Adapter
Notification
Adapter
Host Port
42. Advantages - Boundaries
Web API
Message
Service
Scheduler
Domain
Persistence
Adapter
Command
Adapter
Notification
Adapter
43. Advantages - Alternative Adapters
Domain
Web API
Message
Service
Scheduler
Persistence.Adapter Command.Adapter
Notification
Adapter
Host Port
Persistence.Adapter
Csv
Command.Adapter
File
44. Domain
Notification via SMTP
Web API
Message
Service
Scheduler
Persistence
Adapter
Command
Adapter
Notification
Adapter
Host Port
45. Takeaways
● Onion Architecture, Clean Architecture and Ports & Adapters are
essentially the same thing
● Ports are just a name given to a common group of abstractions in your
domain
● Adapters are a group of specific implementations of ports
● Example repository on github for .NET
● Ports & Adapters is an architectural style that will produce framework
independent applications