Applied Domain-Driven Design in .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#, kunskap om SQL. Grundläggande kunskaper i NUnit är en fördel, dock ej nödvändiga.

Ämnesområden

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

 

Om kursen

Pris: 25 970,00 kr

exklusive moms

Längd 3 dagar
Kurskod ET201

KompetenskortKompetenskort gäller på denna kurs

Kursen hålls på begäran

Kontakta oss för mer information.

Telefon: 08-440 11 00
E-post: info@addskills.com

Kontakta oss

Har du frågor? Tveka inte att höra av dig till oss!