2015-05-15 17 views
5

Ich habe angefangen, die Prinzipien von DDD zu lernen und versuche gerade, das Konzept eines begrenzten Kontexts zu verstehen. Insbesondere, wie entscheidest du, wie groß (oder klein) es sein muss? Ja, ich weiß, so klein wie möglich und so groß wie nötig (laut Vaughn Vernon).Größe eines begrenzten Kontextes

Sagen wir, ich sollte ein Blog modellieren. Ich könnte dann sagen, dass es 3 beschränkte Kontexte gibt: 1) Titelseite (mit den neuesten Artikeln, keine Kommentare gezeigt) 2) Diskussion (ein einzelner Artikel mit Kommentaren) 3) Artikel Composer (wo ich einen Artikel verfasse).

Allerdings fühlt sich das nicht richtig an (die allgegenwärtige Sprache ist für alle gleich), es scheint, als käme ich von einem Front-End-Standpunkt aus und denke immer noch an Sichtmodelle oder etwas.

Könnte mir bitte jemand in die richtige Richtung zeigen?

+1

Ich bin kein Experte für das Thema, aber ich denke, Sie haben Recht. Wörter wie Artikel und Kommentare haben immer die gleiche Bedeutung, also ist es ein einzelner beschränkter Kontext, der nicht kompliziert ist, alles was er tut ist CRUD. – inf3rno

+3

Es ist in diesem Fall vielleicht nicht wert, aber BCs werden aus Verhalten und Konzepten hervorgehen. Zum Beispiel kann Ihr Blog einen Verwaltungskontext haben, der es Superadministratoren erlaubt, Konten zu sperren und andere administrative Aufgaben auszuführen. Diese sind nicht wirklich Teil der Kerndomäne eines Blogs und können ein neues BC rechtfertigen. – plalx

+0

@plalx Guter Punkt, erinnert mich sofort an das Beispiel in Vernons Buch. –

Antwort

2

Versuchen Sie, schauen Sie sich Ihre gesamte Domain aus verschiedenen Perspektiven, als Redakteur des Artikels, Sie wahrscheinlich werden Sätze wie das Erstellen eines Entwurfs eines Artikels, das Veröffentlichen eines Artikels, als ein Artikel ein Leser verwenden, den Sie beispielsweise Artikel lesen und kommentieren werden. Neben dem Aufbau Ihrer Domänensprache werden Sie Entitäten und ihr Verhalten identifizieren, einige von ihnen werden nur in einer Perspektive erscheinen, einige werden in beiden erscheinen, aber Sie werden sie durch ihr Verhalten unterscheiden. Ihre Domänensprache zeigt Ihnen die Grenzen jeder Perspektive, die Sie als beschränkte Kontexte implementieren.

+0

Ja, das war die Idee. Ein Kommentar macht beim Verfassen eines Artikels keinen Sinn und das Hinzufügen von Bildern im Composer ist ähnlich, da er auf der Titelseite keinen Sinn ergibt. –

+0

Ich habe tatsächlich diese Aktionen für die Komposition BC: UpdateTitle, UpdateContent, Publish und Retract. Im Gegensatz dazu habe ich AddComment für die Diskussionen BC. –

4

Ein Blog ist kein gutes Beispiel für die Verwendung von mehreren begrenzten Kontext. Es ist nicht wirklich ein "groß genug" Software-Beispiel, um ihre Definitionen zu rechtfertigen. DDD & BCs sind wirklich auf große/komplexe unternehmungslustige Softwaresysteme ausgerichtet.

Wie Sie sagen, haben die Aggregate immer die gleiche Bedeutung in Ihren 3 Beispielen.

Ich habe dieses Beispiel Bounded Context in einer früheren Antwort, die ich hoffe, erklärt BC und wenn sie benutzen: Bounded Contexts and Aggregate Roots

+0

Ich habe nur meine Füße nass gemacht und während ich daran arbeite, eine Website zu erstellen, habe ich mir überlegt, warum man DDD nicht hier anwenden sollte, um damit zu experimentieren.Ich bin mir vollkommen bewusst, dass dies eine Art Overkill ist, aber es macht mir nichts aus, wenn ich dadurch etwas Erfahrung mit DDD sammeln kann. –

0

Das beste Beispiel, das ich bisher von Subdomains gelesen habe, ist das folgende.

Überprüfen Sie nur die tatsächliche Firma! Jede Abteilung, die am Geschäftsprozess teilnimmt, kann ihre eigene Subdomain haben. In einer idealen Welt hat jede Subdomain ihren eigenen beschränkten Kontext in Ihrer Implementierung. Sie sollten sich fragen, ob das Unternehmen dafür eine neue Abteilung benötigt? Ist das wirklich so groß?

Das BC muss groß genug sein, um eine Abteilung eines Unternehmens zu beschreiben. Ein typisches Beispiel ist ein Webshop, in dem Sie eine Shopping-Kern-Domain sowie Subdomänen für Rechnungsstellung, Lieferung und Speicherung haben. Multi-Tenancy und so multiple Aspekte zu haben - wie eine vorherige Antwort beschrieben - ist nicht genug. Ein Blog mit einem Autor und ein paar Lesern erfordert nicht mehrere Abteilungen, so dass Sie dies mit einem einzigen begrenzten Kontext lösen können. Sie können mehrere Module in Ihrem begrenzten Kontext haben, wenn Sie denken, dass Sie mittelgroße Strukturen in Ihrem beschränkten Kontext haben.