Applied Domain-Driven Design



Kursarrangør: Glasspaper AS
Sted: Oslo, Helsfyr
Oslo
Kursadresse: Brynsveien 12, 0667 Oslo (kart)
Type:Åpent kurs / gruppeundervisning
Undervisningstid: kl 09:00 - 16:00
Varighet: 3 dager
Pris: 18.900

Domain-Driven Design has attracted quite a lot of attention in recent years. This course explains the concepts of DDD, and explores how it can help us model complex software systems.

We´ll lift the lid on key concepts such as Bounded Contexts, Aggregates and Ubiquitous Language, and take a pragmatic look at how to apply these concepts to address real challenges.

The course also covers the Command-Query Responsibility Segregation (CQRS) pattern, and describes how it fits in with DDD. The course primarily addresses architecture and design challenges. We also dip down into code where appropriate, to illustrate key points and to make things tangible. Code examples are presented in Java (other languages can be catered for, on demand).

What you`ll learn:
• Understanding DDD concepts and terminology
• Effective model-driven design
• Bounded contexts and ubiquitous language
• Applying DDD in practice
• CQRS
• Implementation examples


Course outline:

Day 1)
Introduction to Domain-Driven Design:
• What is Domain-Driven Design (DDD):
• What challenges does DDD address:
• Essential patterns and practices of DDD

Problem Domains:
• Understanding the problem domain:
• Techniques and practices:
• Core domains:
• Defining clean boundaries

Effective Model-Driven Design:
• Domain models:
• Defining a Ubiquitous Language:
• Domain model implementation patterns:
• Bounded Contexts:
• Applying DDD in practice

Bounded Context Integration:
• Integrating Bounded Contexts:
• Integrating distributed Bounded Contexts:
• Messaging: REST / RPC


Day 2)
Overview of DDD Patterns:
• Entities, value objects, and domain services:
• Aggregates, factories, and repos:
• Domain events:
• Event sourcing

Value Objects and Entities:
• When to use a value object:
• Persistence options:
• How to implement entities:
• Entity best practices

Domain Services and Domain Events:
• When and how to use domain services:
• Domain services vs. application services:
• Domain service patterns:
• Domain event actions:
• Implementation options

Aggregates:
• The importance of aggregates in DDD:
• Defining aggregate boundaries:
• Implementing aggregates:
• Persistence


Day 3)
Factories and Repositories:
• The purpose of factories:
• The purpose of repositories:
• Patterns and anti-patterns

Introduction to CQRS:
• What is CQRS:
• Eventual consistency:
• Commands and command buses:
• Repositories:
• Events and event buses

Going Further with CQRS:
• Implementing a REST UI:
• Event-sourced aggregates:
• Sagas


Instructor: Andy Olsen

Andy is a freelance consultant and instructor based in the UK, working mostly in the City of London and Oxford. Andy has been working with .NET since the Beta 1 days and has extensive experience in many facets of .NET development including WCF, WPF, WF, ASP.NET MVC Web development, and mobile applications. Andy has designed and written many Microsoft Official Curriculum courses in the last decade, and has been engaged as author and technical reviewer with Apress on some of their biggest selling books.

Målgruppe for kurset

Prerequisites:
• Architects, system designers, and developers

Vis flere tilsvarende kurs: