domain-driven design und hexagonale architektur

39
DOMAIN DRIVEN DESIGN & HEXAGONALE ARCHITEKTUR von Torben Fojuth / @Final_guy in Bremen Baue seit 10 Jahren Web-Anwendungen Schwerpunkte: Architektur, Coding Dojo, Clean Code Devloper Neuland, Büro für Informatik

Upload: torben-fojuth

Post on 14-Apr-2017

121 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Domain-Driven Design und Hexagonale Architektur

DOMAIN DRIVEN DESIGN&

HEXAGONALE ARCHITEKTURvon Torben Fojuth / @Final_guy

in BremenBaue seit 10 Jahren Web-AnwendungenSchwerpunkte: Architektur, Coding Dojo, Clean Code Devloper

Neuland, Büro für Informatik

Page 2: Domain-Driven Design und Hexagonale Architektur

TEIL 1: THESE“Die Kombination von DDD und Hexagonaler

Architektur bietet EntwicklInnen klareAntworten auf die zentrale Fragen ihres

alltäglichen Handwerks. ”

Page 4: Domain-Driven Design und Hexagonale Architektur

WOHIN GEHÖRT DAS FEATURE?

Page 5: Domain-Driven Design und Hexagonale Architektur

BEISPIEL: MAXIMALE BESTELLSUMME?

Page 6: Domain-Driven Design und Hexagonale Architektur

TEIL 2: DOMAIN DRIVEN DESIGN

Page 9: Domain-Driven Design und Hexagonale Architektur

BEGRIFFE1. Ubiquitous Language2. Bounded Context3. Entity/Aggregate & Value Object

Page 10: Domain-Driven Design und Hexagonale Architektur
Page 11: Domain-Driven Design und Hexagonale Architektur
Page 12: Domain-Driven Design und Hexagonale Architektur
Page 14: Domain-Driven Design und Hexagonale Architektur

UBIQUITOUS LANGUAGE

Page 16: Domain-Driven Design und Hexagonale Architektur

EntityValueObject

RepositoryApplicationService

Page 17: Domain-Driven Design und Hexagonale Architektur

ENTITYRepräsentiert ein identifizierbares "Ding"Kapselt GeschäftslogikHat einen Lebenszyklus / HistorieIst von der Datenhaltung abstrahiertGleichheit basiert auf ID

Page 18: Domain-Driven Design und Hexagonale Architektur

VALUE OBJECTRepräsentiert Eigenschaft (eines Entities)Kapselt GeschäftslogikBekannte Beispiele: Money/Price & QuantityUnveränderlich implementiertGleichheit basiert auf der Gleichheit aller Eigenschaften

Page 19: Domain-Driven Design und Hexagonale Architektur

AGGREGATESpezialform eines EntitiesIst Wurzel eines Objektbaumes

Page 20: Domain-Driven Design und Hexagonale Architektur

APPLICATION SERVICERepräsentiert einen UseCase der DomäneOrchestriert was zu tun ist

Page 21: Domain-Driven Design und Hexagonale Architektur

REPOSITORYBietet Zugriff auf EntitiesVerhält sich wie Collection

Page 22: Domain-Driven Design und Hexagonale Architektur

TEIL 3: HEXAGONALE ARCHITEKTUR

Page 23: Domain-Driven Design und Hexagonale Architektur

ZIELSETZUNG“Allow an application to equally be driven by

users, programs, automated test or batchscripts, and to be developed and tested in

isolation from its eventual run-time devicesand databases.”

Alistair Cockburn, 2005

Page 24: Domain-Driven Design und Hexagonale Architektur

URSPRUNG

Page 25: Domain-Driven Design und Hexagonale Architektur

S.O.L.I.D.Dependency Inversion Principle

Page 26: Domain-Driven Design und Hexagonale Architektur

DEPENDENCY INVERSION

Page 27: Domain-Driven Design und Hexagonale Architektur

HEXAGON

Page 28: Domain-Driven Design und Hexagonale Architektur

PAKETSTRUKTUR

Page 29: Domain-Driven Design und Hexagonale Architektur

TEIL 4: NUTZEN FÜR ENTWICKLER

Page 30: Domain-Driven Design und Hexagonale Architektur

WO ÄNDERE/ERSTELLE ICH EINEN USECASE?

Page 31: Domain-Driven Design und Hexagonale Architektur

WO ÄNDERE/ERSTELLE ICH GESCHÄFTSLOGIK?

Page 32: Domain-Driven Design und Hexagonale Architektur

WIE GREIFE ICH AUF EXTERNE SYSTEME ZU?

Page 33: Domain-Driven Design und Hexagonale Architektur

WO BEGINNT/ENDET EINE TRANSAKTION?

Page 34: Domain-Driven Design und Hexagonale Architektur

SIND MEINE ABHÄNGIGKEITEN KORREKT?

Page 35: Domain-Driven Design und Hexagonale Architektur

WO ERMÖGLICHE ICH ZUGRIFF AUF MEINSYSTEM?

Page 36: Domain-Driven Design und Hexagonale Architektur

BOUNDED CONTEXT ZU UBIQUITOUS LANGUAGE

Page 38: Domain-Driven Design und Hexagonale Architektur

HALDE