23 Stimmen

Verwendung von MVC/MVVM-Mustern auf der Client-Seite mit MVC-Mustern auf der Server-Seite

Unter Berücksichtigung der gängigsten MVC/MVVM-Client-seitigen Muster (wie Knockout.js , Angular.js , Ember.js und andere), habe ich einen großen Zweifel:

Auch unter Berücksichtigung der Redundanz bei der Modellierung auf beiden Seiten, Was sind die Vor- und Nachteile der Verwendung dieser clientseitigen Muster mit MVC-Mustern auf der Serverseite?

5voto

eulerfx Punkte 35316

Der Vorteil ist, dass die clientseitigen Muster auf dem Client anwendbar sind, wo der Server keinen direkten Zugang hat. Wenn Sie eine reichhaltige, interaktive HTML-Benutzeroberfläche erstellen, verwenden Sie clientseitiges MVVM. Serverseitiges MVC kann in diesem Fall immer noch relevant sein, um dem Client geeignete Inhalte zu liefern. ASP.NET WebAPI ist beispielsweise ein Framework zur Erstellung von HTTP-APIs, das eine ähnliche Controller-Architektur wie das ASP.NET MVC-Framework aufweist. Die mit diesem Framework implementierte API kann von clientseitigem Code aufgerufen werden, was zu MVC auf der Serverseite und MVVM auf der Clientseite führt. Normalerweise sind bei der Verwendung von MVC auf der Serverseite und MVVM auf der Clientseite die Verantwortlichkeiten der jeweiligen Seiten sehr unterschiedlich, so dass es keine Redundanz gibt.

4voto

VeenarM Punkte 1233

Die Tatsache, dass man ein MVVM-Modell in ein bereits implementiertes MVC-Framework einbinden kann, ist ebenfalls eine tolle Sache. Wir haben vor kurzem Knockout zu einigen neuen Projektseiten hinzugefügt, um sie in ein bereits veraltetes MVC-Framework einzupassen (alte Seiten, nicht das Framework selbst).

Ich denke, MVVM ist fantastisch, wie die obige Antwort besagt, dass es eine außergewöhnliche Benutzererfahrung mit extrem schnellen Antwortzeiten bietet, Sie können Ihre Validierungsaufrufe im Hintergrund verstecken, ohne sie zu verlangsamen, und seine intuitive.

Der Schmerz ist jedoch, dass es sehr schwer zu testen und Sie können einige extrem GROSSEN Javascript-Dateien zu erhalten, auch die zusätzliche Codierung haben wir zu tun, wie unsere Legacy-Systeme noch auf IE6 laufen ist lächerlich.

Aber MVVM und MVC müssen nicht ausschließlich für sich allein verwendet werden, wir verwenden beides. Aber mit 3 Ebenen der Validierung ist etwas, das immer noch stört mich.

2voto

hakre Punkte 184133
  • Vorteile
    • Das kann rocken.
  • Nachteile
    • Sie können es vergessen.

Ganz im Ernst. Wenn Sie einen Teil der Frontend-Logik in den Browser verlagern, kann dies Ihre Anwendungsentwicklung fördern, da die Datenverarbeitung auf der Serverseite gekapselt ist.

Das ist im Grunde genommen eine Schichtung. Zwei Schichten, die obere spricht mit der unteren und umgekehrt:

[client] <--> [server]

Normalerweise tauschen Sie Wertobjekte in einem leichtgewichtigen Serialisierungsformat wie Json zwischen den beiden aus.

Dies kann ziemlich gut abbilden, was Benutzer in einer nützlichen Struktur erwarten, während Domänenobjekte auf der Serverseite nicht so detailliert sein können.

Allerdings wird die wirkliche Macht sein, wenn die Server-Seite nicht in Javascript an einem bestimmten Punkt geschrieben wird, weil ich denke, Sie können nicht gut Domain-Objekte dort erstellen. Betrachten Sie Scala (oder etwas ähnlich ausdrucksstark) dann falls Sie auf dieses Problem stoßen.

2voto

Gustavo Gondim Punkte 1575

Zehn Monate später, nach dieser Frage, habe ich beide Muster in derselben Anwendung verwendet.

Das einzige Problem war, dass die Modelle zweimal abgebildet werden mussten.

MVC (ASP.NET MVC 4 Web API)

Die wichtigste Ressource waren die Routen.

  • Es wurden Modelle für Datenbankinteraktionen und als Argumente für Aktionen von Controllern.
  • Controller wurden geschaffen, um die API zu manipulieren Requisiten zu bearbeiten und die Ansichten zu rendern.
  • Ansichten wurden nicht mit serverseitigen Modellen modelliert. Server-seitigen Modellen modelliert, sondern alle Ressourcen von Partial Views und Abschnitte.

MVVM (Knockout.js)

  • Die Modelle wurden mit denselben Eigenschaften wie die serverseitigen Modelle erstellt.
  • Die Ansichten wurden mit den Eigenschaften der Modelle verknüpft, wodurch die Größe der Ansichten erheblich verringert wurde.
  • Die Ansichtsmodelle wurden mit den von den API-Methoden bereitgestellten Werten erstellt.

Insgesamt war die MVC-Kombination mit MVVM sehr nützlich, aber sie erforderte ein großes Fachwissen und Kenntnisse. Auch Geduld ist erforderlich, da man über die Zuständigkeiten der einzelnen Anwendungsschichten nachdenken muss.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X