2012-08-06 21 views
7

Una reazione comune che vedo per molte domande poste qui e altri forum è come "Non è necessario fare DDD per questo: è una semplice applicazione CRUD, DDD è un over-engineering".DDD è adatto per tutti i tipi di applicazione?

Beh, sono nuovo di DDD e ritengo che ci siano molti elementi in DDD che hanno un fascino universale e possono essere utilizzati su tutta la linea, indipendentemente dal fatto che l'applicazione sia complessa per il DDD. Per esempio, stratificazione di applicazioni, artefatti differnenti che DDD riconosce, ecc. Può essere il punto di partenza delle basi e dei modelli certamente anemici e quindi lavoro/refattore verso la stessa purezza che si può ottenere.

Questo approccio sembra buono?
Oppure diresti che c'è una scelta fondamentale nella progettazione di ogni applicazione in termini di se andare in modo DDD o no, una specie di scelta "tutto o niente"?

UPDATE(per fornire più contesto, in risposta a Hugh di commento qui sotto)
  Sto costruendo un webapp intorno ad un tipo esistente RuleEngine di applicazione, fondamentalmente CRUD e alcune convalide, invarianti e quindi un processo di implementazione. L'authoring di regole e il controllo semantico sono fatti da una parte di codice standalone che io chiamo come parte del CRUD e nessuna di quella logica specifica semantica è presente nel mio codice. Sto cercando di utilizzare DDD per questa applicazione, ma vedo che potrebbe non essere abbastanza complicato da adattarsi al paradigma DDD. Non esiste un linguaggio ubiquitario definito per il dominio. La lingua non è sufficientemente specializzata oltre a nominare l'insieme di entità coinvolte. Ho sentito parlare il mio esperto di dominio in termini di creazione, modifica, eliminazione di entità.

+2

È improbabile che la tua domanda susciti molte risposte poiché non stai affrontando una specifica sfida tanto quanto tentare di avviare una discussione generalizzata sull'adeguatezza di un determinato approccio, a cui la risposta di solito è "Dipende". –

+1

grazie hugh! per il commento puntato e downvote, vedere l'aggiornamento sopra, ho cercato di aggiungere qualche contesto, sperando che questo lo aiuti a superare il punto "dipende" :). – redzedi

+0

Non ero il downvoter in questa istanza. +1 per fornire maggiori dettagli. –

risposta

5

DDD non è tutto o niente. Inoltre, molti dei modelli descritti in DDD non sono nuovi e possono essere trovati dappertutto. Eric Evans (l'autore del libro DDD) li ha appena assemblati, li ha formalizzati dove necessario e li ha messi in relazione l'uno con l'altro. Sei libero di usare ciò che si adatta al tuo spazio problematico.

Spesso trascurato: DDD descrive schemi di implementazione e modelli di analisi. I modelli di analisi possono essere eccessivi in ​​molte (se non la maggior parte) applicazioni, ma i modelli di implementazione (ad esempio Entità, Specifiche, Servizi) possono essere di grande utilità anche in scenari meno complessi.

2

Insomma,

Se è solo CRUD, non mi preoccuperei.

D'altra parte,

Se è ottenuto un comportamento, dove il prossimo stato di qualcosa si basa sullo stato precedente, quindi DDD è qualcosa che probabilmente desidera prendere in considerazione.

Problemi correlati