Onion Architecture explained Building maintainable software Medium

One of the core concepts in DDD is the Domain Model.A Domain Model is an entity that incorporates behavior and data from some business model. The cathedral was built in 1912 to serve Russian immigrants in the Tremont area of Cleveland. There are architectures like clean, hexagonal and onion with the same objectives and some differences in their implementation.

onion architecture

Also, we are using the Contracts project to define the Data Transfer Objects (DTO) that we are going to consume with the service interfaces. Using dependency inversion throughout the project, depending on abstractions (interfaces) and not the implementations, allows us to switch out the implementation at runtime transparently. We are depending on abstractions at compile-time, which gives us strict contracts to work with, and we are being provided with the implementation at runtime. Naturally, maybe you want to start the development by the database, but it’s a mistake! No direction is provided by the Onion Architecture guidelines about how the layers should be implemented.


If you are looking to test the entire system then that would be an end-to-end test that would be performed. So, like a typical onion, let's work our way into the core and hopefully avoid any tears along the way. The three outer layers are those which are not directly related to our business logic but depend upon on it fulfil their own purpose. They can change often and thus are separate from our core application logic.

Onion architecture is also applicable to microservices when viewing each microservice in isolation. Each microservice has its own model, its own use cases and defines its own external interfaces for retrieving or modifying the data. These interfaces can be implemented with an adapter that connects to another microservice by exposing HTTP Rest, GRPC, Thrift Endpoints, etc.

Domain services

External notification Service, GRPC Server endpoint, Kafka event stream adapter, database adapters. Application services also referred to as “Use Cases”, are services responsible for just orchestrating steps http://hit-live.info/index.php_section=games_2.html for requests and should not have any business logic. Application Services interact with other services to fulfil the client’s request. Let’s consider the use case to create an order with a list of items.

onion architecture

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *