Frage

Wie Sie Faktor Ihre Domain (Namespaces), in Domain Driven Design?

Ich habe zu folgendem Konzept zu bewegen:

Project.Entity
  Project.Entity.Abstracts
  Project.Entity.Entities
  Project.Entity.Extensions
  Project.Entity.Immutables
  Project.Entity.Interfaces
  Project.Entity.Repositories

Zum Beispiel habe ich ein Unternehmen in einem CMS „Content“ genannt. Also, ich würde ein Projekt erstellen Project.Content genannt, und die Klassen Faktor wie folgt aussehen:

interface IContent
class Content : IContent

interface IContentRepository
class ContentRepository : IContentRepository

Dieses "Content" Entity-Modell würde seinen eigenen Namensraum hat.

Aber ich finde es nicht gut mit weit über ein Dutzend Projekte in einer großen Enterprise-Umgebung skaliert (versuchen 18) von „Entity“ -Modelle. I-Ende mit mehr als einem Dutzend Projekten mit einer Lösung auf, von denen einige nur 2 oder 3 Klassen (d.h. UrlRewriter). Auch finde ich mich Referenzierung andere Projekte nur für ihre Schnittstellen. Ich fühle mich wie dies poluting meine Domain; während nicht concret Referenzen, ist es manchmal schwierig, aus zirkulären Referenzen zu halten.

Also, ich falle zurück in die "Layer" -Konzept manchmal ...

Ich will wissen, wie andere DDD Experten der Enterprise-Größe Anwendungen Factoring. Bitte zögern Sie Bücher und Artikel zu empfehlen.

Und Dank im Voraus!

War es hilfreich?

Lösung

Man sollte meinen, dass ich tue, ist etwas hinzufügen, die den beschränkten Kontext identifiziert sie.

Ps. beiden Links auf beschränkten Rahmen, um sicherzustellen, ist es klar, warum, überprüfen:    http://dddcommunity.org/discussion/messageboardarchive/BoundedContext.html , http://devlicio.us/blogs/casey/ Archiv / 2009/02/11 / ddd-beschränkte contexts.aspx

Andere Tipps

Ich folge verwenden, um die .NET Richtlinien . Ich finde sie sehr intuitiv und sie ermöglichen es Ihnen, Setup-Namensraum, so dass Sie Sie nichts importieren müssen nicht brauchen.

Ich würde nie eine strenge Namenskonvention für die Funktionsebene verhängen. Das Design jedes einzelnen Projekt sollte, dass führen.

ich Ihnen ähnlich habe herausgefunden, dass die Last von Projekten mit einem Schmerz wird zu verwalten. Ich ziehe die

Project.Domain
Project.DataAccess
Project.Presentation (presenters and such) 
Project.Gui (in case of a winforms app)

Setup.

In einer Art und Weise, die Dinge einfach hilft viel, wenn die Dinge schlecht gehen.

Die Frage ist, was Sie gewinnen, wenn Sie ein anderes Projekt erstellen? (Es ist sehr einfach, so zu tun, fast zu leicht)

Werden Sie jemals das Projekt unabhängig verwenden oder nicht? Sie könnten mit dem daraus resultierenden .dlls Ende so gekoppelt man sie nicht einmal bereitstellen können, ohne genau zu sein den gleichen Versionen usw. in diesem Fall gibt es wenig Grund für Aufspaltung und unübersichtlich Ihre IDE)

Sie können immer Dinge in ein neues Projekt bewegen später, wenn die Notwendigkeit entsteht, ist es etwas schmerzhaft ist, aber zu diesem Zeitpunkt würden Sie haben einen guten Grund, es zu tun abgesehen von nur das Gefühl, dass die Art und Weise ist es gemacht wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top