I am learning and working out a sample project applying onion architecture and domain driven design.
As per my understanding I have drafted a small presentation and attached as an image in this post.
I need clarifications on layers of onion architecture and its implementation. Could you explain based on my presentation?
Core Project:
Domain Layer - entities, value objects, aggregate root, domain exception objects.
Domain Service Layer - business logic contracts.
Infrastructure Service Layer - persistence contracts, repository contracts, email and sms contracts, domain events and integration events contracts.
Application Service Layer - orchestration of infrastructure and domain service interfaces for uses cases.
Indentity Project:
Web Api Layer - controllers, configuration, composition root etc.
Infrastructure Layer - persistence implementation, repository implementation, email and sms implementation, message queuing etc.
Where would I implement contracts of the domain service layer from core project?
The Onion architecture is cut into these layers :
In your exemple, you have two projects, each project is an onion with all layers.
In addition, don't forget to design/cut your Subdomains with the business expert views. Technical considerations are not a good way for this.