Skip to content

Latest commit

 

History

History
46 lines (33 loc) · 2 KB

architektura.md

File metadata and controls

46 lines (33 loc) · 2 KB

Write model

Jedná se víceméně o OLTP.

Hodně je zde využívána terminologie

Zde je implementována (převážně) logika, která vede k side-effectům (změna v db, poslání mailu, ...). Většina logiky je realizována skrze agregáty, případně doménové služby.

Write model můžeme rozdělit do několika vrstev:

  • Aplikační - command bus
  • Doména - agregáty, doménové služby - logika spojená s hospodařením
  • Infrastruktura - prakticky vše, co se dotýká světa mimo doménu (persistence do databáze, Skautis)

Doména

agregáty, doménové služby - logika spojená s hospodařením

Patří sem také Commandy a Command Handlery.

Pokud Doména využívá nějakých externích služeb, definuje rozhraní, které je následně implementováno v Infrastruktuře.

Jednotlivé části aplikace jsou dekomponovány do modulů/bounded contextů.

Testování

Doménovou logiku (AKA business logic) testujeme pomocí unit testů. Testujeme všechny scénáře, ve kterých jsou agregáty a doménové služby používány.

Infrastruktura

Repozitáře

Agregáty jsou v rámci write modelu získávány a ukládány pomocí repozitářů. Repozitáře jsou definovány jako interface v <bounded context>/Repositories. Implementace těchto repozitářů jsou v Infrastructure (ve adresáři Infrastructure/Repositories/<bounded context>), případně v jiném bounded contextu, který implementaci poskytuje (pro implementaci rozhraní z ContextA v ContextB v adresáři ContextB\ContextA\Repositories.

Read model

Model, který slouží pouze pro získávání dat pro UI. Je bez side-effectů (pokud pomineme IO spojené s cachováním).

Existují zde 4 základní typy objektů:

  • DTO - data transfer objekt
  • Query - value objekt posílaný přes query bus
  • Query handler - zpracovává query a vrací DTO/kolekci DTO