10 Stimmen

MVC-Philosophie angewandt auf Webformulare

Ich bin ziemlich neu in der Programmierung im Allgemeinen (wirklich begann nur 2 1/2 Jahren) und ich versuche zu entscheiden, was der beste Weg ist, um eine Web-App, die ich bei der Arbeit machen zu nähern. Ein erfahrener Entwickler bei der Arbeit ermutigt mich, mich mit MVC zu beschäftigen, und nach gut 24 Stunden, in denen ich Blogs, Quellcode und anderes Material zu diesem Thema durchforstet habe, beginne ich zu verstehen, warum ich es verwenden möchte.

Zur gleichen Zeit aber unsere Firma bestehenden Anwendungen sind als WebForms geschrieben, so dass ich nicht etwas so drastisch wie mit dem tatsächlichen ASP.NET MVC-Framework zu tun, um meine app (wäre es wirklich so drastisch obwohl?) zu machen wollen.

Was ich wirklich gerne wissen würde, ist, ob es praktisch oder sogar möglich wäre, WebForms zu tun, aber immer noch die MVC-Philosophie der Trennung der Anliegen folgen. Werde ich wirklich nur eine unnötige Schicht zu einer bereits komplizierten .aspx + codebehind Seite hinzufügen?

Jeder in der Blogosphäre scheint zu denken, dass sie irgendeine Art von Rahmen verwenden MÜSSEN, wenn sie MVC tun wollen. Was in WebForms hindert sie daran, es einfach selbst zu tun?

9voto

Kevin LaBranche Punkte 20730

Wenn ein leitender Angestellter Ihres Teams Sie ermutigt, MVC für Ihre Anwendung einzusetzen, und Sie es für einen guten Schritt halten, dann tun Sie es (vor allem, wenn es sich um eine eigenständige Anwendung handelt).

Sie können sich auch über die MVVM Muster. Dies ist, was viele mit WebForms getan haben, und es ist sehr ähnlich zu dem MVC-Muster. Indem Sie das MVVM-Muster auf WebForms anwenden, würden Sie zeigen, wie man WebForms immer noch verwenden kann, aber viel von den Vorzügen des MVC-Musters mit ASP.Net MVC erhält. Es wäre ein guter Weg, um anderen Entwicklern im Team zu zeigen, was getan werden kann, um WebForms mehr SOC und testbar zu machen, ohne WebForms komplett aufzugeben.

Hier ein paar weitere Links zu MVVM:

http://weblogs.asp.net/craigshoemaker/archive/2009/11/03/vm-workshop-model-view-viewmodel-mvvm-and-the-presentation-model-pattern-in-5-ui-platforms.aspx

http://russelleast.wordpress.com/2008/08/09/overview-of-the-modelview-viewmodel-mvvm-pattern-and-data-binding/

MVVM ist auch in Silverlight-Apps sehr beliebt....

Außerdem gibt es die MVP auch das Muster. Hier ist eine Open-Source-Implementierung für WebForms . Diese spezielle Implementierung wird von DotNetNuke 5.3 verwendet.

Eine weitere Erklärung von MS zu MVP und .Net

Beide sind eine gute Wahl, wenn Sie mehr Kontrolle über Ihren Code haben wollen, aber immer noch die WebForms-Funktionen, die Sie genießen und / oder wollen weiterhin aus irgendeinem Grund, wie es klingt wie in Ihrem Fall von einer Menge von Legacy-Code mit ihm zu haben.

3voto

Necros Punkte 2974

Ja, jede Version von MVC unterscheidet sich noch drastischer von Webformularen als die vorherige.

Wenn Sie MVC wirklich nicht verwenden möchten, sollten Sie sich MVP (Modell - Ansicht - Präsentator) Muster.

3voto

joe.liedtke Punkte 572

IMHO denke ich, dass Sie einfach zu MVC wechseln sollten.

Hier sind einige Gründe, warum ich den Wechsel vornehme:

  • Ich möchte meine HTML-Ausgabe kontrollieren können. [Es gibt bestimmte Web-Steuerelemente, die je nach Browser unterschiedliche Tags darstellen. Außerdem ist es schön, die Kontrolle über die Client-ID zu haben.]
  • Ich möchte die Möglichkeit haben, den Status meiner Anwendungen zu verwalten. (Im Gegensatz zu mit WebForms versuchen, es für mich zu verwalten, Weitergabe von größeren Brocken von Daten um als unbedingt notwendig sind.]
  • Ich ziehe es vor, testgetrieben zu arbeiten, und ich habe festgestellt, dass ich mit MVC eine bessere Testabdeckung erzielen kann.
  • Ich habe festgestellt, dass Bibliotheken wie JQuery arbeiten unglaublich gut mit MVC, ich habe festgestellt, dass die UI-Elemente, die ein Schmerz in WebForms wurden in MVC trivial geworden.

Um also auf Ihre Frage zurückzukommen... Sie können WebForms-Anwendungen erstellen, die viele der Lektionen von MVC nutzen. Sicher, und wenn Sie WebForms-Anwendungen erstellen wollen, würde ich dies als gute Praxis empfehlen. Man kann Frameworks einsetzen, um es MVC ähnlicher zu machen. Sicher, aber warum sollte man das wollen, wenn man einfach MVC verwenden kann?

0voto

James Lawruk Punkte 27947

Ja, Sie können immer noch WebForms verwenden und eine MVC-Philosophie anwenden. In den meisten Fällen hindert Web Forms Sie nicht daran, MVC-Prinzipien anzuwenden; es kann Sie lediglich auf einen falschen Weg führen. Wenn Sie immer noch mit WebForms arbeiten, versuchen Sie, einige der folgenden Dinge anzuwenden, die dem "Geist" von MVC entsprechen. Dies wird dazu beitragen, dass ein zukünftiger Wechsel von WebForms zu MVC weniger drastisch ausfällt.

  • Routing verwenden. In WebForms können Sie Routen auf .aspx-Seiten statt auf Controllern zuordnen, um schöne Urls ohne Erweiterung zu erhalten. Wenn Sie .Net 3.5 verwenden, benötigen Sie einen Custom Route Handler. In 4.0 ist das Routing eingebaut.

  • Vermeiden Sie die Verwendung von Event-Handlern in Ihrem Code. Page_Load wird in den meisten Fällen ausreichen.

  • Vermeiden Sie die Verwendung von ViewState und Web Controls, um Ihr Markup sauber und schlank zu halten. Wenn Sie eine Submit-Schaltfläche in Ihrem Markup haben, schreiben Sie sie wie folgt < input type="button" und nicht so: <asp:Button... Sie können Eigenschaften freilegen und foreach-Schleifen verwenden, indem Sie <%= %> genau wie in MVC, anstatt Label- und Repeater-Steuerelemente zu verwenden.

  • Verwenden Sie JQuery zum Einrichten von Event-Handlern, AJAX und clientseitiger DOM-Manipulation.

  • Übernehmen Sie das ViewModel-Konzept, indem Sie ein ViewModel-Objekt mit Ihren .aspx-Seiten verknüpfen.

  • Wenn Sie WebControls benötigen, verwenden Sie ClientIDMode="static" für die Kontrolle über Ihre Ids im Markup (.Net 4.0)

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