Clean Architecture fremmer softwarestruktur for forbedret testbarhed,
vedligeholdelse og skalerbarhed. Det adskiller bekymringer og understøtter en fleksibel kodebase, der kan tilpasse sig
udviklende krav og teknologier.
Målene med Clean Architecture
Clean Architecture sigter mod at skabe software, der er let at forstå, vedligeholde og teste. Den lægger vægt på adskillelse
af bekymringer og oprettelse af veldefinerede grænser mellem forskellige dele af applikationen. Denne adskillelse muliggør
lettere test af individuelle komponenter.
Fordele ved Clean Architecture
- ➤ Uafhængighed af Framework: Kan bruges med ASP.NET (Core), Java, Python osv., uden at være afhængig af
et specifikt softwarebibliotek eller proprietær kodebase.
- ➤ Testbarhed: Kan bruges med ASP.NET (Core), Java, Python osv., uden at være afhængig af et specifikt
softwarebibliotek eller proprietær kodebase.
- ➤ UI Uafhængighed: Logik holdes uden for UI'en, hvilket gør det nemt at skifte teknologier, f.eks. fra
Angular til React eller Blazor.
- ➤ Database Uafhængighed: Ren adskillelse af dataadgangsbekymringer, hvilket letter ændringer fra SQL Server til
CosmosDB.
- ➤ Uafhængighed fra Eksterne Systemer: Kerne er fuldstændigt isoleret fra omverdenen, hvilket sikrer
langvarighed og lette opdateringer.
- ➤ Løs Kobling: Fremmer løs kobling mellem komponenter og lag, hvilket forbedrer vedligeholdelse og
skalerbarhed.
Clean Architecture: Det Store Billede
- 1. Forretningslogik og Applikationsmodel i Centrum: Sikrer, at de vigtige aspekter af softwaren er
uafhængige og veldefinerede.
- 2. Inverteret Afhængighed: Forretningslogik afhænger ikke af dataadgang eller infrastrukturbekymringer;
i stedet afhænger infrastrukturen af Applikationskernen.
- 3. Klare Abstraktioner i Applikationskernen: Definerer klare abstraktioner (interfaces), der repræsenterer
essentielle kontrakter.
- 4. Implementering i Infrastruktur-laget: Konkrete implementeringer findes i Infrastruktur-laget, som håndterer
dataadgang, eksterne tjenester osv.
- 5. Indadgående Flow af Afhængigheder: Alle afhængigheder flyder indad mod Applikationskernen, hvilket sikrer
streng adskillelse af bekymringer.
Lag i Clean Architecture
- ➤ Domæne Lag: Kernen i arkitekturen, der implementerer forretningslogik uden afhængigheder af andre lag.
- ➤ Applikations Lag: Mellem lag, der håndterer data mellem domæne- og præsentations/infrastruktur lagene.
- ➤ Infrastruktur Lag: Indeholder klasser til adgang til eksterne ressourcer som filsystemer, webtjenester og
databaser.
- ➤ Præsentations Lag: UI-kode, der bruger ASP.NET Core til at bygge grænseflader.
Domain Driven Design (DDD)
Domain-Driven Design (DDD) er et sæt af principper og mønstre til design af software, der fokuserer på kernen af domænet og dets
logik. DDD lægger vægt på samarbejde mellem tekniske og domæneeksperter for iterativt at forfine en konceptuel model, der
adresserer komplekse forretningskrav. De vigtigste koncepter i DDD omfatter:
• Enheder: |
Objekter med en distinkt identitet, der gennemgår forskellige tilstande i systemet. |
• Værdiobjekter: |
Immutable objekter, der repræsenterer en beskrivende aspekt af domænet uden konceptuel identitet. |
• Aggregater: |
En klynge af domæneobjekter, der behandles som en enkelt enhed for datamodifikationer. |
• Repositories: |
Mechanismer til at kapsle opbevaring, hentning og søgeadfærd, der efterligner en samling af objekter. |
Testning i Clean Architecture
Testning i Clean Architecture involverer test af hver lag uafhængigt for at sikre, at alle komponenter fungerer
korrekt og interagerer ordentligt med hinanden. Dette er et meget vigtigt skridt og reducerer betydeligt kompleksiteten.
- ➤ Mocking: Oprettelse af objekter, der simulerer adfærden af reelle objekter. I dette tilfælde kan du mocke dine
database-repositories uden den faktiske implementering.
- ➤ Dependency Injection: Overførsel af afhængigheder (som repositories) til dine use cases eller services for at
gøre dem lettere at udføre enhedstest.
- ➤ Isolation: Sikring af, at hver test er uafhængig og ikke er afhængig af tilstand eller data fra andre tests.
Implementering af Clean Architecture
- 1. Konfiguration af Domæne Lag: Definer enheder, enums, undtagelser, interfaces og typer.
- 2. Konfiguration af Applikations Lag: Skriv forretningslogik og service interfaces, og oprethold løs kobling.
- 3. Konfiguration af Infrastruktur Lag: Implementer dataadgang og interaktion med eksterne ressourcer baseret på Core interfaces.
- 4. Konfiguration af Præsentations Lag: Implementer præsentationslagets logik og grænseflader.
Principper at Følge
1. Separation af Bekymringer: |
Undgå at blande forskellige kodeansvar i den samme metode/klasse/projekt. |
2. Enkel Ansvar: |
Hver modul/komponent bør have kun én grund til at ændre sig. |
3. Don’t Repeat Yourself (DRY): |
Undgå duplikeret kode eller logik. |
4. Inverterede Afhængigheder: |
Højniveauretningslinjer bør ikke afhænge af lav-niveau detaljer; brug afhængighedsinjektion for at fremme løs kobling. |
Konklusion
Clean Architecture giver en robust grundlag for opbygning af mikroservices ved hjælp af .NET Core Web API. Ved at overholde
principperne om separation af bekymringer og afhængighedsinversion kan udviklere skabe skalerbare, vedligeholdelsesvenlige og
testbare applikationer. At omfavne Clean Architecture sikrer et solidt fundament for de stadigt skiftende krav i moderne softwareudvikling.
Lær mere ved at besøge vores
GitHub
Kommentarer (0)
Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret *