
Kursbeskrivning
Applied Domain-Driven Design i .NET
Kursen lär ut ett direkt, praktiskt sätt att närma sig arkitektur inom affärslivet. Fokus ligger på att producera affärsmjukvara som är mer användbar, testbar, och lättare att förvalta och förstå än konventionella sätt att bygga applikationer.
Med hjälp av Domän-Driven Design (DDD) och Command/Query Responsibility Segregation (CQRS) ser vi hur vi kan applicera moderna lärdomar på vår design, för att kunna bygga mer hållbara, skalbara, och testbara system till lägre totalkostnad.
Istället för att lära ut ett ramverk lär kursen ut en modern arkitektur, ett antal möjliga implementationer, och understryker de vanliga fallgroparna man kan undvika på vägen.
Det här är en praktisk kurs, och vi håller oss nära programkoden hela vägen. Under kursen bygger vi successivt upp en mindre applikation från grunden. Kursen täcker även testning, hur man applicerar nyckelinsikterna från kursen på existerande system, och hur man skalar ut ett system byggt med CQRS.
Målgrupp
Utvecklare och arkitekter som vill lära sig mer om att applicera Domän-Driven Design.
Förkunskaper
God kännedom om C# och grundläggande kunskaper i NUnit är en fördel, dock ej nödvändiga.
Kursinnehåll
Utmaningen med "databasdriven" mjukvaruutveckling
- Olika sorters komplexitet
- Skalbarhet och konsistens
- Testning
- Integration
Introduktion till Domän-Driven Design
- Domäner och domänmodeller
- "Ubiquitous Language", ett gemensamt språk
- Övning i att bygga en domänmodell
Kontexter
- Varför avgränsningar är viktiga
- Kontextkartor
- Att hålla isär koncept i domänen
- Att mixa ihop koncept i gränssnittet
- Övningar på gränsletande
Kommandon, frågor och events
- Normalisering och denormalisering
- Skrivmodeller och läsmodeller
- Events som länk mellan skrivsida och lässida
- Eventuell konsistens och vad det innebär
- Design av kommandon
- Design av frågor
- Övning i design av kommandon och frågor
Meddelandebussar
- Meddelanden som frikoppling
- Publish/Subscribe
- Att "sända" vs att "publicera"
- Bygga en enkel meddelandebuss
- Övning i implementation av en meddelandebuss
Skrivsidearkitektur
- Kommandohanterare
- "State sourcing" gentemot "event sourcing"
- Introduktion till aggregat
- Att bygga upp aggregat från tidigare events
- Transaktionssäkerhet
- Övning i kommandohanterare och aggregat
BDD-testning
- Introduktion till BDD
- Kommandon, events och BDD
- Att bygga ett enkelt testramverk
- Övning i BDD
Eventdatabaser
- Existerande alternativ
- Att bygga en eventdatabas ovanpå en relationsdatabas
- Att implementera ett repository med hjälp av en eventdatabas
- FÖrdelar med att befria aggregatens representation från persistens
- Optimeringar med hjälp av snapshots
- Övning i att bygga en eventdatabas
Avancerad aggregatdesign
- Att hitta aggregatgränser
- Att hantera relationer
- Övning i aggregatdesign
Att bygga lässidor
- Övergripande angreppssätt
- Relationella databaser som lässida
- NoSQL-lässidor
- Andra alternativ
- Att rekonstruera och bygga upp nya lässidor
- Övning i att bygga lässidor
Processhanterare
- Vad är en processhanterare? Vad är en saga?
- Olika typer av processhanterare
- Att hantera processhanterarens tillstånd
- Att bygga ett enkelt ramverk för processhanterare
- Övning i processhanterare
Att utveckla ett system
- Att förfina domänmodeller
- Att hantera kommandon som evolverar
- Versionshantering av events
- Hantering av uppgradering av events
- Övning i event-uppgradering
CQRS, DDD och existerande kodbaser
- Att introducera kontexter i ett existerande system
- Separering av kommandon och frågor
- Att migrera mot event sourcing
Att skala ut
- Man kan dra nytta av läs/skriv-separationen för att skala
- Att skala skrivsidor enligt kontext och enligt aggregat
- Att skala inom ett aggregat
- Distribuering av meddelanden och tillförlitlighet
- Köer och "enterprise service busses"
Andra möjligheter
- Parallell utveckling och outsourcing
- Att återskapa tidigare tillstånd för debugging
Upplägg
DISTANSKURS
Genom att gå kursen online och delta i vårt digitala klassrum kan du se och höra läraren och de andra deltagarna i realtid. Du har möjlighet att ställa frågor, föra diskussioner, tillgång till kursmaterial och få feedback på övningar.
När kursen körs på distans använder vi oss av verktyget Zoom. Schemat för kursdagen följer hur dagarna i klassrummet är upplagda. Under förmiddagen håller kursen på 09.00-12.00 med mikropauser för att sträcka på benen eller fylla på kaffet. Därefter återupptas undervisningen klockan 13.00 och håller på till 17.00, även då med pauser.
"Bra upplägg och lätt att följa med, bra verktyg användes för att zooma in och understryka så man hela tiden var med. Bra upplägg att läraren gick igenom avsnittet först och att man sedan fick göra själv."
- Kursdeltagare som deltagit på distans
----------------------------------------------------------------------------------------------------------------------
I KLASSRUM
Varje kurstillfälle är individuellt, men nedan är ett exempel-schema på hur kursdagarna hos Edument brukar se ut. Utöver lunch och fika är det småpauser under dagen.
08:30 Frukost
09:00 Kursstart
12:00 Lunch
14:30 Fika
17:00 Kursdagen avslutas
Våra kurslokaler ligger centralt i Stockholm, Göteborg och Malmö. Du får mer information kring exakta tider och plats när kurstillfället närmar sig.
Måltiderna som presenteras i exempel-schemat är inkluderade i kurspriset. Om du har särskilda allergier och/eller matpreferenser har du självklart möjlighet att meddela oss dessa innan kursstart.
Kursledare
Tore Nestenius
Hos Edument arbetar jag med att utbilda utvecklare och delar gärna med mig av mina erfarenheter. Jag brukar även coacha utvecklingsteam i arkitekturfrågor och säkerhet.
Jag är nyfiken på nya tekniker och lever efter mottot ”Man kan inget förrän man kan förklara det för andra”.
Intresseanmälan
Recensioner
Snittbetyg: 4,2
Baseras på 47 recensioner.Edument

Varmt välkommen till Edument!
På Edument erbjuder vi kurser och kompetensutveckling inom Mjukvaruutveckling, agila metoder och management. Vi vänder oss främst till dig som är verksam systemutvecklare och som vill fördjupa eller bredda din kompetens. Vår drivkraft är kunskap och vi ser glädjen i...
Kontaktuppgifter
Edument
För att få mer information om utbildningen Applied Domain-Driven Design i .NET från Edument, fyll i dina uppgifter: