Skip to content

Components dependencies

Kizlo Taras edited this page Oct 25, 2020 · 1 revision

Overview

Current project use Onion architecture. This way allows us to deploy components independently of each other and reduce the amount of changes to rigid modules. Although the business logic layer use infrastructure and user interface layers it does not have direct dependencies on those. That is where we get use of dependency inversion principle and separated interface pattern.

Module dependencies

Let's dive into each module's structure. All modules are split by vertical slices. First one is ClientApp. It contains all required dependencies and describe its domain area.

ClientApp Component diagram

Main module is more complex that is why it uses ideas of ports and adapters. The domain code is separated from the technical details and implementation. Application module declare interfaces that is implemented in infrastructure, so it can be independent as well.

Application component diagram

For SmsSender logic is separated from user interface but still deployed as a single unit. This way everything is coupled together and still remains independent of environment.

SmsSender component diagram

Clone this wiki locally