ASP.NET MVC-Projektstruktur für größere Sites

8

Ich bin überrascht, dass ich dort nicht mehr Diskussionen über ein Problem finden kann, das mich bei unserem Projekt mit ASP.NET MVC wirklich stört.

Wie können Sie mit einer Visual Studio-Lösung mit mehreren Projekten umgehen? Das MVC-Framework hat den Ordner Models / Views / Controllers im Hauptprojekt. Aber was, wenn Sie Ihre Lösung in mehrere Projekte entlang logischer Gruppierungen aufteilen und die Modelle / Ansichten / Controller mitbringen möchten? Wenn ich bis zum Ende des Projekts nachdenke, wird es in jedem dieser Ordner viele Klassen geben. Es malt keine sauber organisierte Struktur, die die Wartung unterstützt. Wir möchten, dass die Klassen entweder in die Projekte verschoben werden, auf die sie sich beziehen, oder dass sie zumindest eine Ordnerstruktur verwenden, um die Organisation zu unterstützen.

Ich gehe davon aus, dass eine Option darin bestehen würde, in allen anderen Projekten den gleichen Namespace zu verwenden wie das Hauptprojekt, aber ich bin kein großer Fan dieses Ansatzes. Dies ist nicht unser Ansatz habe ich normalerweise bei der Definition unseres Namensraumes genommen.

Ich nehme an, wir könnten zumindest Unterordner innerhalb der M / V / C-Ordner erstellen und die Ordnernamen nicht in die Namespaces übertragen. Ich gehe davon aus, dass die Klassen gefunden werden könnten?

Einige Hintergrundinformationen zu unserem Projekt: Es handelt sich um eine öffentlich zugängliche Website mit vielen Geschäftstransaktionen, die der Benutzer ausführen kann (ca. 50-60). Jede Transaktion hat eine Reihe von Webseiten, durch die der Benutzer navigiert, um die verschiedenen von der Site bereitgestellten Dienste zu erreichen. Wir verwenden für jede Transaktion einen einzigen Controller (es gab lange Diskussionen darüber, ob wir für jede Transaktion einen Controller definieren sollten oder ob wir eine höhere Gruppierung verwenden sollten und daher die Anzahl der Controller verringern sollten, aber einige Informationen, die wir haben im Internet gefunden ( Ссылка ) hat uns zu dieser Entscheidung gebracht .)

Was sind Empfehlungen? Haben andere dieses Problem so gelöst, dass sie damit zufrieden sind?

Danke Jon.

    
Jon Kroeker 20.10.2009, 17:19
quelle

3 Antworten

3

Sehen Sie sich Bereiche an.

Areas ist ein Konzept, das von MonoRail übernommen wurde, das Controller in logischen Ordnern organisiert.

Ссылка

    
Robert Harvey 20.10.2009 17:28
quelle
3

Bereiche werden in Asp.Net MVC2 unterstützt.

Scott Gu hat einen Blog über die Bereich Unterstützung hier .

Von seinem Posten.

  

Jeder Bereich kann als a implementiert werden   separates ASP.NET MVC-Projekt, das kann   dann wird von der Hauptsache referenziert   Anwendung. Dies hilft beim Verwalten der   Komplexität beim Bau eines großen   Anwendung und erleichtert mehrere   Teams arbeiten zusammen an einem einzigen   Anwendung zusammen

    
J.W. 20.10.2009 18:27
quelle
0

Ich lösche immer den Ordner "models" und referenziere separate Klassenbibliotheken, die meine Geschäftslogikschichten und Datenzugriffsebenen darstellen. Ich habe auch einige Lösungen, wo meine Controller in separaten Projekten aus meinen Ansichten gehalten werden. Ich stimme zu, dass das Einzelprojektmodell in größeren Anwendungen unangemessen ist. Selbst in kleineren Apps, insbesondere dort, wo Modellcode mit anderen Anwendungen geteilt werden muss, ist das Einfügen von Modellklassen in das eigentliche MVC-Projekt eine schlechte Idee.

    
Matt Wrock 20.10.2009 17:38
quelle