DDD è valido solo per l'elaborazione in batch?

2

Leggete il mio primo libro su DDD (" Modellazione del dominio resa funzionale: Tackle Software Complexity with Domain-Driven Design and F # " di Scott Wlaschin nel caso in cui faccia qualche differenza), e vieni via con la netta impressione che DDD sia ottima per l'elaborazione in batch, ma non necessariamente così buona per altre cose.

Il suo esempio era un sistema di elaborazione degli ordini, in cui l'input è un modulo cartaceo del cliente. I dati non convalidati entrano nella prima fase del flusso di lavoro, dove viene convertito in un ordine convalidato (o rimbalzato indietro se non valido), che è l'input per il secondo stadio e così via. Il risultato finale è un sacco di eventi che indicano cosa è successo e / o dovrebbe succedere dopo. Questa è una pipeline ininterrotta.

Al contrario, la maggior parte del mio lavoro consiste nel prelevare dati da un database, visualizzarli su una pagina Web della finestra del desktop, attendere che l'utente apporti alcune modifiche e quindi salvare i dati modificati nel database. Non riesco davvero a capire come la DDD potrebbe esserci d'aiuto. È solo un flusso di lavoro a un livello.

Mi sono perso qualcosa o il DDD è davvero utile solo per l'elaborazione in batch?

    
posta Avrohom Yisroel 22.05.2018 - 17:41
fonte

2 risposte

6

DDD è un approccio alla costruzione di modelli di dominio, incentrato su una comunicazione chiara e concetti condivisi. Secondo me, ciò significa che è adatto per qualsiasi dominio, e in particolare per quelli complessi. Quando il gioco si fa complesso, è importante avere un progetto basato su una profonda comprensione del dominio. Nel libro "Domain Modelling Made Functional" è stato utilizzato un dominio relativamente semplice per concentrarsi su ciò che è nuovo per la maggior parte dei lettori: l'uso di tipi algebrici per la modellazione del dominio e l'approccio funzionale all'implementazione di un flusso di lavoro.

Per quanto riguarda "l'elaborazione in batch", il libro utilizza funzioni (ovviamente) per modellare i flussi di lavoro avviati dagli eventi. In una progettazione orientata agli oggetti, il flusso di lavoro potrebbe essere rappresentato come un metodo su un servizio . In nessuno dei due casi questo è equivalente alla definizione tradizionale di "elaborazione in batch" .

È vero che ci sono alcuni paralleli. In un approccio funzionale, proprio come in un processo batch, i dati vengono generalmente elaborati in una pipeline, trasformati in ogni fase del processo. Ma una chiamata di funzione può essere completata in modo sincrono in millisecondi, quindi non è esattamente la stessa:)

    
risposta data 22.05.2018 - 19:41
fonte
5

DDD only really useful for batch processing?

No, la progettazione basata sul dominio è utile per la modellazione di domini complessi.

Il tuo riferimento principale è " il libro blu " di Eric Evans. Se ti capita di avere una copia a portata di mano, i Patterns of Enterprise Application Architecture di Martin Fowler hanno una breve discussione sul pattern del modello di dominio rispetto ad altri disegni.

Due cose che potrebbero non essere familiari e quindi confondere

1) La parte più importante di un modello di dominio è il bit che gestisce change ; il modello include la logica che decide, ad esempio, cosa viene memorizzato nel database; le modifiche dell'utente sono valide, le modifiche dell'utente sono coerenti con le informazioni attualmente archiviate nel database e così via.

2) In molti casi, l'applicazione può essere separata in modo pulito in due parti: la logica del dominio centrale che gestisce l'integrità dei dati e il plumbing che sposta i messaggi in giro. Dal punto di vista del core , la maggior parte delle applicazioni ha una pipeline ininterrotta quando apporta modifiche. Sono nello stato questo , ho ricevuto questo messaggio da un utente, quindi ora dovrei trovarmi in quello .

Detto questo, la modellazione dei domini avanzati non è sempre la migliore adatta allo scopo; se si è solo un database, la memorizzazione delle informazioni per il successivo recupero, quindi la creazione di un modello di dominio per quello potrebbe non essere conveniente. Diventa più importante mentre ti sposti nello spettro da "database" a "servizio".

    
risposta data 22.05.2018 - 18:09
fonte

Leggi altre domande sui tag