Dies ist eine veraltete Frage mit vielen Antworten, aber keine hatte die Antwort, die ich erwartet hätte, aufgelistet zu werden.
Die kurze Antwort lautet:
- Verwenden Sie ASP.NET MVC, wenn Sie eine Webanwendung mit modernen Programmierkonventionen und branchenüblichen Mustern für die ASP.NET-Plattform ordnungsgemäß erstellen möchten. Auf der anderen Seite wird erwartet, dass Sie wissen, wie HTML- und clientseitige Ressourcen (Javascript, CSS) funktionieren, und dass Sie die MVC-Programmiermentalität verbessern, die eine steile Lernkurve aufweist, aber ein plötzliches Ende erreicht, wenn sie erst einmal erfasst ist.
- Verwenden Sie ASP.NET Web Forms, wenn Sie eine GUI-orientierte , RAD- basierte (Rapid Application Development) Drag-and-Drop- Methode verwenden möchten, um sehr schnell Prototypen zu erstellen, z 15 Minuten, und die Lösung soll nicht von den Entwicklern unterstützt werden. Oder Verwenden ASP.NET Web Forms , wenn Sie einen Hintergrund in der GUI oder Windows Forms - Entwicklung und Sie wünschen Wissen im Web zu übertragen.
Aber um dies richtig zu betrachten, muss man die Geschichte eines jeden verstehen.
ASP.NET Web Forms war die Antwort von Microsoft auf diejenigen, die dynamische Webanwendungen mit Visual Basic 6-ActiveX-Steuerelementen, VB6-DLLs auf dem Server und ASP Classic erstellt hatten. Zu dieser Zeit war die Webentwicklung mit diesen Microsoft-Tools ein echtes Chaos. Zusammen mit der Gesamtheit des .NET Frameworks, das die Ausgabe von Microsoft darstellte, die im Wesentlichen auf das Zeichenbrett zurückging, wie produktive Geschäftsprogramme auf dem Windows-Stapel erstellt werden, war ASP.NET Web Forms zu seiner Zeit erstaunlich und wunderschön.
Der gesamte Ansatz bestand darin, Entwicklern das Beste aus beiden Welten zu bieten, was der Entwicklung von Windows-Anwendungen sehr ähnlich ist, jedoch mit der Leistungsfähigkeit von Internetdiensten. Die Idee war, dass genau wie bei einem VB6 / WinForms "Formular" (ein Fenster) auch eine Webseite ein Formular ist (genau wie ein Fenster, siehe) , und auf diesem Formular können Sie Beschriftungen, Textfelder, Datenraster, Schaltflächen und andere Dinge, an die VB / WinForms-GUI-Entwickler gewöhnt waren.
Um eine Schaltfläche dazu zu bringen, etwas zu tun, doppelklicken Sie nach dem Ziehen und Ablegen im Designer darauf, und Sie befinden sich im Code-Editor. Hier erfahren Sie, was zu tun ist, wenn dieses "Klick" -Ereignis eintritt. Genau so haben Windows-GUI-Entwickler Software mit dem GUI- Tooling von VB6 und konkurrierenden Tools erstellt, außer dass der Code jetzt auf dem Server ausgeführt wird! Beeindruckend!
Dies war 2002 Technologie. Erstaunlich und schön in seiner Zeit als Antwort auf internetfähige GUI- Lösungen für die RAD- Entwicklung , brachte es ein Gefühl der Macht in eine chaotische Welt von Software-Entwicklern, die Geschäftsziele hatten, die sie erreichen mussten.
Leider betont dieses Programmiermodell die Metapher der Windows-GUI-Programmierung so sehr, dass es die Last seiner erforderlichen Implementierungsdetails mit sich bringt, all das belastende Gepäck, das erforderlich ist, um den Ereignislebenszyklen Rechnung zu tragen, und das Verstauen der hässlichen Details des einfachen HTML- und Skript, das diese Drag-and-Drop-Komponenten und Steuerelemente ausgeben würden. Letztendlich mussten Entwickler, die echte Anwendungen unterstützen, diese Komponenten gründlich untersuchen oder ihre eigenen Komponenten schreiben. Infolgedessen schlugen sie mit dieser Infrastruktur Schlachten, die Haufen über Haufen von Cruft, zerrissenen Haaren und Haaren hinterließen Tränen.
Sichern. Wasche deine Hände. Schauen wir uns das Geschäftsproblem noch einmal an. Was sind unsere Geschäftsziele?
Wir müssen Webanwendungen erstellen und verwalten . Unsere Einschränkungen sind, dass wir das World Wide Web haben, das auf HTTP, HTML, Javascript und CSS basiert, und auf dem Server Geschäftsregeln, Datenbanken und eine kleine Handvoll großartiger Programmiersprachen (z. B. C #). Brauchen wir wirklich diese Windows-GUI-Metapher, um unsere Entwicklungsmethodik voranzutreiben? Warum können wir uns nicht einfach auf die Anwendungsprobleme konzentrieren und die GUI-Metaphern beseitigen?
Hier kommt ASP.NET MVC ins Spiel. Es begann mit einer Rebellion von Entwicklern, die sich "Alt.Net" nannten und zu den richtigen und reinen Prinzipien der Softwareentwicklung zurückkehren wollten. Kein Aufwand mehr, konzentrieren Sie sich nur auf Geschäftsziele und bewährte Vorgehensweisen für Software.
Was dies in diesem Fall wirklich bedeutet, ist:
- Trennung von Bedenken . Beispielsweise muss eine Datenkomponente nicht wissen, wie ihre Daten gerendert werden sollen, und das View-Markup muss nicht mit Konfigurationsdetails für die Datenbankverbindung belastet sein. Auf diese Weise kann sich ein Entwickler beim Bearbeiten und Bearbeiten auf sein Anliegen konzentrieren Testcode.
- Offenlegung und volle Unterstützung für die Offenlegung des Kerns von HTML und verwandten Ressourcen . In Web Forms ist HTML versteckt, und Entwickler werden davon abgehalten, sich damit zu beschäftigen. In ASP.NET MVC werden Entwickler eher aufgefordert , diese Details zu verwalten. in der Tat ist es eine Notwendigkeit. Der Vorteil hierbei ist , dass der Entwickler wieder lernen , die saubere Semantik von HTML, CSS und Skript zu schätzen, und die Arbeit mit ihm und nicht gegen sie.
- Testbarkeit von Geschäftsobjekten . Controller und Modelle eignen sich viel besser für programmatische Komponententests, sodass Implementierungen validiert werden können, um die Geschäftsziele zu erreichen, und Änderungen überprüft werden können, damit sie nicht beschädigt werden. Mit Web Forms war es schwierig zu testen, da die Komponenten nicht einzeln getestet werden konnten und sich die gesamte Entwicklungsausgabe um Seitenformulare und deren Ereignislebenszyklen drehte, wobei Geschäftslogik und Präsentationslogik eng miteinander verflochten waren.
Beachten Sie, dass HTML bereits eine sehr hohe Auszeichnungssprache ist, ebenso wie Javascript eine hohe Programmiersprache. Die ganze Geschichte wäre anders gewesen, wenn wir uns mit Assemblersprache und C befasst hätten.
Neben # 2 besteht ein weiteres Ziel von ASP.NET MVC darin, Entwicklern die Möglichkeit zu geben, die Front-End-Details des Ansichtsbereichs ihrer Lösungen zu organisieren und von der umfassenden Grundlage zu profitieren, auf der der Rest der Branche aufgebaut hat die Front-End-Client-Plattform.
Sie werden feststellen, dass sich ASP.NET MVC-Entwickler mit umfangreichen Javascript-Bibliotheken und clientseitigen Template-Techniken wohl fühlen, ohne mit der serverseitigen Architektur zu kämpfen. Dies war ursprünglich bei ASP.NET Web Forms nicht der Fall, da Web Forms nicht möchte, dass Sie sich den HTML-Code oder das Skript überhaupt ansehen, es sei denn, Sie müssen wirklich aufpassen, dass dies nichts für schwache Nerven ist von Herzen.