Kurs: Applied Domain-Driven Design in .NET


Klasserom3 dagerKursNorsk
Start Sted Språk
19.04.17 Glasspaper AS, Brynsveien 12, 0667 Oslo, Oslo Norsk
28.06.17 Glasspaper AS, Brynsveien 12, 0667 Oslo, Oslo Norsk
28.08.17 Glasspaper AS, Brynsveien 12, 0667 Oslo, Oslo Norsk



What is Domain Driven Design (DDD) really about? How might Command Query Responsibility Segregation (CQRS) help us to build better software? Far from being esoteric concepts, they can be harnessed by everyday developers to create long-lasting, flexible solutions.

DDD and CQRS are gaining in popularity because they attack genuine challenges in software development. This course balances explaining important underlying theory with both design- and code-focused exercises, giving participants both understanding and new practical development skills.

Rather than teaching a framework, the course teaches a factoring and some ways to implement it, highlighting the key pitfalls to avoid along the way. During the course, a small application will gradually be built up from scratch. The course also includes coverage of testing, how to apply the insights from the course to existing systems and how to scale out a system developed using CQRS. Read more about CQRS and DDD on the CQRS FAQ

 

Day 1 


The Challenge of "Database Driven" Software Development

  • Types of complexity
  • Scaling and consistency
  • Testing
  • Integration

 

Introduction to Domain Driven Design

  • Domains and Domain Models
  • Ubiquitous Language
  • Exercise on building a domain model

 

Bounded Contexts

  • Why boundaries matter
  • Context Maps
  • Decomposition in the domain
  • Composition in the UI
  • Exercises on boundary hunting

 

Commands, Queries and Events

  • Normalization and denormalization
  • Write models and read models
  • Events as the write-side/read-side
  • link
  • Eventual consistency and its
  • consequences
  • Designing commands
  • Designing queries
  • Exercise on command and query design

 

Message Busses

  • Messages as decoupling
  • Publish/Subscribe
  • Send vs. Publish
  • Building a simple message bus
  • Exercise on message bus implementation

 

Write Side Architecture

  • Command handlers
  • State sourcing vs. event sourcing
  • Introduction to aggregates
  • Building up aggregates from past events
  • Transactional safety
  • Exercise on command handlers and aggregates

 

Day 2


BDD Style Testing

  • Introduction to BDD
  • Commands, Events and BDD
  • Building a simple test framework
  • Exercise on BDD

 

Event Stores

  • Existing options
  • Building an event store on top of an RDBMS
  • Implementing a repository using an event store
  • Advantages of freeing aggregate representation from persistence
  • Optimizations using snapshots
  • Exercise on building an event store

 

Advanced Aggregate Design

  • Finding aggregate boundaries
  • Coping with relationships
  • Exercise on aggregate design

 

Building Read Sides

  • Overall approach
  • Relational DB read sides
  • NoSQL read sides
  • Other options
  • Re-building and introducing new read sides
  • Exercise on building read sides

 

Day 3


Sagas

  • What is a saga?
  • Different types of saga
  • Handling saga state
  • Building a simple saga framework
  • Exercise on sagas

 

Evolving a System

  • Refining domain models
  • Handling changes to commands
  • Event versioning
  • Handling event upgrade
  • Exercise on event upgrading

 

CQRS, DDD and Existing Codebases

  • Introducing bounded contexts to existing systems
  • Separating commands and queries
  • Migrating towards event sourcing

 

Scaling out

  • Using the read/write separation to scale
  • Scaling write sides by bounded context and by aggregate
  • Scaling within an aggregate
  • Message distribution and reliability
  • Message queues and ESBs

 

Other Opportunities

  • Parallel development and outsourcing
  • Recreating previous states for debugging

 

 

 

 



Stedsbeskrivelse


About the instructor: Jonathan Worthington

  From business applications to compiler writing, and from .Net to Perl, Jonathan has a wide range of software development experience. He deeply believes that good development has to be a strongly holistic activity, drawing on mathematics, engineering, linguistics, economics, psychology and more. By looking at insights from many fields, he works hard to deliver solid and maintainable software solutions. Originally from the UK, and having spent time in Spain and Slovakia, Jonathan is currently based in Sweden. Jonathan is also a very active open source contributor, and a popular speaker at a range of international workshops and conferences.



Forkunnskaper


A good working knowledge of the C# language, including classes, interfaces and generics
Basic knowledge of SQL
Some basic experience with NUnit is beneficial, but not essential



Målgruppe


.NET developers



 

Påmelding
Applied Domain-Driven Design in .NET hos Glasspaper
Start her
100% sikkert skjema
Tar ett minutt å fullføre
Hurtig respons

KAMPANJE!!!
Felt som er merket med * må fylles ut
Ønsket valuta *
Dato og sted *
Kursdeltakere
Hvor mange? (Gavekort)
Kampanjekoden er korrekt og rabatt er lagt til.
Fant ingen kampanje. Skrev du kampanjekoden riktig?
Kampanjekode er korrekt, men kampanjen gir ikke bedre pris enn nåværende kampanje.
Deltaker {{$index+1}}
Filen ble lastet opp
Filen ble fjernet
Laster opp... {{item.upload_progress}}%
{{ file.file.name }} Fjern
{{total_price | fprice}} kr {{currency}}
{{total_price-total_with_discount | fprice}} kr {{currency}}
{{total_with_discount | fprice}} kr {{currency}}
{{total_vat | fprice}} kr {{currency}}
X

MVA per produkt:

{{arr[1]}}
Betalingsmåte *
Number: 1+2 *
Vennligst rett opp følgende og forsøk igjen
{{errors_msg}}
Sender...
Vent til opplasting av fil er ferdig

Dette skjemaet er 100% sikkert.
Glasspaper vil snart kontakte deg og bekrefte!



 

Åpen deltakerdiskusjon om kurset eller emnet

Del gjerne din erfaring eller tanker om dette kurset eller temaet med andre!



Anbefalinger fra andre brukere