Kürzlich lautete in einem Interview eine der Fragen: "Warum verwenden wir MVC?" Ich habe nur geantwortet, dass es viel näher ist, wie viele der Systeme der realen Welt sind! Erläuterte die Vorteile, die es in Bezug auf Wartbarkeit, Skalierbarkeit usw. hat. Sie waren jedoch nicht überzeugt und erklärten mir schließlich, dass MVC hauptsächlich verwendet wird, da es „einfache Einheitentests ermöglicht“.
Obwohl ich weiß, dass dies ein gültiger Punkt ist, bezweifle ich immer noch, ob dies der Hauptgrund ist, da (i) auch wenn ich mich entscheide, keine Unit Testcases zu schreiben, MVC eine wahrscheinliche Wahl ist (ii) viele GUI-Systeme, in denen Unit Testcases vorhanden sind, dies nicht tun folge MVC.
Die Frage lautet also: Ist Unit Testing das Hauptziel von MVC Pattern?
EDIT: Ich gehe davon aus, dass sie die einfache testgetriebene Entwicklung / das Schreiben von NUnit-Testfällen erwähnen. Dies liegt daran, dass wir Testfälle für das Modell schreiben können (vorausgesetzt, die Ansicht spiegelt genau die Statusänderungen des Modells wider). Bitte korrigieren Sie mich, wenn ich falsch liege.
Antworten:
Das vorrangige Ziel wäre die "Trennung von Anliegen", da das Modell, die Ansicht und der Prüfer unterschiedliche Verantwortlichkeiten haben.
Der Autor des Originalpapiers von Xerox PARC gibt an, dass:
Wenn Unit-Tests das vorrangige Ziel wären, könnte man Ansichten problemlos Unit-Tests unterziehen. Ein Blick auf die Landschaft der Unit-Testing-Projekte / Frameworks würde ergeben, dass dies der Behauptung durchaus widerspricht. Normalerweise werden zum Testen der Ansicht Integrationstests und Funktionstests verwendet.
quelle
Meiner Meinung nach lautet die Antwort „Nein“. Vielleicht war dies der Hauptvorteil, der in dieser speziellen Organisation beobachtet wurde, aber ich würde es nicht als "primäres Ziel" bezeichnen.
Ich denke, es wäre nicht allzu schwierig, MVC auf eine Art und Weise zu implementieren, die zum Teufel schwer zu testen ist.
Auf der anderen Seite könnte man sagen, dass so ziemlich jedes Muster (mit Ausnahme von Dingen wie Singleton) das Testen von Einheiten erleichtert, da sie am häufigsten die Entkopplung fördern - aber ist es ihr „primäres Ziel“? Kaum.
quelle
MVC (wie die meisten bekannten Designmuster) gab es schon, bevor Unit-Tests bekannt wurden. Das GoF-Buch wurde 1994 veröffentlicht - und sie dokumentierten nur die Muster, die vor Jahren (wenn nicht Jahrzehnten) verwendet wurden. (Und es gibt keine Erwähnung von Unit-Tests.) Über Unit-Tests kann ich keine genaue Zeit finden, wann es "öffentlich" wurde - ich persönlich habe darüber in Artikeln gelesen, die sich auf Extreme Programming beziehen, und im ersten XP-Buch kam im Jahr 1999 heraus.
Unit-Tests könnten daher offensichtlich nicht das Hauptziel sein, Muster zu erfinden / zu dokumentieren - obwohl man nur sagen kann, dass Muster, wenn sie gut angewendet werden, Unit-Tests erheblich erleichtern.
quelle
Ich denke nein, das einfache Testen von Einheiten ist einer der Vorteile, aber es ist Teil einer Sammlung von Vorteilen bei der Verwendung von MVC, zusammen mit den von Ihnen genannten Gründen. Zu sagen, dass es einen einzigen Hauptgrund für die Verwendung von MVC gibt, ist ein Fehler. Es hört sich so an, als würde sich das betreffende Unternehmen für MVC entscheiden, um das Testen von Einheiten zu vereinfachen. Daher halten sie dies für den Hauptgrund. Persönlich bin ich der Meinung, dass MVC aufgrund seiner Einfachheit im Vergleich zu Webformularen einfacher zu entwerfen und zu warten ist, aber jeder Einzelne / jedes Unternehmen hat seine eigenen Gründe, irgendeine Technologie einzusetzen.
quelle
In der ASP.NET MVC-Welt wurden viele Verbesserungen an ASP.NET in das Framework selbst integriert. Der Hauptzweck dieses Entwurfsmusters besteht darin, die Geschäftslogik von der Benutzeroberfläche zu isolieren, um sich auf eine bessere Wartbarkeit, verbesserte Testbarkeit und eine sauberere Struktur der Anwendung zu konzentrieren.
ASP.NET MVC verfügt über bestimmte Funktionen, die es zur besten Option machen, wenn Sie eine oder mehrere der folgenden Optionen benötigen:
• Ein hohes Maß an Kontrolle über das generierte HTML : Im Gegensatz zu Web Forms rendern Ansichten in ASP.NET MVC HTML genau so, wie Sie es anweisen. In letzter Zeit wurden Web Forms in diesem Bereich verbessert, haben aber immer noch nicht die Kontrolle, die MVC hat.
• Einfacheres Testen von Einheiten : Mit ASP.NET MVC ist es sehr einfach, Testmustern wie der testgetriebenen Entwicklung (TDD) zu folgen. Aufgrund des komplexen Ereignislebenszyklus in Web Forms, der auf einem steuerungsbasierten Framework aufbaut, ist TDD mit MVC viel einfacher.
• Trennung von Bedenken : Dies bezieht sich darauf, dass alle Aspekte des Systems klar voneinander getrennt sind. Aufgrund des implementierten Musters ist eine MVC-Anwendung in diskrete und lose gebundene Teile (Modell, Ansichten und Controller) unterteilt, was die Wartung vereinfacht.
Einige der anderen Vorteile sind:
• Das MVC-Muster selbst erleichtert die Verwaltung der Komplexität, indem die Funktionalität der Anwendung klar in drei Hauptteile, das Modell, die Ansicht und den Controller, unterteilt wird.
• ASP.NET MVC-Webanwendungen verwenden weder den Ansichtsstatus noch serverbasierte Formulare. Dies macht das MVC-Framework ideal für Entwickler, die die volle Kontrolle über das Verhalten einer Anwendung haben möchten. Der Anzeigestatus kann sehr groß werden, was ein Problem für Geräte wie Smartphones ist, die über langsame Netzwerke laufen (die Übertragung all dieser Informationen kann sehr langsam sein). Auf einer Web Forms-Seite konnte es nur eine pro Seite geben. Dies ist eine ziemlich große Einschränkung. In MVC gibt es keine solche Einschränkung - Sie können also so viele Elemente haben, wie Sie möchten.
• ASP.NET MVC bietet eine bessere Unterstützung für testgetriebene Entwicklung (TDD).
• ASP.NET MVC eignet sich gut für Webanwendungen, die von großen Entwicklerteams unterstützt werden, sowie für Webdesigner, die ein hohes Maß an Kontrolle über HTML benötigen. ASP.NET MVC-Anforderungsverarbeitung
quelle