2008-10-07 1 views
5

Im Allgemeinen haben MVC frameeworks eine Struktur, die so etwas wie folgt aussieht:Unter einem MVC-Framework, welche Verzeichnisstruktur würde von anderen Entwicklern erwartet?

/models 
/views 
/controllers 
/utils 

jedoch in einer Web-Anwendung Suite, habe ich beschlossen, dass alle Modelle Verklumpung, Ansichten und Controller zusammen wahrscheinlich nicht die beste sein würde, zur Klarheit, es sei denn, ich behandelte das System als eine Anwendung anstelle einer Anwendungssuite. Einige Dinge binden jedoch jede "Anwendung" zusammen, wie die Vorstellung von Benutzern und Benutzerrollen. So

Ich habe drei mögliche Lösungen:

(1) Tun Sie, was ich nicht wirklich tun wollen, und halten jedes Modell, View und Controller zusammen, unabhängig davon, welche App sie gehört. Dies behandelt die Suite als eine einzelne Anwendung, da sie durch mehrere gemeinsame Threads, einschließlich Benutzer, miteinander verbunden sind.

(2) Gruppieren Sie den Code nach Anwendung.

(3) Gruppieren Sie den Code nach Typ, sodass der Dienstprogrammcode für alle Anwendungen freigegeben wird.

/models 
    /app1 
    /app2 
/views 
    /app1 
    /app2 
/controllers 
    /app1 
    /app2 
/utils 

Gibt es eine Option, die ich verpasst habe? Was wäre das logischste Schema für zukünftige Entwickler? Ich persönlich bevorzuge 2 und 3, aber vielleicht die meisten Menschen erwarten 1.

Antwort

5

Es scheint wie 2) wäre Ihre beste Option, vorausgesetzt, Sie wollen einige Trennung von Anwendungen. Sie könnten auch einen Ordner "/ common" auf der "/ app #" - Ebene für freigegebene Ressourcen über alle Anwendungen ... wie eine gemeinsame Dienstprogrammklasse oder was auch immer haben.

1

Wenn Ihre Apps Daten teilen, könnte es Sinn machen (für mich), die Modelle zusammen zu gruppieren.

Für die Ansichten und Controller ist es jedoch wahrscheinlich sinnvoller, sie getrennt zu halten, da ich davon ausgehe, dass sie separate Geschäftslogik und Präsentationen haben.

Weiter, wenn Ihre Apps separat in der Versionskontrolle gehalten werden (Sie verwenden die Versionskontrolle, oder? :), macht dies die erste oder dritte Option schwierig zu implementieren.

Alles in allem würde ich wahrscheinlich die Anwendungen auf der obersten Ebene, wie in Ihrem zweiten Beispiel, trennen.

1

Normalerweise gruppiere ich den Code nach Funktion, daher würde die Gruppierung nach Anwendung für mich am sinnvollsten sein. Der Grund dafür ist, dass ich, wenn ich an einer bestimmten Funktion arbeiten möchte, nicht drei separate Ordner durchsuchen muss, um nach den benötigten Komponenten zu suchen. Wenn Sie nach der High-Level-Funktion gruppieren, wissen Sie, dass alles, was Sie brauchen, zusammen ist.

6

2 ist ein guter Anfang. Sie sollten einen gemeinsamen Ordner in Erwägung ziehen, in dem Sie alle gängigen Modelle, Ansichten und Utils speichern können, die von allen Apps in der Anwendungssuite verwendet werden.

+0

Dies scheint definitiv die praktischste Lösung. – CodeVirtuoso

Verwandte Themen