Domain Driven Design fundamentals

85
"Everything should be made as simple as possible, but not simpler." Albert Einstein

description

 

Transcript of Domain Driven Design fundamentals

Page 1: Domain Driven Design fundamentals

"Everythingshouldbemadeass impleaspossible, but not s impler." Albert Einstein

Page 2: Domain Driven Design fundamentals

Chaos

Page 3: Domain Driven Design fundamentals

Order

Page 4: Domain Driven Design fundamentals

Focus

Page 5: Domain Driven Design fundamentals

Create a world

Page 6: Domain Driven Design fundamentals

with laws

Page 7: Domain Driven Design fundamentals

environment Be aware of the

Page 8: Domain Driven Design fundamentals

Basic types for the world

Page 9: Domain Driven Design fundamentals

Value objects

Page 10: Domain Driven Design fundamentals

Value objects • Represents a value

• No identity

• immutable

• Equality by value

Page 11: Domain Driven Design fundamentals

good example

Page 12: Domain Driven Design fundamentals

...or not

Page 13: Domain Driven Design fundamentals
Page 14: Domain Driven Design fundamentals
Page 15: Domain Driven Design fundamentals
Page 16: Domain Driven Design fundamentals
Page 17: Domain Driven Design fundamentals
Page 18: Domain Driven Design fundamentals
Page 19: Domain Driven Design fundamentals

All the same

Page 20: Domain Driven Design fundamentals

Entities Meet Bob

Page 21: Domain Driven Design fundamentals

Hi, my name is Bob

Page 22: Domain Driven Design fundamentals

I'm 32 years old

Page 23: Domain Driven Design fundamentals

...and I'm a starshiptrooper

Page 24: Domain Driven Design fundamentals

Meet bob

Page 25: Domain Driven Design fundamentals

Hi, my name is Bob too

Page 26: Domain Driven Design fundamentals

I'm also 32 years old

Page 27: Domain Driven Design fundamentals

...and also a starshiptrooper

Page 28: Domain Driven Design fundamentals

Identity

Page 29: Domain Driven Design fundamentals

Identity • Combination of properties

• Personal number

Page 30: Domain Driven Design fundamentals

Aggregate Root

Page 31: Domain Driven Design fundamentals

Domain Model by Example

Page 32: Domain Driven Design fundamentals

Student

Page 33: Domain Driven Design fundamentals

Student

Class

Page 34: Domain Driven Design fundamentals

Student

Class Teacher

Page 35: Domain Driven Design fundamentals

Student

Class Teacher

Mayor Address

Page 36: Domain Driven Design fundamentals

Student

Class Teacher

Mayor Address

Location Material

Page 37: Domain Driven Design fundamentals

Student

Class Teacher

Schema Payroll

Mayor Address

Location Material

Page 38: Domain Driven Design fundamentals

Student

Class Teacher

Schema Payroll

Mayor Address

Location Material

Page 39: Domain Driven Design fundamentals

Student

Class Teacher

Schema Payroll

Mayor Address

Location Material

Page 40: Domain Driven Design fundamentals

Student

Class Teacher

Schema Payroll

Mayor Address

Location Material

Page 41: Domain Driven Design fundamentals

Student

Class Teacher

Schema Payroll

Mayor Address

Location Material

Page 42: Domain Driven Design fundamentals

Validation

Page 43: Domain Driven Design fundamentals

Validation

•  Validatable objects

•  !invariant object

Page 44: Domain Driven Design fundamentals

Validatable object

•  Default ctor •  Supported by a lot of frameworks •  Flexible

•  Naive

Page 45: Domain Driven Design fundamentals
Page 46: Domain Driven Design fundamentals

!Invariant object

•  No default ctor, most of the time •  Nonflexible

•  Strict!

Page 47: Domain Driven Design fundamentals
Page 48: Domain Driven Design fundamentals

dist

ortio

n

Page 49: Domain Driven Design fundamentals

Active-Passive

Page 50: Domain Driven Design fundamentals

Repositories

Page 51: Domain Driven Design fundamentals
Page 52: Domain Driven Design fundamentals
Page 53: Domain Driven Design fundamentals

Storage

Page 54: Domain Driven Design fundamentals
Page 55: Domain Driven Design fundamentals
Page 56: Domain Driven Design fundamentals
Page 57: Domain Driven Design fundamentals

Services Tight, small and focused

Page 58: Domain Driven Design fundamentals

Serv

ice

laye

r?

Page 59: Domain Driven Design fundamentals

Service layers are c00l •  Support multiple application

•  Your domain is in the center of the world

•  Huge enviroments

•  Read DTO's •  Write command

Page 60: Domain Driven Design fundamentals

Service layers are bad, mkay •  Domain logic is boxed

•  Logic duplication

•  No direct feedback

•  Databinding support!

Page 61: Domain Driven Design fundamentals

Bootstrapping

Page 62: Domain Driven Design fundamentals

Overview

Page 63: Domain Driven Design fundamentals

Domain

Page 64: Domain Driven Design fundamentals

Domain

DB

Page 65: Domain Driven Design fundamentals

Domain UI

DB

Page 66: Domain Driven Design fundamentals

Domain UI

Storage

Service DB

Page 67: Domain Driven Design fundamentals

Domain UI

Storage

Service DB

Logging

Page 68: Domain Driven Design fundamentals

Domain Service bus UI

Logging

Storage

Service DB

Page 69: Domain Driven Design fundamentals

Domain Service bus UI

Logging

Storage

Service DB

Page 70: Domain Driven Design fundamentals

Domain Service bus

UI model

Logging

Storage

Service DB

UI

Beheer

Page 71: Domain Driven Design fundamentals

Domain Service bus

UI model

Logging

Storage

Service DB

UI

Beheer

WCF

Page 72: Domain Driven Design fundamentals

Inversion of control You only want beer

Page 73: Domain Driven Design fundamentals
Page 74: Domain Driven Design fundamentals
Page 75: Domain Driven Design fundamentals
Page 76: Domain Driven Design fundamentals

Learn more

Page 77: Domain Driven Design fundamentals
Page 78: Domain Driven Design fundamentals
Page 79: Domain Driven Design fundamentals
Page 80: Domain Driven Design fundamentals
Page 81: Domain Driven Design fundamentals
Page 82: Domain Driven Design fundamentals
Page 83: Domain Driven Design fundamentals

DISCUSSION

Page 84: Domain Driven Design fundamentals
Page 85: Domain Driven Design fundamentals

You were great! Really, I already knew it when creating this slide