model view controller unterschied Verwenden Sie clientseitige MVC/MVVM-Muster mit serverseitigem MVC-Muster




mvvm vs mvc (4)

Der Vorteil besteht darin, dass die clientseitigen Muster auf dem Client anwendbar sind, auf dem der Server keine direkte Reichweite hat. Wenn Sie eine umfangreiche, interaktive HTML-Benutzeroberfläche erstellen, verwenden Sie die Client-seitige MVVM. Die serverseitige MVC kann in diesem Fall immer noch relevant sein, um dem Client entsprechende Inhalte zu liefern. Beispielsweise ist die ASP.NET-WebAPI ein Framework zum Erstellen von HTTP-APIs, die eine ähnliche Controller-Architektur wie das ASP.NET MVC-Framework aufweist. Die mit diesem Framework implementierte API kann vom clientseitigen Code aufgerufen werden, was MVC auf der Serverseite und MVVM auf der Clientseite zur Folge hat. Normalerweise, wenn MVC-Server-Seite und MVVM-Client-Seite verwendet werden, sind die Verantwortlichkeiten der jeweiligen Seiten sehr unterschiedlich und somit gibt es keine Redundanz.

In Anbetracht der beliebtesten Client-seitigen MVC / MVVM-Muster (wie Knockout.js , Angular.js , Ember.js und andere) habe ich einen großen Zweifel:

Betrachtet man auch die Redundanz der Modellierung auf beiden Seiten, was sind die Vor- und Nachteile, diese clientseitigen Muster mit serverseitigen MVC-Mustern zu verwenden?


  • Vorteile
    • Das kann rocken.
  • Vorteile
    • Sie können es schrauben.

Ernst. Wenn Sie einen Teil der Frontend-Logik in den Browser übertragen, kann dies die Anwendungsentwicklung verbessern, weshalb Sie auf der Serverseite eine striktere Datenverarbeitung beibehalten.

Dies ist im Grunde eine Schicht. Zwei Schichten, die eine oben, spricht mit der unteren und umgekehrt:

[client] <--> [server]

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

Dies kann recht gut zuordnen, 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 an einem bestimmten Punkt nicht in Javascript geschrieben ist, weil ich denke, dass Sie dort keine Domain-Objekte erstellen können. Betrachten Sie Scala (oder etwas Ähnliches ausdrucksvoll), wenn Sie auf dieses Problem stoßen.


Die Tatsache, dass Sie ein MVVM-Modell in ein bereits implementiertes MVC-Framework integrieren, ist ebenfalls eine großartige Sache. Vor kurzem haben wir einigen neuen Projektseiten einen Knockout hinzugefügt, der in ein bereits veraltetes MVC-Framework passt (alte Seiten, nicht das Framework selbst).

Ich denke, MVVM ist fantastisch, da die obige Antwort besagt, dass es eine außergewöhnliche Benutzererfahrung mit extrem kurzen Antwortzeiten bietet. Sie können Ihre Bestätigungsaufrufe im Hintergrund verstecken, ohne sie zu verlangsamen und es ist intuitiv.

Der Schmerz ist jedoch, dass es sehr schwierig ist, Unit-Test und Sie können einige sehr große Javascript-Dateien erhalten, auch die zusätzliche Codierung, die wir tun mussten, da unsere Legacy-Systeme noch auf IE6 laufen, ist lächerlich.

Aber MVVM und MVC müssen nicht ausschließlich dort verwendet werden, wir verwenden beide. Aber 3 Validierungsebenen sind etwas, was mich immer noch nervt.


Zehn Monate später nach dieser Frage habe ich die beiden Muster in der gleichen Anwendung verwendet.

Das einzige Problem war die Notwendigkeit, die Modelle zweimal abzubilden.

MVC (ASP.NET MVC 4-Web-API)

Die wichtigste Ressource waren die Routen.

  • Modelle wurden für Datenbankinteraktionen und als Argumente für die Aktionen der Controller erstellt.
  • Controller wurden erstellt, um die API-Anforderungen zu bearbeiten und die Ansichten zu rendern.
  • Ansichten wurden nicht mit serverseitigen Modellen, sondern mit allen Ressourcen von Teilansichten und Abschnitten modelliert.

MVVM (Knockout.js)

  • Modelle wurden mit den gleichen Eigenschaften wie die serverseitigen Modelle erstellt.
  • Ansichten wurden mit den Eigenschaften der Modelle verknüpft und verringerten die Größe der Ansichten erheblich.
  • View-Modelle wurden mit den von API-Methoden bereitgestellten Werten erstellt.

Insgesamt war die MVC-Kombination mit MVVM sehr nützlich, aber sie benötigte ein großes Fachwissen und Wissen. Geduld ist auch erforderlich, weil Sie über die Verantwortlichkeiten jeder Anwendungsschicht nachdenken müssen.