Größter Vorteil bei der Verwendung von ASP.Net MVC gegenüber Webformularen


164

Was sind einige der Vorteile einer Verwendung gegenüber der anderen?

Antworten:


165

Die Hauptvorteile von ASP.net MVC sind:

  1. Aktiviert die vollständige Kontrolle über das gerenderte HTML.

  2. Bietet eine saubere Trennung von Bedenken (SoC).

  3. Aktiviert Test Driven Development (TDD) .

  4. Einfache Integration in JavaScript-Frameworks.

  5. Nach dem Design der Staatenlosigkeit des Web.

  6. RESTful URLs, die SEO ermöglichen.

  7. Keine ViewState- und PostBack-Ereignisse

Der Hauptvorteil von ASP.net Web Form ist:

  1. Es bietet RAD- Entwicklung

  2. Einfaches Entwicklungsmodell für Entwickler, die aus der Winform-Entwicklung stammen.


32
In Bezug auf SoC können die Benutzer genau wie auf Webformularen damit herumspielen, indem sie "fette" Controller mit viel Geschäftslogik oder sogar Datenzugriffscode schreiben. Ich würde also sagen, dass SoC etwas ist, das vom Codierer bereitgestellt werden muss, der fw kann nicht helfen.
Rodbv

7
@ rodbv: Sehr wahr, aber MVC drückt dich irgendwie in die richtige Richtung oder lässt dich zumindest nicht durch Reifen springen, um dies zu tun. Vielleicht sollte dieser Punkt so etwas wie "Erleichtert die Implementierung von SoC" lauten
Erik van Brakel

4
Wie wird "Test Driven Development" gegenüber einer anderen Methode aktiviert? Ich bin auch verwirrt, wie es RESTful-URLs zulässt, wenn es die HttpContext.RewritePath-Methode (String) seit .NET 2.0 gibt.
Mark Broadhurst

2
Während diese Punkte für die MVC-Seite meistens genau sind, werden viele von ihnen jetzt in WebForms integriert.
RTPHarry

Link zur Quelle dieser Antwort mit weiteren Details: weblogs.asp.net/shijuvarghese/archive/2008/07/09/…
DK.

91

ASP.NET Web Forms und MVC sind zwei von Microsoft entwickelte Webframeworks - beide sind eine gute Wahl. Weder sollen die Web-Frameworks durch die anderen ersetzt werden, noch ist geplant, sie zu einem einzigen Framework zusammenzuführen. Die kontinuierliche Unterstützung und Entwicklung wird parallel von Microsoft durchgeführt, und beide werden nicht "verschwinden".

Jedes dieser Webframeworks bietet Vor- und Nachteile, von denen einige bei der Entwicklung einer Webanwendung berücksichtigt werden müssen. Eine Webanwendung kann mit beiden Technologien entwickelt werden. Dies erleichtert möglicherweise die Auswahl einer Technologie für die Auswahl einer Technologie gegenüber der anderen und umgekehrt.

ASP.NET Web Forms:

  • Entwicklung unterstützt Status • Gibt die Illusion, dass eine Webanwendung weiß, was der Benutzer getan hat, ähnlich wie Windows-Anwendungen. Das heißt, vereinfacht die Implementierung der Assistentenfunktionalität ein wenig. Webformulare leisten hervorragende Arbeit, um einen Großteil dieser Komplexität vor dem Entwickler zu verbergen.
  • Rapid Application Development (RAD) • Die Möglichkeit, einfach einzusteigen und Webformulare bereitzustellen. Dies wird von einigen Mitgliedern der MVC-Community bestritten, aber von Microsoft vorangetrieben. Am Ende kommt es auf das Fachwissen des Entwicklers an und darauf, womit er sich wohl fühlt. Das Webformularmodell hat für weniger erfahrene Entwickler wahrscheinlich weniger Lernaufwand.
  • Größere Steuerungs-Toolbox • ASP.NET Web Forms bietet eine viel größere und robustere Toolbox (Web-Steuerelemente), während MVC einen primitiveren Steuerungssatz bietet, der sich mehr auf umfangreiche clientseitige Steuerelemente über jQuery (Javascript) stützt.
  • Ausgereift • Es gibt es seit 2002 und es gibt eine Fülle von Informationen zu Fragen, Problemen usw. Bietet mehr Kontrolle durch Dritte - Sie müssen Ihre vorhandenen Toolkits berücksichtigen.

ASP.NET MVC:

  • Trennung von Bedenken (SoC) • Aus technischer Sicht ist die Organisation von Code in MVC sehr sauber, organisiert und detailliert, was es (hoffentlich) einer Webanwendung erleichtert, hinsichtlich der Funktionalität zu skalieren. Fördert großartiges Design vom Standpunkt der Entwicklung aus.
  • Einfachere Integration in clientseitige Tools (umfangreiche Tools für die Benutzeroberfläche) • Webanwendungen werden mehr denn je so umfangreich wie die Anwendungen, die Sie auf Ihren Desktops sehen. Mit MVC können Sie solche Toolkits (z. B. jQuery) einfacher und nahtloser als in Web Forms integrieren.
  • Suchmaschinenoptimierung (SEO) freundlich / zustandslos • URLs sind für Suchmaschinen freundlicher (z. B. mywebapplication.com/users/ 1 - Benutzer mit einer ID von 1 abrufen im Vergleich zu mywebapplication / users / getuser.aspx (ID in Sitzung übergeben)). Da MVC zustandslos ist, werden dadurch die Kopfschmerzen von Benutzern, die mehrere Webbrowser erzeugen, aus demselben Fenster entfernt (Sitzungskollisionen). In diesem Sinne hält sich MVC an das zustandslose Webprotokoll, anstatt dagegen zu „kämpfen“.
  • Funktioniert gut mit Entwicklern, die ein hohes Maß an Kontrolle benötigen. • Viele Steuerelemente in ASP.NET-Webformularen generieren automatisch einen Großteil des rohen HTML-Codes, den Sie beim Rendern einer Seite sehen. Dies kann Entwicklern Kopfschmerzen bereiten. Mit MVC eignet es sich besser für die vollständige Kontrolle über das, was gerendert wird, und es gibt keine Überraschungen. Noch wichtiger ist, dass die HTML-Formulare in der Regel viel kleiner sind als die Webformulare, was einer Leistungssteigerung gleichkommen kann - etwas, das ernsthaft in Betracht gezogen werden muss.
  • Test Driven Development (TDD) • Mit MVC können Sie einfacher Tests für die Webseite erstellen. Eine zusätzliche Testebene bietet eine weitere Schutzschicht gegen unerwartetes Verhalten.

Authentifizierung, Autorisierung, Konfiguration, Kompilierung und Bereitstellung sind Funktionen, die von den beiden Webframeworks gemeinsam genutzt werden.


27
"Mit MVC haben Sie die vollständige Kontrolle darüber, was gerendert wird" - Sie können auch die vollständige Kontrolle über WebForms haben, wenn Sie Literale anstelle von Beschriftungen, Platzhalter anstelle von Bedienfeldern, Repeater anstelle von Datagrids usw. verwenden. Zu viele Entwickler lesen Anweisungen wie diese und glaube es ist wahr. Downvote ..
masty

3
@masty - Ich weiß nicht, dass ich persönlich abstimmen würde, aber ich stimme dem Rest von dem zu, was du gesagt hast.
Peter

4
@masty - Vielen Dank, dass Sie die StackOverflow-Welt gerettet haben, indem Sie diese Frage nicht ausgewählt und abgelehnt haben. Ich habe meine Antwort nur für Sie bearbeitet - also kann ich hoffentlich Ihre Stimme zusammen mit allen anderen zurückbekommen, die Sie gebeten haben, sie abzustimmen. Vielen Dank!
JC

6
@masty Ich stimme teilweise zu, aber wenn Sie Literale, Platzhalter und Repeater verwenden, verschieben Sie immer mehr HTML in den Codebehind. Dies kann auch zu Verwirrung bei Designern führen, die die ASPX lesen, und bei Programmierern, die die ASPX-CS lesen. Also ja, es ist möglich, aber ja, es macht auch den Zweck von ASP.Net WebForms zunichte. Ich würde sagen, dass ControlAdapters in diesem Fall eine sauberere Lösung sind. Anstatt die Steuerelemente zu ersetzen, ersetzen Sie die Art und Weise, wie sie gerendert werden.
Aidiakapi

2
Die Aussage "Mit MVC haben Sie die vollständige Kontrolle darüber, was gerendert wird" ist verwirrt. Ich denke, die bessere Aussage wäre: "Das MVC-Framework rendert weniger und was gerendert wird, ist schlanker. Sie erhalten mehr Kontrolle über bestimmtes gerendertes HTML / CSS, aber Sie müssen die Arbeit erledigen, um diese Kontrolle zu erhalten."
Kingdango

17

Jeder, der alt genug ist, um sich an klassisches ASP zu erinnern, wird sich an den Albtraum erinnern, eine Seite mit Code zu öffnen, der mit HTML und Javascript gemischt ist - selbst die kleinste Seite war ein Schmerz, um herauszufinden, was zum Teufel es tat. Ich könnte mich irren, und ich hoffe, ich bin es, aber MVC scheint in diese schlechten alten Zeiten zurückzukehren.

Als ASP.Net auf den Markt kam, wurde es als der Retter gefeiert, der Code vom Inhalt trennte und es uns ermöglichte, dass Webdesigner den HTML-Code erstellten und die Codierer an dem dahinter stehenden Code arbeiteten. Wenn wir ViewState nicht verwenden wollten, haben wir es deaktiviert. Wenn wir aus irgendeinem Grund keinen Code dahinter verwenden wollten, könnten wir unseren Code wie bei klassischem ASP im HTML-Code platzieren. Wenn wir PostBack nicht verwenden wollten, haben wir zur Verarbeitung auf eine andere Seite umgeleitet. Wenn wir keine ASP.Net-Steuerelemente verwenden wollten, verwendeten wir Standard-HTML-Steuerelemente. Wir könnten das Response-Objekt sogar abfragen, wenn wir ASP.Net runat = "server" nicht für unsere Steuerelemente verwenden möchten.

Jetzt hat jemand in seiner großen Weisheit (wahrscheinlich jemand, der nie klassisches ASP programmiert hat) beschlossen, dass es Zeit ist, zu den Tagen des Mischens von Code mit Inhalten zurückzukehren und es "Trennung von Bedenken" zu nennen. Sicher, Sie können saubereres HTML erstellen, aber Sie könnten es mit klassischem ASP. Zu sagen "Sie programmieren nicht richtig, wenn Sie zu viel Code in Ihrer Ansicht haben" ist wie zu sagen "Wenn Sie gut strukturierten und kommentierten Code in klassischem ASP geschrieben haben, ist er weitaus sauberer und besser als ASP.NET".

Wenn ich wieder Code mit Inhalten mischen möchte, würde ich mir die Entwicklung mit PHP ansehen, das eine weitaus ausgereiftere Umgebung für diese Art der Entwicklung bietet. Wenn es so viele Probleme mit ASP.NET gibt, warum nicht diese Probleme beheben?

Last but not least ist es mit der neuen Razor-Engine noch schwieriger, zwischen HTML und Code zu unterscheiden. Zumindest könnten wir in ASP nach öffnenden und schließenden Tags suchen, dh <% und%>, aber jetzt ist die einzige Anzeige das @ -Symbol.

Es könnte an der Zeit sein, auf PHP umzusteigen und weitere 10 Jahre zu warten, bis jemand den Code wieder vom Inhalt trennt.


7
+1 genau richtig. Meine erste Reaktion auf MVC war, dass ich wieder Classic ASP machte. diesmal nur in C # anstelle von VBScript.
DancesWithBamboo

3
Ich bin erstaunt, warum diese Antwort so viele positive Stimmen erhalten hat. Erstens ist in ASP.NET MVC die Trennung von MVC integriert. Natürlich können Sie dies in ASP tun. Zweitens ist ASP.NET MVC viel mehr als klassischer ASP. Es bietet die fein abgestimmte Kontrolle über HTML in Kombination mit der Leistungsfähigkeit von .NET, begleitet von vielen nützlichen Hilfsprogrammen. Drittens ist @ eine feine Notation, ebenso wie <%%>. Jeder anständige Editor für Ihre Razor-Ansichten unterstützt die @ -Notation. Schließlich PHP reifen? me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design ASP.NET MVC ist eine großartige Plattform. Gib ihm etwas mehr Aufmerksamkeit.
JP Ten Berge

Willst du mich verarschen? Ich habe PHP mit der Notation "<? ...?>" Verwendet und festgestellt, dass es äußerst ausführlich ist. Ich sehe nicht, wie das "@" -Symbol schwerer zu erkennen ist als "<% ...%>" - Tags. Außerdem verwenden Sie in HTML-Vorlagen selten das Symbol "@".
Exegese

Meine Augen können auf einer Rasierseite wirklich besser ruhen als auf der Hölle der "<%%>" - Symbole. Das Lesen einer ASPX-Seite bereitet mir Kopfschmerzen. Ich möchte auch lieber sehen, was gerendert wird. Mit einem @ foreach (..) {<tr> ... </ tr>} -Block fühle ich mich wohler als mit einem <abc: MyViewControl ID = "..." runat = "server" DatasourceID = ".... "/>. Ich mache viele clientseitige Manipulationen und muss genau wissen, was wo gerendert wird und mit welcher ID, welchem ​​Stil und welchen Klassen. Ich mache es lieber selbst, als es von einem Steuerelement im laufenden Betrieb machen zu lassen. Insbesondere, wenn einige Steuerelemente je nach Einstellung unterschiedlich gerendert werden.
Thanasis Ioannidis

Ich bin überrascht, dass dies positive Stimmen hat. Es ist ein völliges Missverständnis des MVC-Frameworks. Wenn Sie feststellen, dass Sie Code mit Inhalten in MVC mischen, machen Sie es falsch. Ihre Ansichten haben Inhalt, Ihre Controller (und die von ihnen verwendeten Klassen) haben Code. Dies ist eines der Hauptprinzipien von MVC.
Josh Noe

14

Wenn Sie mit anderen Entwicklern wie PHP oder JSP zusammenarbeiten (und ich vermute, dass es sich um Rails handelt), fällt es Ihnen viel leichter, Seiten zu konvertieren oder zusammenzuarbeiten, da Sie nicht über all diese "bösen" ASP.NET verfügen Ereignisse und Kontrollen überall.


"viel einfachere Zeit" mit welcher?
Cregox

5
@cawas - viel einfacher mit MVC. In ASP.NET MVC sind keine Ereignisse vorhanden. Im Grunde haben Sie es mit Standard-HTML und CSS zu tun und nicht mit vielen Ereignissen und Steuerelementen, die PHP / JSP-Entwickler lernen
müssten

ASP.NET ist die Basis für WebForms und MVC. Menschen neigen dazu, WebForms mit ASP.NET zu verwechseln. Es gibt kein "MVC vs ASP.NET". Es gibt "ASP.NET MVS" und "ASP.NET WebForms". Und tatsächlich kämpfen sie nicht miteinander. Sie sind nur verschiedene Möglichkeiten mit unterschiedlichen Vor- und Nachteilen, um eine Website zu erstellen
Thanasis Ioannidis

13

Das Problem mit MVC ist, dass es selbst für "Experten" viel wertvolle Zeit in Anspruch nimmt und viel Aufwand erfordert. Unternehmen werden von der Grundfunktion "Schnelle Lösung, die funktioniert" angetrieben, unabhängig von der dahinter stehenden Technologie. WebForms ist eine RAD-Technologie, die Zeit und Geld spart. Alles, was mehr Zeit erfordert, wird von Unternehmen nicht akzeptiert.


1
+1 für Unternehmen werden von der grundlegenden Sache "Schnelle Lösung, die funktioniert"
Dragos Durlut

1
Das Problem ist, wenn einige schnelle Lösungen einfach nicht funktionieren, weil sie in erster Linie schnell sein sollten. Jüngste Erfahrung: Eine kurze Webformularseite, auf der Sie einige grundlegende Aktualisierungen zum Erstellen, Bearbeiten und Aktualisieren vornehmen können. Es sollte "schneller" sein als die Infopath Equiveland-Seite, die etwas langsam war. Tatsächlich hatte die neue Lösung fast die gleiche Leistung wie die Infopath-Seite, außer dass sie in IE7 extrem langsamer war, bis sie unbrauchbar wurde. 5 Sekunden zum Öffnen der Seite und 5 Sekunden jedes Mal, wenn auf eine Combobox geklickt wurde ... All das, nur weil es schnell gehen musste. Kein Gedanke, keine Planung.
Thanasis Ioannidis

1
Danach haben wir alle Steuerelemente entfernt, um ihre umfangreichen und unnötigen clientseitigen Skripte zu entfernen, und manuelle HTML-Steuerelemente mit Bootstrap-Daten und -Ereignissen sowie einer Kombination aus jQuery und BackBone.js gerendert. Es handelt sich tatsächlich um einen MVC-Ansatz, der auf einer Webformularseite gehostet wird. Natürlich können WebForms und MVC bei guter Planung eine gute Leistung erbringen, aber WebForms verleitet Sie dazu, nur Steuerelemente auf Ihre Seite zu werfen, um zu sehen, wie sich etwas auf Ihrem Bildschirm bewegt, und dann mehr Zeit damit zu verbringen, es zu optimieren, wenn nicht zu entfernen überhaupt.
Thanasis Ioannidis

11
  1. Richtiges AJAX, zB JSONResults kein partieller Seiten-Postback-Unsinn.
  2. kein Ansichtsstatus +1
  3. Keine Umbenennung der HTML-IDs.
  4. Sauberes HTML = kein Aufblähen und eine gute Chance, XHTML- oder standardkonforme Seiten zu rendern.
  5. Kein generiertes AXD-Javascript mehr.

9

Der größte Einzelvorteil für mich wäre die klare Trennung zwischen den Ebenen Modell, Ansicht und Controller. Es fördert von Anfang an gutes Design.


4
Ich bin damit einverstanden, dass dies ein wichtiges Verkaufsargument ist, wenn Sie noch nie mit dieser Art von Muster gearbeitet haben, aber Sie können ein MVC- oder MVP-Muster in WebForms implementieren. Ein großes Lob dafür, dass die Leute zu einem Muster übergehen, anstatt ein Webformular mit Datensätzen zu monolithisieren, aber sie sind nicht die Art von Leuten, die ich normalerweise anheuere.
Mark Broadhurst

9

Ich habe in MVC KEINE Vorteile gegenüber ASP.Net gesehen. Vor 10 Jahren hat Microsoft UIP (User Interface Process) als Antwort auf MVC entwickelt. Es war ein Flop. Wir haben damals ein großes Projekt (4 Entwickler, 2 Designer, 1 Tester) mit UIP gemacht und es war ein Albtraum.

Springen Sie nicht einfach wegen Hype zu Bandwagon. Alle oben aufgeführten Vorteile sind bereits in Asp.Net verfügbar (mit weiteren Verbesserungen [ Neue Funktionen in Asp.Net 4 ] in Asp.Net 4).

Wenn Ihr Entwicklungsteam oder eine einzelne Entwicklerfamilie mit Asp.Net einfach dabei bleibt und schnell schöne Produkte herstellt, um Ihre Kunden zufrieden zu stellen (die für Ihre Arbeitszeit bezahlen). MVC wird Ihre wertvolle Zeit verschlingen und die gleichen Ergebnisse wie Asp.Net erzielen :-)


1
Das Deaktivieren des Ansichtsstatus standardmäßig, während er bei gelegentlicher Steuerung aktiviert wird, die ihn tatsächlich benötigt, war ein großer Fortschritt in ASP.NET 4.
PeteT

Sowohl WebForms als auch MVC basieren auf ASP.NET.
Thanasis Ioannidis

8

Francis Shanahan,

  1. Warum nennst du partielles Postback "Unsinn"? Dies ist das Kernmerkmal von Ajax und wurde sehr gut im Atlas-Framework und in wunderbaren Steuerelementen von Drittanbietern wie Telerik verwendet

  2. Ich stimme Ihrem Standpunkt bezüglich des Ansichtszustands zu. Wenn Entwickler jedoch darauf achten, den Ansichtsstatus zu deaktivieren, kann dies die Größe des gerenderten HTML-Codes erheblich reduzieren, sodass die Seite leicht wird.

  3. Im ASP.NET Web Form-Modell werden nur HTML Server-Steuerelemente umbenannt und keine reinen HTML-Steuerelemente. Was auch immer es sein mag, warum sind Sie so besorgt, wenn die Umbenennung erfolgt ist? Ich weiß, dass Sie mit vielen Javascript-Ereignissen auf der Clientseite umgehen möchten, aber wenn Sie Ihre Webseiten intelligent gestalten, können Sie definitiv alle gewünschten IDs erhalten

  4. Sogar ASP.NET Web Forms erfüllt die XHTML-Standards und ich sehe kein Aufblähen. Dies ist keine Rechtfertigung dafür, warum wir ein MVC-Muster benötigen

  5. Warum beschäftigen Sie sich wieder mit AXD Javascript? Warum tut es dir weh? Dies ist wiederum keine gültige Begründung

Bisher bin ich ein Fan der Entwicklung von Anwendungen mit klassischen ASP.NET-Webformularen. Zum Beispiel: Wenn Sie eine Dropdown-Liste oder eine Rasteransicht binden möchten, benötigen Sie maximal 30 Minuten und nicht mehr als 20 Codezeilen (natürlich minimal). Aber im Falle von MVC sprechen Sie mit den Entwicklern, wie schmerzhaft es ist.

Der größte Nachteil von MVC ist, dass wir in die Zeit von ASP zurückkehren. Erinnern Sie sich an den Spaghetti-Code zum Verwechseln von Server-Code und HTML? Oh mein Gott, versuchen Sie, eine MVC-Aspx-Seite zu lesen, die mit Javascript, HTML, JQuery, CSS, Server-Tags und was nicht gemischt ist. Jeder kann diese Frage beantworten?


6
Teilweise Postbacks sind ein hässlicher
Kludge

3
Wenn Sie viel Code in Ihren Ansichten haben, machen Sie etwas falsch. Code in Ansichten sollte nur das Layout betreffen.
UpTheCreek

1
Der einzige Grund, warum Sie eine Seite mit Javascript, gemischt mit CSS und HTML, sehen würden, ist, wenn Sie sich die Arbeit eines faulen Entwicklers ansehen, der sich nicht die Mühe machen könnte, Stile und Skripte zu trennen. Dies kann in Webformularen UND MVC geschehen. Ich bin damit einverstanden, dass die Skript-Tags hässlich sind, aber mit MVC3 sind sie sicher nicht mehr vorhanden, und zumindest können Sie sehen, was vor sich geht, ohne in einen Code hinter der Datei zu schauen und den Punkt zu finden, an dem ein Steuerelement datengebunden ist ...
jcvandan

Auch wenn Sie Spaghetti-Code mit MVC erstellen, halten Sie sich nicht an das
Prinzip

1
Mit beiden kann ich sagen, dass nichts chaotischer wird als WebForms. MVC ist sauber, mit Ausnahme der Server-Tags, aber ansonsten ist alles Chaos die Schuld von schlechten Programmierern. MVC wird vom Kern entworfen, um Logik vom Design zu trennen. Sie erwähnen auch Telerik. Telerik für ASP.Net AJAX verursacht solch einen unordentlichen Code. Ganz zu schweigen von der Geschwindigkeit, mit der das Sortieren eines Telerik-Rasters (stirng) dauert: 500 ms für 4 Seiten in ASP.Net WebForms, 200 ms für 84 Seiten in MVC. (Getestet mit ihren Demos und Firebug für Chrom.) Wenn es um Leistung und Trennung geht, gewinnt MVC definitiv.
Aidiakapi

6

Webformulare profitieren auch von einer höheren Reife und Unterstützung durch Drittanbieter wie Telerik.


2
Nicht zu sagen, dass dies mit MVC nicht möglich ist, weil ich mir sicher bin, dass dies der Fall ist, aber wenn Sie eine schnelle und schmutzige Intranet- oder Extranet-App mit viel Bling Telerik und WebForms zusammenstellen möchten, ist dies schwer zu übertreffen. Flamme weg, das ist die ehrliche Wahrheit.
Infocyde

Telerik hat auch MVC-Steuerelemente (weniger und mit weniger Optionen, aber sie haben es trotzdem) und sie sind VIEL schneller als ihre WebForm-Varianten.
Aidiakapi

5

In Webformularen können Sie auch fast das gesamte HTML von Hand rendern, mit Ausnahme einiger weniger Tags wie viewstate, eventvalidation und ähnliches, die mit PageAdapters entfernt werden können. Niemand zwingt Sie, GridView oder ein anderes serverseitiges Steuerelement zu verwenden, das eine schlechte HTML-Rendering-Ausgabe aufweist.

Ich würde sagen, dass der größte Vorteil von MVC SPEED ist!

Als nächstes kommt die erzwungene Trennung der Bedenken. Es verbietet Ihnen jedoch nicht, die gesamte BL- und DAL-Logik in Controller / Action zu integrieren! Es ist nur eine Trennung der Ansicht, die auch in Webformularen (z. B. MVP-Muster) erfolgen kann. Viele Dinge, die Leute für mvc erwähnen, können in Webformularen erledigt werden, aber mit einigem zusätzlichen Aufwand.
Der Hauptunterschied besteht darin, dass die Anforderung an den Controller und nicht an die Ansicht kommt und diese beiden Ebenen getrennt sind und nicht wie in Webformularen über eine Teilklasse verbunden sind (Aspx + Code dahinter).


Meinen Sie Entwicklungsgeschwindigkeit oder Ausführungsgeschwindigkeit?
Jules

1
Besonders bei Verwendung von Telerik mit MVC. In ihren Demos dauert das Sortieren eines Rasters: 500 ms für 4 Seiten (WebForms), 200 ms für 84 Seiten (MVC). Was für mich eine Vorliebe für MVC ist (obwohl wir in meinem Unternehmen WebForms verwenden, obwohl wir erwägen, den Wechsel vorzunehmen), ist, dass es sauberer ist, Sie Ihre Ansichten haben, wo Sie Ihre Ausgabe anpassen, Ihr Modell, wo Sie herumspielen up the data: P und Ihre Controller, die alles zusammenfügen
Aidiakapi

4

Meine 2 Cent:

  • ASP.net-Formulare eignen sich hervorragend für die schnelle Anwendungsentwicklung und die schnelle Steigerung des Geschäftswerts. Ich benutze es immer noch für die meisten Intranet-Anwendungen.
  • MVC eignet sich hervorragend für die Suchmaschinenoptimierung, da Sie die URL und den HTML-Code in größerem Umfang steuern
  • MVC erzeugt im Allgemeinen eine viel schlankere Seite - kein Ansichtsstatus und saubereres HTML = schnelle Ladezeiten
  • MVC einfach Teile der Seite zwischenzuspeichern. -MVC macht Spaß zu schreiben: - persönliche Meinung ;-)

3

Mit MVC können Sie mehr als ein Formular auf einer Seite haben. Eine kleine Funktion, die ich kenne, die aber praktisch ist!

Auch das MVC-Muster erleichtert meiner Meinung nach die Pflege des Codes, insb. wenn Sie es nach ein paar Monaten erneut besuchen.


2
Mit ASP.NET Webforms können Sie so viele Formulare auf einer Seite haben, wie Sie möchten. Die Einschränkung ist, dass nur einer das Attribut "runat =" server "haben kann.
Andrei Rînea

1
@AndreiRinea Ich denke, er meinte das: P, es gibt nicht viel Verwendung in einem Nicht- runat="server"Formular-Tag, wenn Sie noch Webformulare verwenden möchten, und da Sie Formulare nicht verschachteln können / sollten, ist es ziemlich offensichtlich, was er meinte :)
Aidiakapi

2

MVC-Controller:

    [HttpGet]
    public ActionResult DetailList(ImportDetailSearchModel model)
    {
        Data.ImportDataAccess ida = new Data.ImportDataAccess();
        List<Data.ImportDetailData> data = ida.GetImportDetails(model.FileId, model.FailuresOnly);

        return PartialView("ImportSummaryDetailPartial", data);
    }

MVC-Ansicht:

<table class="sortable">
<thead>
    <tr><th>Unique Id</th><th class="left">Error Type</th><th class="left">Field</th><th class="left">Message</th><th class="left">State</th></tr>
</thead>
<tbody>
    @foreach (Data.ImportDetailData detail in Model)
    {
    <tr><th>@detail.UniqueID</th><th class="left">@detail.ErrorType</th><th class="left">@detail.FieldName</th><th class="left">@detail.Message</th><th class="left">@detail.ItemState</th></tr>
    }
</tbody></table>

Wie schwer ist das Kein ViewState, kein BS-Seitenlebenszyklus ... Nur reiner effizienter Code.


1

Ich kann die einzigen zwei Vorteile für kleinere Websites sehen: 6) RESTful URLs, die SEO ermöglichen. 7) Keine ViewState- und PostBack-Ereignisse (und höhere Leistung im Allgemeinen)

Das Testen auf kleine Sites ist kein Problem, ebenso wenig wie die Designvorteile, wenn eine Site ohnehin richtig codiert ist. MVC verschleiert in vielerlei Hinsicht und erschwert Änderungen. Ich entscheide immer noch, ob sich diese Vorteile lohnen.

Ich kann den Vorteil von MVC auf größeren Websites mit mehreren Entwicklern deutlich erkennen.


1

Der Hauptvorteil, den ich finde, ist, dass es das Projekt in eine prüfbarere Struktur zwingt. Dies kann ziemlich einfach auch mit Webformularen durchgeführt werden (MVP-Muster), erfordert jedoch, dass der Entwickler dies versteht, viele tun dies nicht.

Webforms und MVC sind beide praktikable Tools, die sich in verschiedenen Bereichen auszeichnen.

Ich persönlich verwende Webformulare, da wir hauptsächlich B2B / LOB-Apps entwickeln. Aber wir machen es immer mit einem MVP-Muster, mit dem wir eine Codeabdeckung von 95 +% für unsere Unit-Tests erreichen können. Dies ermöglicht es uns auch, das Testen der Eigenschaften von Webcontrols zu automatisieren. Der Eigenschaftswert wird durch die Ansicht angezeigt, z

bool IMyView.IsAdminSectionVisible{
       get{return pnlAdmin.Visible;}
       get{pnlAdmin.Visible=value;}
    }

) Ich glaube nicht, dass dieses Testniveau in MVC so einfach erreicht werden kann, ohne mein Modell zu verschmutzen.


0

Sie fühlen sich nicht mehr schlecht, wenn Sie "Nicht-Post-Back-Steuerelemente" verwenden - und herausfinden, wie Sie sie in eine traditionelle asp.net-Umgebung integrieren können.

Dies bedeutet , dass moderne (kostenlos zu benutzen) Javascript Kontrollen wie diese oder dieser oder diese können alle verwendet werden , ohne dass eine Runde Pflock in einem quadratischen Loch Gefühl zu passen zu versuchen.


0

Moderne Javascript-Steuerelemente sowie JSON-Anforderungen können mit MVC sehr einfach verarbeitet werden. Dort können wir viele andere Mechanismen verwenden, um Daten von einer Aktion in eine andere Aktion zu übertragen. Deshalb bevorzugen wir MVC gegenüber Webformularen. Wir können auch leichte Seiten erstellen.


0

Meine persönliche Meinung ist, dass der größte Nachteil bei der Verwendung von ASP.Net MVC darin besteht, dass die Entwickler, die es warten , CODE BLOCKSmit HTML...
HTML-Hölle vermischt sind ...

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.