Thunderdome MVC- Warum One-Model-in in MVC?

8

Wenn Jeremy & amp; Tschad berichtete über ihr FubuMvc-Projekt , einer ihrer Unterscheidungsmerkmale war ihr" Thunderdome Principal ":

  

Das "Thunderdome-Prinzip" - Alles   Controller-Methoden nehmen eins auf   ViewModel-Objekt (oder null Objekte in   einige Fälle) und eine einzige zurückgeben   ViewModel-Objekt (ein Objekt tritt ein,   ein Objekt verlässt). Der Controller   Klassen werden NIE direkt ausgesetzt sein   alles, was mit HttpContext zu tun hat.   Nichts lässt mich weinen wie sehen   Leute, die versuchen, Tests zu schreiben, die spotten   oder stub das neue IHttpContextWrapper   Schnittstelle. Ebenso Controller   Methoden geben ViewResult nicht zurück   Objekte und sind in der Regel entkoppelt   von allen MVC-Infrastruktur. Wir   hat diese Strategie sehr früh als   eine Möglichkeit, Controller-Tests durchzuführen   einfacher mechanisch. Es ist auf jeden Fall   erreicht dieses Ziel, aber es ist auch gemacht   der Controller-Code ist sehr gestrafft   und einfach zu lesen. Wir erklären wie   Das funktioniert bei KaizenConf.

Welchen Vorteil hat ihr 'ein ViewModel (oder null) in -Ansatz?

    
Troy 05.02.2009, 22:44
quelle

3 Antworten

9

Der Hauptvorteil ist, dass es eine Konvention ist und die Dinge über alle unsere Controller hinweg konsistent sind. Es erleichtert uns das Testen von "Kontexten" / Fixtures, die die Umgebung in einem Integrationstestszenario initialisieren können. In den meisten Fällen ist Konventionen == Schnelligkeit, da es viele "Was-wäre-wenn" -Szenarien von Ihren Design-Überlegungen entfernt.

Da alle unsere Controller-Aktionen dem gleichen Muster folgen, können wir viele Dinge annehmen und es beschleunigt und rationalisiert unsere Controller-integrierten Test-Bemühungen.

Es ist nicht falsch, mehrere Argumente für eine Controller-Aktion zu haben, aber wir haben herausgefunden, dass uns ein echtes Model-Objekt zusätzliche Funktionalität bietet, da das Modell einfache Logik enthalten und Convenience-Eigenschaften aufzeigen kann, die einfach mehr sein können komplexe Aspekte des eigenen Zustands, usw. - im Grunde ist dies das Argument für jedes Rich-Modell und nicht nur für das Thunderdome / OMIOMO-Muster.

    
chadmyers 06.02.2009, 16:12
quelle
0

Der Vorteil ist, dass Sie sich nicht auf irgendeine Art von Kontext (wie zum Beispiel Sitzungsstatus) von außerhalb der Controller-Methoden verlassen. Das macht es einfacher, sie zu testen, da Sie diesen Kontext nicht mit Mocks "simulieren" müssen, aber es macht es auch weniger praktisch, da Sie alles nach Parametern übergeben müssen.

    
Dave Van den Eynde 05.02.2009 23:25
quelle
0

Der Vorteil des Thunderdome-Prinzips ist, dass es die Controller vereinfacht. Da die Zuordnung von http-Werten zu Objekten außerhalb der Controller erfolgt, bedeutet dies, dass die Controller nur das tun, was sie tun sollten.

    
liammclennan 06.02.2009 04:25
quelle