2009-02-12 8 views
300

Sto imparando a conoscere Domain Driven Design e mi godo ogni minuto. Tuttavia, ci sono alcuni problemi pratici che mi confondono, penso che vedere alcuni buoni esempi potrebbero chiarire.Campioni Good Domain Driven Design

Quindi, essendo in pace con questi problemi, qualcuno sa di alcuni esempi di codice funzionante che fanno un buon lavoro di modellazione di concetti base di DDD?

Particolarmente interessata

  • illustrativo Domain Model
  • Repositories
  • Utilizzo dei Servizi di dominio/Application
  • Valore Oggetti
  • radici di aggregazione

so di' m probabilmente chiedendo troppo, ma a tutto vicino aiuterà.

+28

IHMO tali dibattiti aiuteranno molto. A volte più di una semplice domanda. Per esempio. potremmo cambiare questo in una domanda: "Dove trovo alcuni buoni esempi per DDD?" e funziona con il formato di domande e risposte. – Gizzmo

+26

È sempre divertente quando i grandi scatti piombano dentro e chiudono domande come questa, quando sono chiaramente molto popolari, e quindi, chiaramente molto utili per il resto di noi che stanno votando in su. La mia ipotesi è che sono popolari perché sono * costruttivi. Scendi dai tuoi alti cavalli, ragazzi. – AaronHS

+12

Guardare all'intero thread è stato amichevole, costruttivo e il "probabile argomento di discussione, argomenti" ecc. Non è mai stato realizzato. Pedante e legalista. Bo Persson, gnat, Jim Garrison, Stefan Steineggar e DuckMaestro hanno troppo tempo a disposizione. – jlembke

risposta

159

La difficoltà con gli esempi DDD è che sono spesso molto specifici del dominio e l'implementazione tecnica del sistema risultante non sempre mostra le decisioni di progettazione e le transizioni che sono state apportate nella modellazione del dominio, che è davvero al centro di DDD. DDD è molto più sul processo che sul codice. (come alcuni dicono, il miglior campione DDD è il libro stesso!)

Detto questo, un'app campione ben commentata dovrebbe almeno rivelare alcune di queste decisioni e darti una direzione in termini di abbinamento del tuo modello di dominio con il schemi tecnici utilizzati per attuarlo.

Non hai specificato quale lingua si sta utilizzando, ma io ti do un paio in alcune lingue diverse:

DDDSample - un campione Java che rispecchia gli esempi Eric Evans parla in his book. Questo è ben commentato e mostra una serie di diversi metodi per risolvere vari problemi con contesti separati separati (cioè, il livello di presentazione). Si sta lavorando attivamente, quindi controllalo regolarmente per gli aggiornamenti.

dddps - campione C# app di Tim McCarthy per il suo libro, Design .NET Domain-Driven con C#

S#arp Architecture - un pragmatico C# esempio, non come "puro" un approccio DDD forse a causa della sua mancanza di un vero e proprio problema di dominio, ma ancora un buon approccio pulito.

Con tutte queste app di esempio, è probabilmente meglio controllare le ultime versioni di trunk da SVN/qualsiasi altra cosa per avere un'idea dei modelli di pensiero e tecnologia che dovrebbero essere aggiornati regolarmente.

+1

Punti ben presi. Grazie Michael. Questi dovrebbero almeno aiutarmi a visualizzare alcune possibilità di implementazione. Ho capito cosa stai dicendo riguardo al processo e sono d'accordo. Grazie per aver risposto a questo! – jlembke

+0

Come menzionato @Mehdi nella domanda originale, si dovrebbe aggiungere il meraviglioso esempio di Vaughn Vernon. È la migliore implementazione del pattern DDD che abbia mai visto: github.com/VaughnVernon/IDDD_Samples –

+0

So che questo è vecchio, ma l'esempio di 'dddps' sembra essere completamente anemico e contrario a OOP in realtà. Nessuno degli oggetti di dominio ha alcun comportamento e le classi del livello di servizio sono fondamentalmente una delega 1: 1 ai repository. Non sono sicuro se questo dovrebbe essere considerato un "buon" esempio di DDD? Sto ancora imparando da solo, ma i campioni di S # arp Architecture sembrano essere un esempio migliore per coloro che imparano la DDD perché comprende sia lo stato che il comportamento, che è un buon design OOP. –

22
progetti

Non sorgente per dire, ma sono incappato in Parleys.com che ha un paio di buoni video che coprono DDD abbastanza bene (richiede Flash):

Ho trovato questi molto più utile degli esempi DDD quasi inesistenti attualmente disponibili.

+0

Questi sembrano eccellenti. Ottimo contributo! grazie. – jlembke

+1

yo, i collegamenti non funzionano ... – PositiveGuy

+6

Aggiornamento collegamenti: "Migliorare la progettazione dell'applicazione con un modello di dominio ricco" http://www.parleys.com/#sl=1&st=5&id=148 e "Ottieni gli oggetti valore giusti per Domain Driven Design "http://parleys.com/#sl=1&st=5&id=172 – BrunoSalvino

1

Time and Money, anche se lascia molto a desiderare.

+0

perchè non ti piace molto ?? cosa vuoi dire con molto a desiderare in questo esempio di codice? specifiche che non ti piacciono? – PositiveGuy

10

Partenza Project Silk. Non solo dimostra DDD ma altri modelli all'avanguardia. Questa è un'ottima risorsa per qualsiasi sviluppatore Web. Una panoramica completa del progetto può essere trovata su MSDN.

+0

Il codice sorgente non è più disponibile :( – Dherik

5

Questo è un buon esempio basato sulla progettazione basata su domini e spiega perché è importante avere un livello di dominio separato.
Microsoft spain - DDD N Layer Architecture

+0

Non posso votare questo, ma andare sul blog di Ayende per vedere perché pensa che questo non sia un buon esempio. Http://ayende.com/blog/19457/review-microsoft-n -layer-app-campione-parte-i – Chris

5

ddd-cqrs-sample è anche una buona risorsa. Scritto con Java, Spring e JPA.