SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
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
TEIL 1: THESE
“Die Kombination von DDD und Hexagonaler
Architektur bietet EntwicklInnen klare
Antworten auf die zentrale Fragen ihres
alltäglichen Handwerks. ”
WAS IST PASSIERT?
WOHIN GEHÖRT DAS FEATURE?
BEISPIEL: MAXIMALE BESTELLSUMME?
TEIL 2: DOMAIN DRIVEN DESIGN
BEGRIFFE
1. Ubiquitous Language
2. Bounded Context
3. Entity/Aggregate & Value Object
ERKENNTNIS
UBIQUITOUS LANGUAGE
BOUNDED CONTEXT
Entity
ValueObject
Repository
ApplicationService
ENTITY
Repräsentiert ein identifizierbares "Ding"
Kapselt Geschäftslogik
Hat einen Lebenszyklus / Historie
Ist von der Datenhaltung abstrahiert
Gleichheit basiert auf ID
VALUE OBJECT
Repräsentiert Eigenschaft (eines Entities)
Kapselt Geschäftslogik
Bekannte Beispiele: Money/Price & Quantity
Unveränderlich implementiert
Gleichheit basiert auf der Gleichheit aller Eigenschaften
AGGREGATE
Spezialform eines Entities
Ist Wurzel eines Objektbaumes
APPLICATION SERVICE
Repräsentiert einen UseCase der Domäne
Orchestriert was zu tun ist
REPOSITORY
Bietet Zugriff auf Entities
Verhält sich wie Collection
TEIL 3: HEXAGONALE ARCHITEKTUR
ZIELSETZUNG
“Allow an application to equally be driven by
users, programs, automated test or batch
scripts, and to be developed and tested in
isolation from its eventual run-time devices
and databases.”
Alistair Cockburn, 2005
URSPRUNG
S.O.L.I.D.
Dependency Inversion Principle
DEPENDENCY INVERSION
HEXAGON
PAKETSTRUKTUR
TEIL 4: NUTZEN FÜR ENTWICKLER
WO ÄNDERE/ERSTELLE ICH EINEN USECASE?
WO ÄNDERE/ERSTELLE ICH GESCHÄFTSLOGIK?
WIE GREIFE ICH AUF EXTERNE SYSTEME ZU?
WO BEGINNT/ENDET EINE TRANSAKTION?
SIND MEINE ABHÄNGIGKEITEN KORREKT?
WO ERMÖGLICHE ICH ZUGRIFF AUF MEIN
SYSTEM?
BOUNDED CONTEXT ZU UBIQUITOUS LANGUAGE
DANKE
... FRAGEN?
HALDE
KOMPLEXITÄT

Weitere ähnliche Inhalte

Ähnlich wie Domain-Driven Design und Hexagonale Architektur

Architekturen für .NET Core-Anwendungen
Architekturen für .NET Core-AnwendungenArchitekturen für .NET Core-Anwendungen
Architekturen für .NET Core-AnwendungenRobin Sedlaczek
 
Domain-Driven Design in der Praxis
Domain-Driven Design in der PraxisDomain-Driven Design in der Praxis
Domain-Driven Design in der PraxisMichael Mirold
 
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...Gregor Biswanger
 
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...BATbern
 
Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013superflomo
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Jürg Stuker
 
Erp in der zukunft: über die funktionen hinaus
Erp in der zukunft: über die funktionen hinausErp in der zukunft: über die funktionen hinaus
Erp in der zukunft: über die funktionen hinausDedagroup
 
Neue Konzepte in der Technischen Dokumentation
Neue Konzepte in der Technischen DokumentationNeue Konzepte in der Technischen Dokumentation
Neue Konzepte in der Technischen DokumentationGeorg Eck
 
Data is the new Oil! - Paradigmenwechsel im Arbeiten und Verwalten von Daten
Data is the new Oil! - Paradigmenwechsel im Arbeiten und Verwalten von DatenData is the new Oil! - Paradigmenwechsel im Arbeiten und Verwalten von Daten
Data is the new Oil! - Paradigmenwechsel im Arbeiten und Verwalten von DatenMongoDB
 
Eclipse Ditto Vorstellung (German)
Eclipse Ditto Vorstellung (German)Eclipse Ditto Vorstellung (German)
Eclipse Ditto Vorstellung (German)Daniel Fesenmeyer
 
dox42day Geronimo Janosievics - Microsoft Österreich GmbH
dox42day Geronimo Janosievics - Microsoft Österreich GmbHdox42day Geronimo Janosievics - Microsoft Österreich GmbH
dox42day Geronimo Janosievics - Microsoft Österreich GmbHdox42
 
Dev Day 2021 - Stephan Pirnbaum - Anwendungsmodernisierung
Dev Day 2021 - Stephan Pirnbaum - AnwendungsmodernisierungDev Day 2021 - Stephan Pirnbaum - Anwendungsmodernisierung
Dev Day 2021 - Stephan Pirnbaum - AnwendungsmodernisierungDevDay Dresden
 
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Michael Kurz
 
Thread-safe .NET durch Immutables
Thread-safe .NET durch ImmutablesThread-safe .NET durch Immutables
Thread-safe .NET durch ImmutablesRobin Sedlaczek
 
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...Robin Sedlaczek
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightChristinaLerch1
 
Onno Reiners: E-Learning einfach selbst erstellen
Onno Reiners: E-Learning einfach selbst erstellenOnno Reiners: E-Learning einfach selbst erstellen
Onno Reiners: E-Learning einfach selbst erstellenlernet
 

Ähnlich wie Domain-Driven Design und Hexagonale Architektur (20)

Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Architekturen für .NET Core-Anwendungen
Architekturen für .NET Core-AnwendungenArchitekturen für .NET Core-Anwendungen
Architekturen für .NET Core-Anwendungen
 
Domain-Driven Design in der Praxis
Domain-Driven Design in der PraxisDomain-Driven Design in der Praxis
Domain-Driven Design in der Praxis
 
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
 
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
 
Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001
 
Erp in der zukunft: über die funktionen hinaus
Erp in der zukunft: über die funktionen hinausErp in der zukunft: über die funktionen hinaus
Erp in der zukunft: über die funktionen hinaus
 
Neue Konzepte in der Technischen Dokumentation
Neue Konzepte in der Technischen DokumentationNeue Konzepte in der Technischen Dokumentation
Neue Konzepte in der Technischen Dokumentation
 
Data is the new Oil! - Paradigmenwechsel im Arbeiten und Verwalten von Daten
Data is the new Oil! - Paradigmenwechsel im Arbeiten und Verwalten von DatenData is the new Oil! - Paradigmenwechsel im Arbeiten und Verwalten von Daten
Data is the new Oil! - Paradigmenwechsel im Arbeiten und Verwalten von Daten
 
Eclipse Ditto Vorstellung (German)
Eclipse Ditto Vorstellung (German)Eclipse Ditto Vorstellung (German)
Eclipse Ditto Vorstellung (German)
 
dox42day Geronimo Janosievics - Microsoft Österreich GmbH
dox42day Geronimo Janosievics - Microsoft Österreich GmbHdox42day Geronimo Janosievics - Microsoft Österreich GmbH
dox42day Geronimo Janosievics - Microsoft Österreich GmbH
 
Csb Kundenforum 2007
Csb Kundenforum 2007Csb Kundenforum 2007
Csb Kundenforum 2007
 
Dev Day 2021 - Stephan Pirnbaum - Anwendungsmodernisierung
Dev Day 2021 - Stephan Pirnbaum - AnwendungsmodernisierungDev Day 2021 - Stephan Pirnbaum - Anwendungsmodernisierung
Dev Day 2021 - Stephan Pirnbaum - Anwendungsmodernisierung
 
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
 
Thread-safe .NET durch Immutables
Thread-safe .NET durch ImmutablesThread-safe .NET durch Immutables
Thread-safe .NET durch Immutables
 
Domain Driven Design - Stabile Basis für langlebige Software
Domain Driven Design - Stabile Basis für langlebige SoftwareDomain Driven Design - Stabile Basis für langlebige Software
Domain Driven Design - Stabile Basis für langlebige Software
 
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha Night
 
Onno Reiners: E-Learning einfach selbst erstellen
Onno Reiners: E-Learning einfach selbst erstellenOnno Reiners: E-Learning einfach selbst erstellen
Onno Reiners: E-Learning einfach selbst erstellen
 

Domain-Driven Design und Hexagonale Architektur