2015-05-15 12 views
5

Ho iniziato a imparare i principi del DDD e attualmente sto cercando di comprendere il concetto di contesto limitato. In particolare, come decidi quanto deve essere grande (o piccolo)? Sì, lo so, il più piccolo possibile e grande quanto necessario (secondo Vaughn Vernon).Dimensioni di un contesto limitato

Diciamo che dovrei modellare un blog. Potrei quindi andare a dire che sono coinvolti 3 contesti limitati: 1) Front Page (contenente gli articoli più recenti, nessun commento mostrato) 2) Discussion (un singolo articolo inclusi i commenti) 3) Article Composer (dove compongo un articolo).

Tuttavia, questo non mi sembra giusto (il linguaggio ubiquo è lo stesso per tutti), sembra come se venissi da un punto di vista frontale e sto ancora pensando in termini di modelli di vista o qualcosa.

Qualcuno potrebbe indicarmi la giusta direzione?

+1

Non sono un esperto dell'argomento, ma penso che tu abbia ragione. Parole come articolo e commenti hanno sempre lo stesso significato, quindi è un singolo contesto limitato, che non è complicato, tutto ciò che fa è semplice CRUD. – inf3rno

+3

Potrebbe non valerne la pena in questo caso, ma le BC emergeranno dal comportamento e dai concetti. Ad esempio, il tuo blog potrebbe avere un contesto di gestione che consente ai super amministratori di vietare account ed eseguire altre attività amministrative. Questi non fanno realmente parte del dominio principale di un blog e possono giustificare un nuovo BC. – plalx

+0

@plalx Un buon punto, mi ricorda immediatamente l'esempio nel libro di Vernon. –

risposta

2

provare a guardare tutto il tuo dominio da diversi punti di vista, come un editor di articolo, probabilmente userò frasi come la creazione di una bozza di un articolo, la pubblicazione di un articolo, come un articolo un lettore che in esempio leggi l'articolo e commentalo. Oltre a costruire la tua lingua di dominio, identificerai le entità e il loro comportamento, alcune di esse appariranno solo in una prospettiva, alcune appariranno in entrambe, ma tu le distingerai dal loro comportamento. La tua lingua di dominio ti mostra i confini di ogni prospettiva, che implementa come contesti limitati.

+0

Sì, era l'idea. Un commento non ha alcun senso durante la composizione di un articolo, e l'aggiunta di immagini nel compositore è simile a quella, in quanto non ha alcun senso in prima pagina. –

+0

In realtà ho creato queste azioni per Composition BC: UpdateTitle, UpdateContent, Publish and Retract. Al contrario ho aggiunto AddComment per le discussioni BC. –

4

Un blog non è un buon esempio per l'utilizzo di più contesti limitati. Non è davvero un esempio di software "abbastanza grande" da giustificare le loro definizioni. DDD & Le BC sono davvero rivolte a sistemi software complessi e complessi.

Come dici tu, gli aggregati hanno sempre lo stesso significato nei tuoi 3 esempi.

ho dato questo esempio di Context Bounded in una precedente risposta, che spero spiega BC di e quando usarli: Bounded Contexts and Aggregate Roots

+0

Mi sto solo bagnando i piedi e mentre sono in procinto di costruire un sito web ho pensato perché non applicare DDD qui per sperimentare.Sono perfettamente consapevole del fatto che si tratti di una sorta di esagerazione, ma non mi dispiace se così facendo potrei avere una certa esperienza con DDD. –

0

L'esempio migliore che ho letto dai sottodomini finora è il seguente.

Basta esaminare la società attuale! Ogni dipartimento che prende parte al processo di business può avere il proprio sottodominio. In un mondo ideale, ciascun sottodominio ha il proprio contesto limitato nella propria implementazione. Dovresti chiederti se l'azienda ha bisogno di un nuovo dipartimento per farlo? È davvero così grande?

Il BC deve essere abbastanza grande da descrivere un reparto di un'azienda. Un esempio tipico è un negozio online, in cui si ha un dominio principale dello shopping e sottodomini di fatturazione, consegna e archiviazione. Avere multi-tenancy e così molteplici aspetti, come descritto in precedenza, non è sufficiente. Un blog con un autore e pochi lettori non richiede più dipartimenti, quindi puoi risolverlo con un singolo contesto limitato. Puoi avere più moduli nel tuo contesto limitato se pensi di avere strutture di medie dimensioni nel tuo contesto limitato.