Dalšie vrstvy Clean Architecture
V Clean Architecture je základným princípom oddeliť zodpovednosti jednotlivých vrstiev tak, aby bola aplikácia flexibilná, udržiavateľná a dobre rozšíriteľná. Ak potrebujete riešiť špecifické problémy alebo zjednodušiť implementáciu, môžete pridať ďalšiu vrstvu. Tu sú niektoré návrhy a dôvody, prečo by ste mohli pridať ďalšiu vrstvu:
1. Contracts/Shared Kernel Layer
- Prečo? Slúži na zdieľanie rozhraní, DTO (Data Transfer Objects) a prípadne spoločných pravidiel alebo helperov medzi Application a Infrastructure.
- Kde sa umiestňuje? Contracts je nezávislý projekt, ktorý neobsahuje žiadnu logiku, iba definície (napr. rozhrania, DTO).
- Výhoda:
- Odstráni kruhové závislosti medzi Application a Infrastructure.
- Centralizácia zdieľaných objektov a pravidiel.
2. Integration Layer
- Prečo? Ak aplikácia komunikuje s externými systémami (napr. inými API, mikroslužbami), môžete zaviesť integračnú vrstvu na izoláciu tejto komunikácie.
- Kde sa umiestňuje? Integration môže byť medzi Application a Infrastructure.
- Čo obsahuje?
- Klientov pre externé API (napr. HTTP klienty).
- Adaptéry pre pripojenie k externým systémom.
- Výhoda: Izoluje logiku integrácie do jednej vrstvy, čím chráni doménovú a aplikačnú logiku pred zbytočnými závislosťami.
3. Caching Layer
- Prečo? Ak potrebujete implementovať mechanizmy ukladania dočasných dát (napr. caching výsledkov vyhľadávania alebo výpočtov), môžete zaviesť vrstvu na obsluhu cache.
- Kde sa umiestňuje? Medzi Application a Infrastructure alebo ako súčasť Infrastructure.
- Čo obsahuje? Služby pre ukladanie a čítanie z cache (napr. Redis, MemoryCache).
- Výhoda: Zlepšuje výkon aplikácie bez úpravy existujúcich vrstiev.
4. Orchestration Layer
- Prečo? Ak má aplikácia komplexné procesy, ktoré zahŕňajú koordináciu medzi viacerými vrstvami, môžete pridať vrstvu na orchestráciu.
- Kde sa umiestňuje? Medzi Application a Infrastructure, alebo ako súčasť Application.
- Čo obsahuje?
- Služby, ktoré koordinujú viaceré úlohy a zabezpečujú správny tok dát medzi vrstvami.
- Výhoda: Uľahčuje správu a modifikáciu zložitých procesov.
5. Cross-Cutting Concerns Layer
- Prečo? Rieši spoločné funkcie, ako je logging, validácia, autentifikácia, autorizácia a monitorovanie.
- Kde sa umiestňuje? Ako separátny projekt alebo modul, dostupný pre všetky vrstvy.
- Čo obsahuje? Middleware alebo služby, ktoré môžu byť pripojené cez DI (Dependency Injection) alebo AOP (Aspect-Oriented Programming).
- Výhoda: Jednoduchá správa spoločných funkcií bez opakovania kódu.
6. Background Processing Layer
- Prečo? Ak aplikácia potrebuje vykonávať úlohy na pozadí (napr. spracovanie správ z frontov alebo plánované úlohy), môžete pridať vrstvu na obsluhu týchto úloh.
- Kde sa umiestňuje? Vedľa Infrastructure alebo ako jej súčasť.
- Čo obsahuje?
- Služby pre prácu s frontami (napr. RabbitMQ, Kafka).
- Naplánované procesy (napr. Quartz.NET).
- Výhoda: Izoluje dlhodobé a pomalé procesy z hlavnej logiky aplikácie.
Prečo pridávať ďalšie vrstvy?
- Oddelenie zodpovedností: Každá vrstva rieši špecifickú časť aplikácie.
- Flexibilita: Ľahko sa pridávajú nové funkcie alebo nahrádzajú existujúce implementácie.
- Udržiavateľnosť: Kód je organizovaný a zjednodušený, čo znižuje riziko regresie.
- Testovateľnosť: Jednotlivé vrstvy sú izolované, čo uľahčuje písanie testov.