25 Stimmen

Ist ASP.NET MVC eine schlechte Wahl für ein großes Unternehmensprojekt?

Wir sind dabei, eine große Unternehmensanwendung zu entwickeln. Ich bin ernsthaft erwägen, mit ASP.NET MVC, weil:

  1. Wir müssen Microsoft-Technologie verwenden (die Geschäftslogik ist komplett in C#)
  2. Leistung ist entscheidend
  3. Ich würde gerne so viel wie möglich testen

Mein Team hat bisher nur PHP für die Webentwicklung verwendet, ist aber sehr erfahren mit .NET Winforms (so oder so haben wir eine Lernkurve). Meine Sorge ist, dass einige Leute Bedenken hinsichtlich der Skalierbarkeit von ASP.NET MVC für große Anwendungen geäußert haben. Aber von dem, was ich gelesen habe Webforms haben ihre eigenen Probleme als gut.

Sollte ich Webforms überdenken, oder bleiben Sie mit meinem Bauchgefühl und verwenden ASP.NET MVC?

Verwandt:

Sollte ich meine nächste Webanwendung in ASP.NET MVC erstellen? https://stackoverflow.com/questions/521388/from-webforms-to-asp-net-mvc

4 Stimmen

Dies ist keine Fälschung. Die Frage bezog sich auf die Frage, ob man es in der Beta-Phase verwenden sollte, hier geht es um die Frage, ob man es für eine große Unternehmensanwendung verwenden sollte. Unterschiedliche Fragen.

1 Stimmen

Ich wäre an einem weiteren Kommentar des Autors interessiert, in dem er über seine Wahl und seine Erfahrungen berichtet. Ich benutze MVC seit der Beta-Phase und ich liebe es. Die meisten unserer Anwendungen sind klein, so kann ich nicht sprechen, wie skalierbar es ist. Mein Gefühl ist, dass, da es für eine Menge von Client-Side-Verarbeitung (jQuery, Ajax, JSON), dass es einfacher auf dem Server ist und würde daher machen es mehr skalierbar ermöglicht.

2 Stimmen

Bislang ist unsere Anwendung SEHR gut skalierbar. Es ist eine ziemlich massive App (Millionen von LOC, Hunderte von Ansichten), und wir haben das Gefühl, dass MVC die absolut beste Wahl war. Ich könnte mir nicht vorstellen, dies über Webformulare zu tun.

30voto

ASP.NET-Webformulare sind schwergewichtig und lassen einen Haufen Zeug auf Ihre Webseiten fallen, sowohl in HTML/Javascript als auch in serialisiertem Viewstate. Ich erinnere mich an meine erste ASP.NET-Website, bei der der GC wegen all der kurzlebigen Objekte, die aus dem grässlichen Viewstate rehydriert wurden, in die Luft flog. Oh, als ich noch jung und naiv war (d.h. vor 2 Jahren)... Man muss ein sehr gutes Verständnis von Webforms haben, um daraus skalierbare Websites zu bauen. Ist das möglich? Auf jeden Fall. Einfach? Eher nicht.

ASP.NET MVC ist schwieriger zu programmieren ursprünglich sondern ist SO viel einfacher zu entwickeln als Webformulare. Am schwierigsten zu erlernen sind 1) die Konventionen aka "magic strings", 2) Html + Inline-Code aka ASP und 3) html-Formulare.

Mit MVC, können Sie nicht weg mit dem Zustand Alptraum, die so häufig zu Webforms Entwicklung, was bedeutet, dass bedeutet, dass Ihre Webseiten sind meth-süchtig schlank. Es bedeutet auch, dass Sie Ihren Zustand ein wenig intelligenter codieren müssen. Der Code ist auch VIEL einfacher und skaliert VIEL besser als traditionelle Webforms, imho.

Außerdem ist das Testen mit ASP.NET aufgrund der fest kodierten und nicht verknüpfbaren Abhängigkeiten, die in das Framework integriert sind, nahezu unmöglich. ASP.NET MVC hat all dies durch System.Web.Abstractions-Mitglieder ersetzt, die diese schlecht konzipierten und nicht testbaren Objekte umhüllen.

Laufen Sie zu MVC, anstatt zu gehen.


Für die Offensichtlichen: Wenn Sie ein Framework verwenden, das auf dem ASP.NET-Framework aufbaut, wie z. B. MVC oder ein anderes, das Sie selbst oder jemand anderes geschrieben hat, OBVIOUSLY Einige dieser Bemerkungen sind nicht zutreffend.

Wenn Sie dagegen so programmieren, wie es die ersten Menschen mit dem ASP.NET-Webforms-Modell getan haben (z. B. Response.Write() in Page_Load), gelten meine Kommentare.

Kann man Code schreiben, der mit ASP.NET testbar ist? Sicher. Können Sie das tun, ohne speziellen Testcode einzubinden, den Sie oder jemand anders geschrieben hat? Sicher. Wenn Sie TypeMock.

0 Stimmen

Unsinn - Sie können in Webforms testen, wenn Sie einem Entwurfsmuster wie Model-View-Presenter folgen.

0 Stimmen

Hey, brighteyes, wenn Sie MVP machen, dann machen Sie keine Webformulare. ASP.NET MVC setzt ebenfalls auf Webforms auf, aber du verwendest keine der Webforms-Modelle (wie z.B. das Load-Event der Seite). MVP oder MVC auf Webforms aufsetzen != Webforms. Ich dachte nicht, dass diese Unterscheidung erklärt werden muss.

0 Stimmen

Sie haben Response.Write() in Page_Load verwendet, als Sie mit ASP.NET anfingen?... Sie waren ziemlich fortgeschritten. Ein besseres Beispiel für "beschissenen Code" wäre ein paar <asp:GridView> mit zwei <asp:SQLDataSource> und einem <asp:Login>... dann checken Sie diesen Viewstate aus

27voto

Chad Moran Punkte 12754

ASP.NET WebForms ist Winforms sehr ähnlich und ermöglicht RAD (Rapid Application Development). Es ist sehr schnell, etwas in kürzester Zeit zu erstellen. Das Problem dabei ist, dass das Testen sehr mühsam sein kann, und wenn es für irgendetwas verwendet wird, das für die Öffentlichkeit bestimmt ist, kann es zu großen Problemen mit dem ViewState kommen. WebForms können den Status halten und machen Dinge wie einen Assistenten zu einem Kinderspiel.

Die Entwicklung von ASP.NET MVC kann dagegen etwas länger dauern und setzt voraus, dass die Entwickler wissen, wie HTTP funktioniert. Es handelt sich um eine zustandslose Architektur, d.h. jede Anfrage ist eine eigene kleine Welt und hat normalerweise keine Kenntnis von früheren Anfragen. Das Framework ermöglicht auch eine hohe Testbarkeit.

Was die Leistung angeht, sind sie wahrscheinlich gleich, weil ASP.NET MVC nur ein Framework ist, das auf der bestehenden ASP.NET-Architektur aufbaut. Obwohl für Client-seitige Erfahrung würde ich sagen, MVC ist ein bisschen schneller.

Was die Skalierbarkeit angeht, würde ich sagen, dass sie technisch gesehen in etwa gleich sind. Wie für die Verwendung der API und die Integration es MVC wäre wahrscheinlich ein bisschen einfacher.

Die Website, über die Sie diese Frage stellen, basiert auf ASP.NET MVC und verfügt über 2 Webserver und einen leistungsstarken Datenbankserver.

11 Stimmen

Ich bin nicht der Meinung, dass die Entwicklung von WinForms schneller ist als MVC. HTTP ist (für Webentwickler) leichter zu verstehen als die Feinheiten des Ereignismodells. So etwas wie die Datenbindung einer Seite basierend auf dem OnSelectedItemChanged-Ereignis eines Benutzersteuerelements ist ein mühsamer Prozess in WebForms, aber trivial in MVC/jQuery.

5 Stimmen

Das ist ein subjektiver Kommentar. Ich sagte, dass WebForms für diejenigen, die mit WinForms entwickelt haben, schneller ist. Viele Entwickler werden es einfach "kapieren". Wobei herkömmliche WinForms-Entwickler einen zustandslosen Kontext (ASP.NET MVC/HTTP) nicht verstehen.

1 Stimmen

@ChadMoran: Wo haben Sie das gesagt? WebForms ist schneller für diejenigen, die mit WinForms entwickelt haben . Sie haben keine Beziehung zwischen den beiden hergestellt. Sie sagten nur, dass WebForms wie WinForms ist und RAD ermöglicht.

9voto

Gregory A Beamer Punkte 16670

ASP.NET MVC ist kein Problem für Unternehmen, aber auch nicht ASP.NET, Silverlight usw. Sie alle sind UI-Technologien. Der Großteil Ihrer Anwendungslogik sollte ohnehin in Bibliotheken unterhalb der UI-Schicht vorhanden sein, so dass so ziemlich jede UI verwendet werden kann.

  1. Wir müssen die Microsoft-Technologie nutzen
  2. Leistung ist entscheidend
  3. Ich würde gerne so viel wie möglich testen

Basierend auf den oben genannten, ASP.NET MVC wird funktionieren. Aber Sie können den Code unter die Benutzeroberfläche verschieben und testen. Wenn Ihre Algorithmen unterhalb der Benutzeroberfläche liegen, können Sie sie abstimmen, ohne die Benutzeroberfläche zu verändern. Und wenn die UI-Schicht sehr dünn ist, ist der Performanceverlust für die UI vernachlässigbar.

3voto

James Punkte 12410

Nein. Ein Vorteil von ASP.NET MVC gegenüber ASP.NET Web Forms in Bezug auf die Leistung ist, dass kein Kontrollbaum verwendet wird. Der Kontrollbaum verbraucht eine Menge serverseitigen Speicher und hält den Garbage Collector auf Seiten mit vielen Steuerelementen sehr beschäftigt. Ich würde behaupten, dass Sie mit ASP.NET MVC eine bessere Leistung erzielen. Die Unit-Testing-Aspekte sind ein echter Gewinn für Sie.

Die Kehrseite davon ist, dass Sie nicht alle praktischen, sofort einsetzbaren Steuerelemente verwenden können, die Sie mit ASP.NET Web Forms erhalten, und dass Sie wahrscheinlich am Ende mehr clientseitige JavaScript-Entwicklung betreiben werden, so dass das anfängliche Entwicklungsbudget wahrscheinlich größer sein muss, wenn Sie ASP.NET MVC gegenüber Web Forms wählen, aber Sie hätten langfristig eine bessere Lösung.

0 Stimmen

Wenn Sie Felder auf der Grundlage von Formulardefinitionsdaten dynamisch generieren möchten, halte ich ein Webformular für die einfachere Option. Denn Sie können den Kontrollbaum dynamisch aufbauen, einschließlich der Steuerelemente, Validatoren usw. Mit MVC ist es zwar nicht unmöglich, aber ich denke, es wird viel schwieriger sein.

2voto

David P Punkte 3594

Hören Sie auf Ihr Bauchgefühl. ASP.NET MVC erleichtert das Testen, da fast die gesamte API von Schnittstellen abgeleitet ist.

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