Übersetzung vorschlagen
 
Andere Vorschläge:

progress indicator
Keine anderen Vorschläge
MSDN Magazin > Home > Ausgaben > 2009 > MSDN Magazin Juli 2009 >  Cutting Edge: Web Forms und ASP.NET MVC im Verg...
Inhalt anzeigen:  Englisch mit deutscher ÜbersetzungInhalt anzeigen: Englisch mit deutscher Übersetzung
Dies sind maschinell übersetzte Inhalte, die von den Mitgliedern der Community bearbeitet werden können. Sie können die Übersetzung verbessern, indem Sie auf den jeweils zum Satz gehörenden Link "Bearbeiten" klicken.Mithilfe des Dropdown-Steuerelements "Inhalt anzeigen" links oben auf der Seite können Sie zudem bestimmen, ob nur der englische Originaltext, nur die deutsche Übersetzung oder beides nebeneinander angezeigt werden.
Cutting Edge
Comparing Web Forms And ASP.NET MVC
Dino Esposito
I first saw Microsoft ASP.NET in action in 1999, when it was tentatively named ASP+. At that time, building a Web application on the Microsoft platform was a matter of assembling a bunch of Active Server Pages (ASP).
In a typical ASP page, you find HTML literals interspersed with code blocks. In code blocks, script code (mostly VBScript) is used to incorporate data generated by COM objects, such as components from the ActiveX Data Objects (ADO) framework. Undoubtedly, the introduction of ASP.NET in the late 1990s was a big step forward, as it represented a smart way to automate the production of HTML displayed in a client's browser.
ASP.NET simplified a number of everyday tasks and, more importantly, enabled developers to work at a higher level of abstraction.This allowed them to focus more on the core functions of the Web application rather than on common tasks around Web page design.
Based on server controls, ASP.NET allows developers to build real-world Web sites and applications with minimal HTML and JavaScript skills. The whole point of ASP.NET is productivity, achieved through powerful tools integrated in the runtime as well as the provision of development facilities, such as server controls, user controls, postback events, viewstate, forms authentication, and intrinsic objects. The model behind ASP.NET is called Web Forms and it was clearly inspired by the desktop Windows Forms model (in turn deeply inspired by the Visual Basic Rapid Application Development philosophy).
So why did Microsoft release "another" ASP.NET framework, called ASP.NET MVC? In this article, I'll explore the pros and cons of both ASP.NET Web Forms and ASP.NET MVC.

Benefits of ASP.NET Web Forms
As noted, ASP.NET Web Forms is stable and mature, and it is supported by heaps of third party controls and tools.
One of the keys to the rapid adoption of ASP.NET is certainly the point-and-click metaphor taken from Windows desktop development. With Web Forms, Microsoft basically extended the Visual Basic programming model to the Web. Desktop development, however, is stateful whereas the Web is inherently stateless. So the Web Forms model essentially abstracted a number of features to provide a simulated stateful model for Web developers. As a result, you didn't have to be a Web expert with a lot of HTML and JavaScript knowledgeto write effective Web applications.
To simulate stateful programming over the Web, ASP.NET Web Forms introduced features such as viewstate, postbacks, and an overall event-driven paradigm.For example, the developer can, say, double-click on a button to automatically generate a stub of code that will handle the user's clicking to the server. To get started writing an ASP.NET Web application, you just need to know the basics of .NET development, the programming interface of some ad hoc components, like server controls. Server controls that generate HTML programmatically, and the runtime pipeline, contribute significantly to a fast development cycle.
At the end of the day, key features of ASP.NET Web Forms are just the componentization of some ASP best practices. For example, postback, auto-population of input fields, authentication and authorization before page rendering, server controls, and compilation of the page, are not features devised and created from scratch for ASP.NET Web Forms. All of them evolved from ASP best practices. Ten years ago, ASP developers (including myself) were looking for exactly the set of features that Web Forms ended up providing. Furthermore, ASP.NET Web Forms generally exceeded our expectations by providing a full abstraction layer atop the whole Web stack: JavaScript, CSS, HTML.
To write an ASP page, you did need to know quite a bit about the Web and script languages. To write an ASP.NET page, in contrast, you need to know primarily about .NET and its compiled languages. Productivity and rapid development of data-driven, line-of-business applications have been the selling points of ASP.NET Web Forms. Until now, that is.

Drawbacks of Web Forms
Like many other things in this imperfect world, ASP.NET Web Forms is not free of issues. Years of experience prove beyond any reasonable doubt that separation of concerns (SoC) has not been a natural fit with the Web Forms paradigm.
Automated testing of an ASP.NET Web Forms application is hard, and not just because of a lack of SoC. ASP.NET Web Forms is based on a monolithic runtime environment that can be extended, to some extent, but it is not a pluggable and flexible system. It's nearly impossible to test an ASP.NET application without spinning up the whole runtime.
To achieve statefulness, the last known state of each server page is stored within the client page as a hidden field—the viewstate. Though viewstate has too often been held up as an example of what's wrong with Web Forms, it is not the monster it's made out to be. In fact, using a viewstate-like structure in classic ASP was a cutting-edge solution. From an ASP perspective, simulation of statefulness (that is, postback, viewstate, controls) was a great achievement, and the same was also said at first about how Web Forms isolated itself from HTML and JavaScript details.
For modern Web pages, abstraction from HTML is a serious issue as it hinders accessibility, browser compatibility, and integration with popular JavaScript frameworks like jQuery, Dojo, and PrototypeJS. The postback model that defaults each page to post to itself, makes it harder for search engines to rank ASP.NET pages high. Search engines and spiders work better with links with parameters, better if rationalized to human-readable strings. The postback model goes in the opposite direction. Also, an excessively large viewstate is problematic because the keyword the rank is based on may be located past the viewstate, and therefore far from the top of the document. Some engines recognize a lower rank in this case.

Benefits of ASP.NET MVC
Some of the recognized issues with the Web Forms model can be fixed within ASP.NET 4.0. You can disable or control the size of the viewstate. (Even though very few developers seem to have noticed, the size of the viewstate decreased significantly in the transition from ASP.NET 1.1 to ASP.NET 2.0 when Microsoft introduced a much more efficient serialization algorithm. In ASP.NET 4.0, you should also expect improvements in the way in which viewstate can be disabled and controlled.) You can use an ad hoc HTTP module to do URL rewriting or, better yet, you can use the newest Web routing API from ASP.NET 3.5 SP1. In ASP.NET 4.0, you can minutely control the ID of elements, including scoped elements. Likewise, in ASP.NET 4.0 the integration of external JavaScript frameworks will be simpler and more effective. Finally, the history management API in ASP.NET 3.5 SP1 made AJAX and postback work together while producing a search-engine-friendly page.
In many aspects, the Web Forms model in ASP.NET 4.0 is a better environment that tackles some of the aforementioned flaws. So what's the point of ASP.NET MVC?
You'll find a good introduction to ASP.NET MVC in the March 2008 issue MSDN Magazine ("Building Web Apps without Web Forms"), where Chris Tavares explains the basics of ASP.NET development without Web Forms. In summary, ASP.NET MVC is a completely new framework for building ASP.NET applications, designed from the ground up with SoC and testability in mind. When you write an ASP.NET MVC application, you think in terms of controllers and views. You make your decisions about how to pass data to the view and how to expose your middle tier to the controllers. The controller chooses which view to display based on the requested URL and pertinent data. Each request is resolved by invoking a method on a controller class. No postbacks are ever required to service a user request. No viewstate is ever required to persist the state of the page. No arraysof black-box server controls exist to produce the HTML for the browser.
With ASP.NET MVC, you rediscover the good old taste of the Web—stateless behavior, full control over every single bit of HTML, total script and CSS freedom.
The HTML served to the browser is generated by a separate, and replaceable, engine. There's no dependency on ASPX physical server files. ASPX files may still be part of your project, but they now serve as plain HTML templates, along with their code-behind classes. The default view engine is based on the Web Forms rendering engine, but you can use other pluggable engines such as nVelocity or XSLT. (For more details, have a look at the MVCContrib Web site at mvccontrib.codeplex.com.)
The runtime environment is largely the same as in ASP.NET Web Forms, but the request cycle is simpler and more direct. An essential part of the Web Forms model, the page lifecycle, is no longer necessary in ASP.NET MVC. It should be noted, though, that the default view engine in ASP.NET MVC is still based on the Web Forms rendering engine. This is the trick that allows you to use master pages and some server controls in ASP.NET MVC views. As long as the view engine is based on Web Forms, the view is an ASPX file with a regular code-behind class where you can handle classic events such as Init, Load, PreRender, plus control-specific events such as RowDataBound for a GridView control. If you switch off the default view engine, you no longer need Page_Loador other events of the standard page lifecycle. Figure 1 compares the run-time stack for Web Forms and ASP.NET MVC.
Figure 1 The Run-Time Stack at a Glance (Click the image for a larger view)
It should be noted that the "Page lifecycle" boxes in Figure 1 have been collapsed for readability and include several additional events each. Anyway, the run-time stack of ASP.NET MVC is simpler and the difference is due to the lack of a page lifecycle. However, this makes it problematic to maintain the state of visual elements across page requests. State can be stored into Session or Cache, but this decision is left to the developer.
Figure 2 illustrates the sequence of an ASP.NET MVC request.
Figure 2 The Sequence Diagram of an ASP.NET MVC Request (Click the image for a larger view)
The MVC acronym stands for Model-View-Controller. However, you should note that the pattern depicted in Figure 2 doesn't exactly match the classic formulation of the MVC pattern. In particular, in the original MVC paper, Model and View are tied together through an Observer relationship. The MVC pattern, though, is deliberately loosely defined and, even more importantly, was devised when the Web was still to come. Adapting MVC to the Web moved it toward the model in Figure 2, which is also known as Model2. In general, when you talk or read about MVC be aware that there are quite a few slightly different flavors of it within the literature.

Drawbacks of ASP.NET MVC
So ASP.NET MVC brings to the table a clean design with a neat separation of concerns, a leaner run-time stack, full control over HTML, an unparalleled level of extensibility, and a working environment that enables, not penalizes, test-driven development (TDD). Is ASP.NET MVC, therefore, a paradise for Web developers?
Just like with Web Forms, what some perceive as a clear strength of ASP.NET MVC, others may see as a weakness. For example, full control over HTML, JavaScript, and CSS, ASP.NET MVC means that you enter the Web elements manually. Much of this pain can be mitigated, however, with some of the more recent JavaScript libraries and even different view engine. In general, though, there's no sort of component model to help you with the generation of HTML, as there is in the Web Forms approach. Currently, HTML helpers and user controls are the only tools you can leverage to write HTML more quickly. As a result, , some ASP.NET developers may see ASP.NET MVC as taking a step backward in terms of usability and productivity. Another point to be made, regarding the impact of ASP.NET MVC on everyday development, is that it requires some upfront familiarity with the MVC pattern. You need to know how controllers and views work together in the ASP.NET implementation. In other words, ASP.NET MVC is not something you can easily learn by experimenting. In my experience, this may be the source of decreased productivity for the average Web Forms developer.

The Right Perspective
As an architect or developer, it is essential that you understand the structural differences between the frameworks so that you can make a thoughtful decision. All in all, ASP.NET Web Forms and ASP.NET MVC are functionally equivalent in the sense that a skilled team can successfully use either to build any Web solution.
The skills, education, and attitude of the team, though, are the key points to bear in mind. As you may have figured out yourself, most of the features presented as a plus for either framework may also be seen as a minus, and vice versa. Full control over HTML, for example, may be a lifesaver to one person but a nightmare to another. Personally, I was shocked the first time I saw the content of a nontrivial view page in ASP.NET MVC. But when I showed the same page to a customer whose application was still using a significant number of ASP pages, well, he was relieved. If you have accessibility as a strict requirement, you probably want to take full control over the HTML being displayed. And this is not entirely possible with Web Forms. On the other hand, if you're building a heavy data-driven application, you'll welcome the set of data-bound controls and statefulness offered by Web Forms.
Correctly, Microsoft has not positioned ASP.NET MVC as a replacement for ASP.NET Web Forms. Web Forms is definitely a pattern that works for Web applications. At the same time, Ruby-on-Rails has proved that MVC can also be a successful pattern for Web applications; and ASP.NET MVC confirms this.
In the end, Web Forms and ASP.NET MVC have pros, cons, and structural differences that affect various levels. Generalizing, I'd say that Web Forms embraces the RAD philosophy whereas ASP.NET MVC is TDD-oriented. Further, Web Forms goes toward an abstraction of the Web that simulates a stateful environment, while ASP.NET MVC leverages the natural statelessness of the Web and guides you towards building applications that are loosely coupled and inherently testable, search-engine friendly, and with full control of HTML.

What's the Perfect Model for ASP.NET?
After using Web Forms for years, I recognize a number of its drawbacks, and ASP.NET MVC addresses them quite well: testability, HTML control, and separation of concerns. But though I see ASP.NET MVC as an equally valid option at this time, I don't believe it to be the silver bullet for every Web application. In my opinion, ASP.NET MVC today lacks some level of abstraction for creating standard pieces of HTML. HTML helpers are just an interesting attempt to speed up HTML creation. I hope to see in the near future a new generation of MVC-specific server controls, as easy and quick to learn and use as Web Forms server controls, but totally unbound from the postback and viewstate model. My hopes are for a System.Web.Mvc.GridView control that saves me from writing a loop to generate an HTML table, while offering column templates, server-side data-binding events, and styling options. What would be the difference between such an MVC GridView and today's Web Forms GridView? The MVC GridView would only emit HTML plus, optionally, some row-specific JavaScript, but it wouldn't manage things like paging and sorting. Paging and sorting will be delegated to other specific controls or plain links created by the developer. In this way, the MVC GridView could bring some RAD flavor to ASP.NET MVC, speeding up the development of pages without precluding handcrafted pages.
Going back to the root of the problem, the key difference between Web Forms and ASP.NET MVC is the underlying pattern. Web Forms is a model based on the "Page Controller" pattern. Web Forms are UI-focused and centered around the concept of a page: the page gets input, posts back, and determines the output for the browser. The development environment was therefore devised to enable rapid prototyping, via wizards and rich designers. Any user action ends up in a method on the code-behind class of each page. At that point, though, nothing prevents you from using proper SoC and nothing really stops architects from imposing patterns like MVC, Model-View-Presenter (MVP) or even Model-View-View-Model (MVVM).
The Web Forms architecture does not encourage SoC, but it doesn't prevent it either. The Web Forms architecture makes it seductive to opt for drag-and-drop of controls, to code logic right in event stubs without further separation, and to drop data sources right on the page, which couples the UI directly to the database. MVC is neither prohibited nor a blasphemy in Web Forms; it's just that very few developers practice it because it requires working around much of the Web Forms infrastructure.
Testability is a different story. ASP.NET Web Forms doesn't prevent unit testing, but it requires much disciple and repetitive boilerplate coding to do so.As long as you code your way to SoC you can test and reuse presentation and business logic. Sure, you likely don't have the Visual Studio project template to create a test project for you. You need to become familiar with testing and mocking frameworks and manage those projects yourself. But this can be done. From a testability perspective, though, a real difference exists between Web Forms and ASP.NET MVC. In Web Forms, you just don't have the flexibility of ASP.NET MVC. This is a true limitation. ASP.NET MVC is designed with testability in mind,which means that the framework architecture guides the developer to write code that is inherently testable, that is isolated from the context or connected to it via contracted interfaces. Even more importantly, in ASP.NET MVC intrinsic objects are mockable as they expose interface and base classes. From a testing standpoint, the best you can do in Web Forms is to move your logic into separate and easily testable classes. Then, you test the presentation (ASPX and code-behind) by sending HTTP requests and checking the results. You can't do this in Web Forms without spinning up the whole ASP.NET runtime, however. In ASP.NET MVC, the majority of testing is to assure that the data being passed into the view is correct. In addition, you can mock up intrinsic objects and run your tests in a genuinely isolated environment.
We should also note that control over HTML and SEO-friendly URLs, both advantages of ASP.NET MVC, can be achieved to some extent in Web Forms. ASP.NET 3.5 SP1, in particular, includes the URL Routing and History API for SEO. CSS adapters, instead, are the tools to leverage to try to control HTML in Web Forms. Integration with JavaScript and AJAX frameworks is, frankly, no longer an issue in Web Forms.

Undisputable Facts
ASP.NET Web Forms and ASP.NET MVC are not competitors in the sense that one is supposed to replace the other. You have to choose one, but different applications may force you to make different choices. In the end, it's really like choosing between a car and a motorcycle when making a trip. Each trip requires a choice, and having both vehicles available should be seen as an opportunity, not as a curse. Here are some facts about the frameworks:
  • Web Forms is hard to test.
  • ASP.NET MVC requires you to manage the generation of HTML at a more detailed level.
  • ASP.NET MVC is not the only way to get SoC in ASP.NET.
  • Web Forms allows you to learn as you go.
  • Viewstate can be controlled or disabled.
  • Web Forms was designed to abstract the Web machinery.
  • ASP.NET MVC exposes Web architecture.
  • ASP.NET MVC was designed with testability and Dependency Injection in mind.
  • ASP.NET MVC takes you towards a better design of the code.
  • ASP.NET MVC is young and lacks a component model.
  • ASP.NET MVC is not anti-Web Forms.
ASP.NET MVC was not created to replace Web Forms but to partner it. ASP.NET MVC turns some of the weaker elements of Web Forms into its own internal strengths. However, problems such as lack of testability, SoC, SEO, and HTML control can be avoided or reduced in Web Forms with some discipline and good design, though the framework itself doesn't provide enough guidance.

At the End of the Day
We have seen that there are pros and cons in both Web Forms and ASP.NET MVC. Many developers, however, seem to favor ASP.NET MVC because it represents the only way to get SoC and testability into their applications. Is it really the only way? No. However, ASP.NET MVC makes it easier and natural to achieve SoC and write more testable code. ASP.NET MVC doesn't magically transform every developer into an expert architect and doesn't prevent developers from writing bloated and poorly designed code. At the end of the day, both Web Forms and ASP.NET MVC help to build applications that are designed and implemented to deal effectively with the complexity of real-world solutions. No software magic exists, and none is yet supported by the ASP.NET platform.

Send your questions and comments for Dino to cutting@microsoft.com.

Dino Esposito is an architect at IDesign and the co-author of Microsoft .NET: Architecting Applications for the Enterprise (Microsoft Press, 2008). Based in Italy, Dino is a frequent speaker at industry events worldwide. You can join his blog at weblogs.asp.net/despos.

Innovationen
Web Forms und ASP.NET MVC im Vergleich
Dino Esposito
Ich erhalte zuerst Microsoft XML-Webdienste in Aktion in 1999, wenn es mit Vorbehalt ASP+ benannt wurde. Zu diesem Zeitpunkt war das Erstellen einer Webanwendung auf der Microsoft-Plattform eine Frage der eine Reihe von Active Server Pages (ASP) zusammenstellen.
In eine typische ASP-Seite finden Sie HTML-Literale mit Codeblöcke Vorlagenverzeichnissen. In Codeblöcken wird Skriptcode (hauptsächlich VBScript) verwendet, um von COM-Objekten, z. B. ActiveX Data Objects (ADO)-Framework-Komponenten erzeugten Daten einzubinden. Zweifellos, die Einführung von XML-Webdienste in den späten 90er Jahren war ein großer Schritt weiterleiten, dargestellt eine intelligente Möglichkeit zur Automatisierung der Produktion von HTML im Browser des Clients angezeigt.
XML-Webdienste eine Reihe von alltäglichen Aufgaben vereinfacht und, wichtiger ist, aktiviert Entwickler arbeiten auf einer höheren Ebene abstraction.This zulässig, um mehr auf die Kernfunktionen der Webanwendung anstatt auf Allgemeine Aufgaben um Webseitendesigns konzentrieren.
Serversteuerelemente, Grundlage XML-Webdienste ermöglicht Entwicklern das reale Websites und Anwendungen mit minimalen HTML- und JavaScript-Fähigkeiten zu erstellen. Der gesamte Punkt XML-Webdienste Produktivität, durch leistungsstarke Tools integriert in die Common Language Runtime sowie die Bereitstellung von Entwicklung Einrichtungen wie Serversteuerelemente, Benutzersteuerelemente, Postbackereignisse, Viewstate, Formularauthentifizierung und systeminternen Objekten erreicht ist. Das Modell hinter XML-Webdienste wird aufgerufen, Webformulare und es wurde deutlich inspiriert vom desktop Windows Forms-Modell (wiederum tief inspiriert von Visual Basic Rapid Application Development Philosophie).
So warum Microsoft "anderen" freigebenXML-Webdienste aufgerufen XML-Webdienste MVC-Framework? In diesem Artikel werde ich die vor- und Nachteile von XML-Webdienste Webformulare und XML-Webdienste MVC untersuchen.

Vorteile von XML-Webdienste Webformulare
Wie bereits erwähnt, XML-Webdienste Webformulare ist stabil und ausgereifte, und es wird von Heaps der Steuerelemente von Drittanbietern und Tools unterstützt.
Einer der Schlüssel für die schnelle Akzeptanz der XML-Webdienste ist sicherlich die Point-and-Click-Metapher, die Windows desktop-Entwicklung entnommen. Mit Web Forms erweitert Microsoft im Grunde das VBA-Programmiermodell im Web. Desktop-Entwicklung ist jedoch statusbehaftete im Web naturgemäß zustandslosen. Das Web Forms-Modell abstrahiert so im Wesentlichen eine Reihe Funktionen eine simulierte statusbehaftete Modell für Webentwickler bereitstellen. Folglich haben müssen Sie eine mit vielen HTML-Experte Website werden und JavaScript Knowledgeto effektive Web-Anwendungen schreiben.
So simulieren kann, statusbehaftete Programmierung über das Internet XML-Webdienste Web Forms eingeführten Features wie Viewstate, Postbacks und insgesamt ereignisgesteuerte paradigm.For beispielsweise der Entwickler sagen, doppelklicken auf eine Schaltfläche, um automatisch einen Stub Code generieren, die der Benutzer klickt auf den Server behandelt. Zum Einstieg beim Schreiben einer XML-Webdienste Web-Anwendung müssen Sie lediglich die Grundlagen von .NET Entwicklung, die Programmierschnittstelle einige ad-hoc-Komponenten, wie Serversteuerelemente kennen. Serversteuerelemente, die HTML-programmgesteuert generieren und die Common Language Runtime-Pipeline tragen erheblich zu einer schnellen Entwicklungszyklus.
Am Ende des Tages sind wichtige Funktionen von XML-Webdienste Web Forms Aufteilung in nur die Komponenten einige best Practices für ASP. Postbacks, Auto-Auffüllung des Eingabefelder, Authentifizierung und Autorisierung vor dem Rendern der Seite, Serversteuerelemente und Kompilierung der Seite sind beispielsweise nicht Features entwickelt und völlig für XML-Webdienste Webformulare erstellt. Alle von ASP-Empfehlungen entwickelt. Vor zehn Jahren wurden ASP-Entwickler (mich einschließlich) für genau eine Gruppe von Features suchen, die Web Forms bis Bereitstellen beendet. Darüber hinaus überschritten XML-Webdienste Web Forms im Allgemeinen unseren Erwartungen durch Bereitstellen einer vollständigen Abstraktionsschicht an oberster Position im gesamten Web Stapel: JavaScript, CSS, HTML.
Schreiben eine ASP-Seite, müssen Sie etwas ganz kennen die Web- und Skript Sprachen. Schreiben einer XML-Webdienste Seite, im Gegensatz dazu müssen Sie hauptsächlich über .NET und die kompilierten Sprachen kennen. Produktivität und die rasche Entwicklung von datengesteuerten, Line-of-Business-Anwendungen wurden die Punkte Selling XML-Webdienste Webformulare. Bis jetzt ist.

Nachteile von Web Forms
Wie viele andere Tätigkeiten in diese unzureichenden Welt ist XML-Webdienste Webformulare nicht frei von Problemen. Jahre Erfahrung nachweisen über angemessene nicht sicher sind, dass die Trennung von Bereichen (SoC) keine natürliche Anpassen mit der Web Forms-Paradigma wurde.
Automatisierte Tests von einem XML-Webdienste Web Forms-Anwendung ist schwierig und nicht nur aufgrund mangelnder SoC. XML-Webdienste Web Forms basiert auf einer monolithischen Laufzeitumgebung, die erweitert werden können, zu einem gewissen Grad jedoch kein System für austauschbare und flexibel. Es ist nahezu unmöglich, Testen Sie eine XML-Webdienste Anwendung, ohne sich drehenden, bis die gesamte Laufzeit.
Um Statefulness zu erreichen, wird der letzte bekannte Status jeder Server-Seite innerhalb der Clientseite als ausgeblendetes Feld gespeichert, den Ansichtszustand. Obwohl Viewstate häufig gehalten wurde hat Sie als Beispiel mit Web Forms Fehlersuche, ist es nicht die Monster, die es gemacht ist werden. Mit der Viewstate-ähnlichen Struktur im klassischen ASP war eigentlich eine topaktuelle Lösung. Aus der Perspektive ASP Simulation des Statefulness (Postback, Viewstate, Steuerelemente) war eine hervorragende Leistung und dem wurde auch zunächst über wie Web Forms selbst von HTML- und JavaScript Details isoliert bezeichnet.
Für moderne Webseiten ist Abstraktion von HTML ein schwerwiegendes Problem, wie Sie Eingabehilfen, Browserkompatibilität und Integration mit gängigen JavaScript-Frameworks wie jQuery, Dojo und PrototypeJS behindert. Das postback Modell, das jeder Seite an sich selbst standardmäßig erschwert für Suchmaschinen zu Rang XML-Webdienste Seiten hoch. Suchmaschinen und Spider funktionieren besser mit Hyperlinks mit Parametern, besser, wenn in lesbare Zeichenfolgen rationalized. Das postback Modell wechselt in die entgegengesetzte Richtung. Darüber hinaus ist eine übermäßig große Viewstate, problematisch, da das Schlüsselwort der Rang basiert möglicherweise hinter der Ansichtszustand gespeichert und daher weit vom oberen Rand des Dokuments. Einige Module erkennt einen niedrigeren Rang in diesem Fall.

Vorteile von MVC XML-Webdienste
Einige der erkannten Probleme mit dem Web Forms-Modell können in behoben XML-Webdienste 4.0. Sie können steuern die Größe der Viewstate oder deaktivieren. (Obwohl nur sehr wenige Entwickler bemerkt haben scheint, die Größe des Viewstate verringert wesentlich im Übergang von XML-Webdienste 1.1 XML-Webdienste 2.0 bei Microsoft einen wesentlich effizientere Serialisierung-Algorithmus eingeführt. In XML-Webdienste 4.0, sollten Sie auch erwarten Verbesserungen wie in der Ansichtszustand deaktiviert und gesteuert werden kann.) Können Sie ein ad-hoc-HTTP-Modul dazu URL umgeschrieben oder besser noch, können Sie das neueste Internet routing-API von XML-Webdienste 3.5 SP1. In XML-Webdienste 4.0, Sie können minutely die ID der Elemente, einschließlich Gültigkeitsbereich Elemente steuern. Ebenso in XML-Webdienste 4.0 die Integration von externen JavaScript-Frameworks werden einfacher und effektiver. Schließlich den Verlauf Verwaltungs-API in XML-Webdienste 3.5 SP1 vorgenommen AJAX und Postback beim Erzeugen einer suchen-Engine-angezeigten Seite zusammen.
In vielen Aspekten der Web Forms in Modell XML-Webdienste 4.0 ist eine bessere Umgebung, die einige der oben genannten Fehler behandelt. Was ist der Punkt XML-Webdienste MVC?
Sie finden eine gute Einführung in XML-Webdienste MVC im März 2008 Problem MSDN Magazin ("Erstellen von Anwendungen ohne Webformulare"), Chris Tavares, die Grundlagen der erläutert XML-Webdienste Entwicklung ohne Webformulare. Zusammenfassend XML-Webdienste MVC ist ein vollständig neue Framework für die Erstellung XML-Webdienste Anwendungen, von Grund auf nach oben mit SoC und Testbarkeit beachten. Wenn Sie eine XML-Webdienste MVC-Anwendung schreiben, betrachten Sie in Bezug Controllern und Ansichten. Sie treffen Ihre Entscheidungen über Verfahren zum Übergeben von Daten zur Ansicht und wie den mittleren Ebene auf die Domänencontroller verfügbar gemacht. Der Domänencontroller wählt die angeforderten URL und die relevanten Daten der Ansicht anzuzeigenden basiert. Jede Anforderung wird durch Aufrufen einer Methode für eine Controllerklasse aufgelöst. Keine Postbacks müssen je einer Benutzer-Anforderung. Kein Ansichtszustand ist je erforderlich, um den Status der Seite beibehalten. Keine Arraysof Blackbox-Serversteuerelemente vorhanden sein, um das HTML für den Browser zu erzeugen.
Mit ASP.NET MVC rediscover Sie gute alte Geschmack des Webs, statusfreies Verhalten, vollständige Kontrolle über jedes einzelne Bit von HTML, insgesamt Skript und CSS Freiheit.
Die HTML an den Browser bereitgestellt wird durch eine separate und ersetzbar, Engine generiert. Es gibt keine Abhängigkeit auf aspx-physischen Serverdateien. ASPX-Dateien möglicherweise immer noch Teil des Projekts, jedoch Sie jetzt als einfache HTML-Vorlagen zusammen mit Ihren Code-Behind-Klassen dienen. Die Standard-Ansicht-Engine basiert auf der Web Forms-Renderingmodul, jedoch können Sie andere austauschbare Module z. B. nVelocity oder XSLT. (Weitere Einzelheiten hierzu haben Sie einen Blick auf die MVCContrib-Website unter mvccontrib.codeplex.com.)
Die Common Language Runtime-Umgebung ist größtenteils in XML-Webdienste Webformulare identisch, aber der Anforderung Zyklus ist, einfachere und direktere. Ein wesentlicher Bestandteil im Web Forms-Modell der Lebenszyklus der Seite ist nicht mehr in XML-Webdienste MVC erforderlich. Es sollte, jedoch beachtet werden, dass die Standard-Ansicht-Engine in XML-Webdienste MVC weiterhin auf der Web Forms-Renderingmodul basiert. Dies ist der Trick, mit der Masterseiten und einige Serversteuerelemente in XML-Webdienste MVC-Ansichten verwenden kann. Solange das Ansicht-Modul auf Web Forms basiert, ist die Ansicht eine ASPX-Datei mit einer normalen Code-Behind-Klasse, wobei Sie die klassische Ereignisse wie Init, Load, PreRender sowie steuerelementspezifische Ereignisse wie RowDataBound für ein GridView-Steuerelement behandeln können. Wenn Sie deaktivieren die Standard-Ansicht-Engine wechseln, müssen Sie nicht mehr Page_Loador andere Ereignisse des standardmäßigen Seitenlebenszyklus. Abbildung 1 vergleicht den Run-Time-Stapel für Web Forms und XML-Webdienste MVC.
Abbildung 1 die Run-Time-Stapel auf einen Blick (auf das Bild für eine größere Ansicht klicken.)
Es sollte beachtet werden, die den Lebenszyklus"Seite"Felder im Abbildung 1 wurden zur besseren Lesbarkeit reduziert wurde und mehrere zusätzliche Ereignisse jeder enthalten. Trotzdem der Run-Time-Stapel von XML-Webdienste MVC ist einfacher und der Unterschied ist der Mangel an eine Seitenlebenszyklus. Allerdings vereinfacht dies problematisch, um den Status der visuellen Elemente über Seitenanforderungen hinweg beizubehalten. Zustand kann in Sitzungs- oder Cache gespeichert werden, aber diese Entscheidung bleibt an den Entwickler.
Abbildung 2 veranschaulicht die Abfolge der eine XML-Webdienste MVC-Anforderung.
Abbildung 2 das Sequenzdiagramm von einer XML-Webdienste MVC Anforderung (auf das Bild für eine größere Ansicht klicken.)
Das MVC-Akronym steht für Model-View-Controller. Sie sollten jedoch beachten, dass das Muster dargestellt im Abbildung 2 genau klassische Formulierung des MVC-Musters übereinstimmt. Insbesondere sind in der ursprünglichen MVC Hausarbeit Modell und anzeigen zusammen über eine Observer-Beziehung gebunden. Das MVC-Muster ist absichtlich lose definiert und, noch wichtiger ist, entwickelt wurde, beim im Web noch kommen. Anpassen von MVC im Web verschoben in Richtung des Modells in Abbildung 2, ist auch bekannt als Model2. Im Allgemeinen sein beim Sprechen oder Informationen zu MVC wissen es gibt ein paar leicht unterschiedliche Arten von es innerhalb der Vertriebsdokumentation.

Nachteile von MVC XML-Webdienste
Damit XML-Webdienste MVC in der Tabelle einen sauberen Entwurf mit eine elegante Trennung von Bereichen bringt, penalizes eine schlankere Run-Time-Stapel, vollständige Kontrolle über HTML, ein unparalleled Maß an Erweiterbarkeit und eine Arbeitsumgebung, die ermöglicht, nicht, Test-driven Development (TDD). Ist XML-Webdienste MVC, also eine Paradise für Webentwickler?
Wie Sie mit Web Forms, was einige eine klare Verschlüsselungsstärke von XML-Webdienste MVC übereinstimmt, andere sehen wie eine Schwachstelle. Beispielsweise bedeutet vollständige Kontrolle über HTML, JavaScript, CSS und XML-Webdienste MVC, dass Sie die Web-Elemente manuell eingeben. Ein Großteil dieser Schwierigkeiten kann, jedoch mit einigen der neueren JavaScript-Bibliotheken und sogar andere Ansicht Modul gemindert werden. Im Allgemeinen jedoch ist keine Sortierung Komponentenmodell bei der Generierung von HTML, da es in der Web Forms-Ansatz gibt. Derzeit sind HTML-Hilfsprogramme und Benutzersteuerelemente nur Tools, die Sie schneller schreiben HTML nutzen können. Als Ergebnis, einige XML-Webdienste Entwickler möglicherweise XML-Webdienste MVC als dauert eine Schritt in terms of Verwendbarkeit und Produktivität rückwärts angezeigt. Ein weiterer Punkt, die bezüglich der Auswirkung von XML-Webdienste MVC auf alltäglichen Entwicklung vorgenommen werden, ist, dass es mit der MVC-Muster vertraut vorab erfordert. Sie müssen wissen wie Domänencontroller und Ansichten, in zusammenarbeiten der XML-Webdienste Implementierung. In anderen Worten ist XML-Webdienste MVC nicht etwas Sie problemlos durch experimentieren erfahren können. Meiner Erfahrung kann dies die Ursache des verringerte Produktivität für den Durchschnitt Web Forms-Entwickler sein.

Der Rechte Wert
Als Architekt oder Entwickler ist es wichtig, dass die strukturelle Unterschiede zwischen den Frameworks, verstehen damit eine sorgfältige Entscheidung zu treffen. Alles in allem sind XML-Webdienste Webformulare und XML-Webdienste MVC funktional in dem Sinne, einem erfahrenen Team erfolgreich entweder verwenden kann, um alle Web-Projektmappe.
Die Fähigkeiten, Ausbildung und Haltung des Teams, sind jedoch die wichtigsten Punkte zu berücksichtigen. Wie Sie selbst eingerechnet haben können, die meisten Features dargestellt ein Pluszeichen für entweder Framework auch als ein Minuszeichen und umgekehrt tritt möglicherweise. Z. B. kann vollständige Kontrolle über HTML-Code einer Lifesaver an eine Person jedoch ein Albtraum zu einem anderen werden. Persönlich, war ich Erschrockener ich den Inhalt einer Ansichtsseite nicht trivialen XML-Webdienste MVC sah zum ersten Mal. Aber wenn dieselbe Seite an dem Debitor wurde, dessen Anwendung auch weiterhin eine große Anzahl von ASP-Seiten verwendet wurde, war er entlastet. Wenn Sie Eingabehilfen als strenge Anforderung haben, soll wahrscheinlich vollständig zu kontrollieren über den HTML-Code angezeigt wird. Und dies ist durchaus möglich, mit dem Web. Andererseits, wenn Sie eine starke datengesteuerte Anwendung erstellen, wird den Satz von datengebundenen Steuerelementen und Statefulness von Web Forms angeboten Willkommen.
Microsoft hat richtig, nicht XML-Webdienste MVC als Ersatz für XML-Webdienste Web Forms positioniert. Web Forms ist definitiv ein Muster, die für Webanwendungen funktioniert. Erwies zur gleichen Zeit hat Ruby auf Schienen als, MVC auch ein erfolgreicher Muster für Webanwendungen; sein könnenund XML-Webdienste MVC bestätigt dies.
Am Ende verfügen über Web Forms und XML-Webdienste MVC, vor-, Nachteile und strukturelle Unterschiede, die verschiedenen Ebenen zu beeinflussen. Verallgemeinern, würde ich sagen, Webformulare RAD Philosophie, bevorzugt während XML-Webdienste MVC TDD ausgerichtet ist. Darüber hinaus geht Web Forms gegen eine Abstraktion des Webs, die eine statusbehaftete Umgebung, simuliert während XML-Webdienste MVC natürliche Statelessness des Internets nutzt und Sie führt zum Erstellen von Anwendungen, die lose gekoppelte und grundsätzlich testbare Suchmaschine Anzeigenamen und mit Vollzugriff auf HTML.

Was ist das Perfect Modell für XML-Webdienste?
Nachdem Sie mit Web Forms für Jahre, eine Anzahl seine Nachteile erkannt und XML-Webdienste MVC Adressen Sie ziemlich gut: Testbarkeit, HTML-Steuerelement und Trennung von Bereichen. Doch obwohl XML-Webdienste MVC als gleichermaßen gültig Option zu diesem Zeitpunkt angezeigt nicht ich glaube Allheilmittel für jede Webanwendung sein. Meiner Meinung nach fehlt XML-Webdienste MVC heute einige Abstraktionsebene für Standardinformationen von HTML erstellen. HTML-Hilfsprogramme sind nur interessante versucht, die HTML-Erstellung beschleunigt. Ich hoffe, finden Sie unter in naher Zukunft eine neue Generation von MVC-spezifische Serversteuerelemente, als einfach und schnell zu erlernen und verwenden Sie als Web Forms-Serversteuerelemente, aber das Postback und Viewstate Modell vollkommen aufgehoben. Meine Hoffnung sind für ein System.Web.Mvc.GridView-Steuerelement, die mir beim Schreiben einer Schleife, um eine HTML-Tabelle erstellen, während Spaltenvorlagen, serverseitige Datenbindung Ereignisse und Gestaltung Optionen bieten erspart. Was wäre, dass der Unterschied zwischen solchen ein MVC-GridView und heutigen Web Forms GridView? MVC GridView würde nur HTML sowie optional zeilenspezifischen JavaScript ausgeben, doch es würde nicht z. B. paging und Sortieren verwalten. Paging und Sortieren werden an andere bestimmte Steuerelemente oder einfache Links vom Entwickler erstellt, der delegiert werden. Auf diese Weise konnte der MVC-GridView einige RAD Geschmacksrichtung einzuhalten, XML-Webdienste MVC beschleunigen die Entwicklung von Seiten ohne precluding handcrafted Seiten.
Zurückgehen zum Stamm des Problems, der Hauptunterschied zwischen Web Forms und XML-Webdienste MVC ist das zugrunde liegende Muster. Web Forms ist ein Modell basierend auf "Page Controller"Muster. Web Forms sind Benutzeroberfläche konzentrieren und das Konzept einer Seite zentriert: die Seite ruft input, bucht Back und die Ausgabe für den Browser bestimmt. Die Entwicklungsumgebung wurde daher so aktivieren Sie schnelle Prototyperstellung, über den Assistenten und rich Designer entwickelt. Alle Benutzer Aktion endet in einer Methode auf der jeder Seite Code-Behind-Klasse. Zu diesem Zeitpunkt jedoch nichts verhindert mit richtigen SoC, und nichts wirklich beendet Architekten von Muster wie MVC, Model-View-Presenter (MVP) oder sogar Model--Ansicht-Modell anzeigen (MVVM) anwendet.
Die Web Forms-Architektur SoC nicht empfiehlt, aber es nicht es entweder nicht. Die Web Forms-Architektur macht es für Drag und Drop der Steuerelemente an Code Logik rechts in Ereignis Stubs ohne weiteren Trennung, sich seductive und Datenquellen, um Daten zu löschen rechts auf der Seite die Benutzeroberfläche direkt an die Datenbank verbindet. MVC ist weder verboten noch eine Blasphemy in Web Forms;Es ist einfach, dass nur sehr wenige Entwickler Sie, üben da umgehen viel von der Web Forms-Infrastruktur erforderlich ist.
Testfähigkeit ist eine andere Geschichte. Erfordert viel Disciple und sich wiederholende vorformulierten Codierung so.As lange als Code zu SoC durchführen, können Sie testen und Wiederverwenden von Präsentation und Geschäftslogik, jedoch XML-Webdienste Webformulare nicht verhindern, dass Komponententests. Natürlich haben Sie nicht wahrscheinlich die Vorlage Visual Studio Projekt, für Sie ein Testprojekt erstellen. Sie müssen mit Tests und imitieren Frameworks vertraut und diese Projekte zu verwalten. Jedoch kann diese vorgenommen werden. Es im Hinblick auf die Testbarkeit besteht jedoch ein Unterschied zwischen Web Forms und XML-Webdienste MVC. In Web Forms haben Sie nicht nur die Flexibilität von MVC XML-Webdienste. Dies ist eine true Einschränkung. XML-Webdienste MVC konzipiert Testbarkeit beachten, was bedeutet, dass die Framework-Architektur führt den Entwickler Code schreiben, das grundsätzlich testbar ist, die aus dem Kontext isoliert ist oder es über verkürzte Schnittstellen besteht. Noch wichtiger ist, sind in ASP.NET MVC systeminterne Objekte mockable diese Schnittstellen und Basisklassen Klassen offen legen. Vom Standpunkt testen werden am besten, Sie in Web Forms tun können, die Logik in separate und problemlos testbare Klassen verschoben. Anschließend testen Sie die Präsentation (ASPX und CodeBehind) durch Senden von HTTP-Anforderungen und Überprüfen der Ergebnisse. Sie können nicht tun dies in Web Forms ohne sich drehenden, bis die gesamte XML-Webdienste Common Language Runtime, jedoch. In MVC XML-Webdienste ist die Mehrheit der Tests sicherzustellen, dass die Daten in die Ansicht übergebenen korrekt sind. Darüber hinaus können Sie simulieren systeminterne Objekte und Ihre Tests in einer genuinely isolierten Umgebung ausgeführt.
Wir sollten auch die Kontrolle über HTML und SEO-freundliche URLs, beide Vorteile von XML-Webdienste MVC beachten, kann zu einem gewissen Grad in Webformularen erreicht werden. XML-Webdienste 3.5 SP1, enthält der URL-Routing und Verlauf API insbesondere für SEO. CSS-Adapter sind stattdessen die Tools zum Steuerelement HTML in Web Forms versuchen nutzen. Integration mit JavaScript- und AJAX-Frameworks ist, offen gesagt, nicht mehr ein Problem in Webformularen.

Undisputable Fakten
XML-Webdienste Web Forms und XML-Webdienste MVC sind nicht Mitbewerber in dem Sinne, dass eine beauftragt, um die andere zu ersetzen. Müssen Sie auswählen, aber verschiedene Anwendungen können Sie verschiedene Möglichkeiten zwingen. Ende ist es wirklich wie die Wahl zwischen ein Auto und ein Motorrad, wenn Sie eine Reise vornehmen. Jede Reise erfordert eine Auswahl, und müssen beide Fahrzeuge verfügbar als Gelegenheit nicht als ein Fluch angezeigt werden soll. Hier sind einige Fakten zu den Frameworks:
  • Web Forms ist schwierig zu testen.
  • XML-Webdienste MVC müssen Sie die Generierung von HTML eine weitere Ebene zu verwalten.
  • XML-Webdienste MVC ist nicht die einzige Möglichkeit um SoC in XML-Webdienste.
  • Web Forms können Sie erfahren, wie Sie.
  • Anzeigestatus kann gesteuert oder deaktiviert werden.
  • Web Forms soll Web Maschinen abstrahieren.
  • XML-Webdienste MVC macht Web-Architektur.
  • XML-Webdienste MVC wurde mit Testbarkeit und Abhängigkeitsinjektion konzipiert.
  • XML-Webdienste MVC gelangen Sie gegen einen besseren Entwurf des Codes.
  • XML-Webdienste MVC ist jung und verfügt nicht über ein Komponentenmodell.
  • XML-Webdienste MVC ist nicht anti-Web Forms.
XML-Webdienste MVC wurde nicht Webformulare ersetzen, sondern es partner erstellt. Schaltet die XML-Webdienste MVC einiger schwächere Elemente der Web Forms in einem eigenen internen Stärken. Jedoch Probleme wie z. B. der Testbarkeit SoC, SEO, fehlen und HTML-Steuerelement in Web Forms einige Disziplin und ein guter Entwurf reduziert wird, obwohl das Framework selbst genügend Anleitung bietet oder vermieden werden.

Am Ende des Tages
Wir haben gesehen, dass vor- und Nachteile in Web Forms und XML-Webdienste MVC vorhanden sind. Viele Entwickler scheinen jedoch XML-Webdienste MVC bevorzugen, da die einzige Möglichkeit, SoC und Testbarkeit in Ihre Anwendungen zu erhalten. Ist es wirklich die einzige Möglichkeit? Nein. Allerdings können XML-Webdienste MVC einfacher und natürliche SoC erreichen und weitere testbaren Code schreiben. XML-Webdienste MVC jeder Entwickler nicht wie von Zauberhand in Architekt Experten umzuwandeln und nicht verhindern Entwickler bloated und schlecht entwickelte Code schreiben. Helfen am Ende des Tages Webformulare und XML-Webdienste MVC, Anwendungen erstellen, die entworfen und effektiven Umgang mit der Komplexität der realen Welt Lösungen implementiert werden. Keine magische Software vorhanden ist und keine wird noch von unterstützt die XML-Webdienste Plattform.

Senden Sie Ihre Fragen und Kommentare für Dino in cutting@microsoft.com.

Dino Esposito ist Architekt bei IDesign und der Mitautor von Microsoft.NET: Entwickeln Anwendungen für die Enterprise- (Microsoft Press, 2008). Dino arbeitet in Italien und ist ein weltweit gefragter Referent bei Branchenveranstaltungen. Sie können seinen Blog unter weblogs.XML-Webdienste/despos beitreten.

Page view tracker