Frage

Als ich zum ersten Mal von StackOverflow hörte und hörte, dass es in ASP.Net MVC erstellt wurde, war ich etwas verwirrt.Ich dachte, ASP.Net sei immer ein Beispiel für eine MVC-Architektur.Sie haben die .aspx-Seite, die die Ansicht bereitstellt, die .aspx.vb-Seite, die den Controller bereitstellt, und Sie können eine andere Klasse als Modell erstellen.Der Prozess zur Verwendung von MVC in ASP.Net wird hier beschrieben Microsoft-Artikel.

Meine Frage ist also.Was bietet ASP.Net MVC, was Sie mit regulärem ASP.Net nicht tun könnten (sogar seit ASP.Net 1.1)?Es sind nur ausgefallene URLs?Ist es nur eine Angeberei für MS, sich mit neuen Technologien wie Ruby On Rails vergleichen zu können und zu sagen: „Das können wir auch“?Bietet ASP.Net MVC tatsächlich noch etwas anderes als ein paar zusätzliche Vorlagen im Menü „Datei“ > „Neu“?

Ich klinge im Moment wahrscheinlich sehr skeptisch und negativ, also höre ich einfach auf.Aber ich möchte wirklich wissen, was ASP.Net MVC tatsächlich bietet.Wenn mir jemand sagen kann, warum es Model-View-Controller ist und nicht in der Reihenfolge der Ebenen View-Controller-Model oder Model-Control-View, je nachdem, ob Sie von oben nach unten gehen oder umgekehrt, würde ich es tun Ich schätze das auch sehr.

BEARBEITEN

Außerdem ist es wahrscheinlich erwähnenswert, dass ich mich auch nie wirklich für das Webformularmodell (auch bekannt als Serversteuerung) interessiert habe.Ich habe es nur minimal und nie bei der Arbeit verwendet.

War es hilfreich?

Lösung

aspx erfüllt nicht das MVC-Muster, da die aspx Seite (die 'view') vor dem Code hinter aufgerufen wird (der 'Controller').

Das bedeutet, dass der Controller eine ‚harte Abhängigkeit‘ auf der Ansicht ist, die gegen MVC Prinzipien sehr viel ist.

Einer der wesentlichen Vorteile von MVC ist, dass es Sie Ihren Controller testen können (die eine Menge Logik enthält), ohne eine reale Ansicht instanziieren. Sie können einfach diese in der ASPX-Welt nicht.

Testen des Controller ganz von selbst ist viel schneller, als wenn man eine ganze asp.net Pipeline (Anwendung, Anfrage, Antwort, Ansichtszustand, den Sitzungszustand usw.) instanziiert.

Andere Tipps

Scott Guthrie es in diesem Beitrag erklärt " ASP.NET MVC-Framework "

  
      
  • Es ermöglicht eine saubere Trennung von Bedenken, Testbarkeit und TDD durch   Standard. Alle Kernverträge in   das MVC-Framework-Schnittstelle basiert   und leicht mockable (es enthält   Schnittstelle auf Basis   IHttpRequest / IHttpResponse   intrinsics). Sie können Einheit testen die   Einsatz ohne laufen zu   Steuerungen innerhalb eines Prozesses ASP.NET   (Herstellungseinheit Tests schnell). Du kannst   Verwenden Sie eine beliebige Einheit Test-Framework Sie   will diese Prüfung tun (einschließlich   NUnit, MBUnit, MS Test, etc.).

  •   
  • Es ist sehr dehnbar und steckbar. Alles in der MVC   Rahmen ist so gestaltet, dass es   werden leicht ersetzt / angepasst werden (für   Beispiel: Sie können optional Plug-in   Ihre eigene Ansicht-Engine, Routing-Politik,   Parameter Serialisierung, etc). Es   unterstützt auch bestehende mit   Dependency Injection und IOC-Container   Modelle (Windsor, Spring.Net,   NHibernate, etc).

  •   
  • Es enthält eine sehr leistungsfähige URL-Mapping-Komponente, mit der Sie zu   Erstellen von Anwendungen mit sauberen URLs.   URLs müssen keine Erweiterungen haben   in ihnen, und sind so konzipiert,   Unterstützung leicht SEO und REST-freundlich   Namensmuster. Zum Beispiel könnte ich   Karte leicht die / products / edit / 4-URL   die „Edit“ -Aktion des   Products Klasse in meinem Projekt   oben, oder eine Karte der   / Blogs / ScottGu / 10-10-2007 / EinThema /   URL zu einer „DisplayPost“ Wirkung eines   BlogEngineController Klasse.

  •   
  • Der MVC-Framework unterstützt die Verwendung des vorhandenen ASP.NET .ASPX, .ascx und   .Master Markup-Dateien als „-Ansicht   Vorlagen“(das heißt, Sie leicht verwenden können,   bestehende ASP.NET-Features wie verschachtelte   Masterseiten <% =%> Schnipsel,   deklarative Server steuert,   Vorlagen, Datenbindung, Lokalisierung,   usw). Es ist jedoch nicht, verwenden Sie die   bestehende Post-back-Modell für   Wechselwirkungen an den Server zurück.   Stattdessen werden Sie Route alle Endbenutzer   Wechselwirkungen zu einer Controller-Klasse   statt - das hilft sauber zu gewährleisten   Trennung von Bedenken und Testbarkeit   (Es bedeutet auch, keinen Ansichtszustand oder Seite   Lebenszyklus mit MVC basierten Ansichten).

  •   
  • Der ASP.NET MVC-Framework vorhandene ASP.NET-Funktionen voll unterstützt   wie forms / Windows-Authentifizierung, URL   Genehmigung, Mitgliedschaft / Rollen,   Ausgangs- und Zwischenspeichern von Daten,   Sitzung / profile Zustandsverwaltung,   Gesundheitsüberwachung, Konfiguration   System, die Provider-Architektur,   etc.

  •   

In erster Linie ist es dadurch sehr einfach, testbare Websites mit klar definierten Verantwortungstrennungen zu erstellen.Mit dem neuen MVC-Framework ist es auch viel einfacher, gültige XHTML-Benutzeroberflächen zu erstellen.

Ich habe das zweite CTP (ich glaube, sie sind jetzt bei fünf) verwendet, um mit der Arbeit an einer Website zu beginnen, und nachdem ich zuvor einige Webanwendungen erstellt habe, muss ich sagen, dass es hunderte Male besser ist als die Verwendung des Serversteuerungsmodells.

Serverkontrollen sind in Ordnung, wenn Sie nicht wissen, was Sie tun.Wenn Sie lernen, wie Webanwendungen funktionieren sollten, beginnen Sie, sie zu bekämpfen.Letztendlich müssen Sie Ihre eigenen schreiben, um die Mängel der aktuellen Kontrollen zu überwinden.An diesem Punkt beginnt die MVC zu glänzen.Und dabei ist die Testbarkeit Ihrer Website noch nicht einmal berücksichtigt ...

Große Artikel von Dino Esposito, das gemeint ist ASP.net MVC ASP.net Webformulare developpers zu erklären:

http://dotnetslackers.com/articles/aspnet/AnArchitecturalViewOfTheASPNETMVCFramework.aspx

Nicht mehr automatisch generierten HTML-IDs !!! Jeder, jede Art von JavaScript zu tun schätzt diese Tatsache.

ASP.Net mit ihm ist hinter Code ist fast MVC - aber nicht - das eine große Sache, dass es nicht macht, ist, dass die codebehinds direkt an die aspx die gebunden sind - das ist ein großer Bestandteil von MVC ist . Wenn Sie den codebehinds als Controller denken - das sollte vollständig aus der Sicht entkoppelt werden. Die neue .NET MVC rundet diese aus - und bringt einen vollständigen MVC-Framework. Zwar gibt es bereits bestehende for .NET ist (siehe Spring.NET).

Ich schaute durch ein paar einfache Beispiele wie diesem . Ich kann den Unterschied Art sehen. Allerdings sehe ich nicht wirklich, wie MVC die Ansicht von der Steuerung abkoppelt. Die Ansicht verweist immer noch Sachen, die in der Steuerung ist. Ich sehe, wie es macht es viel einfacher zu testen, und dass zumindest in MVC der Controller hat keine Kenntnis von der Ansicht. Und Sie würden nicht die Ansicht verarbeiten Methoden in der Steuerung zu nennen. Ich kann sehen, das ist schon ein Sprung, wenn auch auf den ersten Blick nicht viel erscheinen kann.

ich mit @Will einverstanden Server Kontrollen zu kämpfen. Ich habe noch nie in einer Situation gearbeitet, wo sie tatsächlich verwendet wurden, aber viele Leute, die ich kenne, die haben, haben sich in ganz wenigen Einschränkungen mit ihnen laufen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top