12.04.2010, 22:13 Uhr

ASP.NET MVC - die neue Art ASP.NET-Anwendungen zu entwickeln

Es muss schon ein wenig mehr dahinterstecken, wenn Microsoft-Chef Entwickler Scott Guthrie in seinem Blog über mehrere Wochen ein neues Programmiermodell für ASP.NET anpreist und sogar Co-Autor eines Buches zu diesem Thema ist. ASP.NET MVC ist nicht weniger als der Versuch der Microsoft-Entwickler, ASP.NET, dessen bisheriges WebForms-Modell für verschiedene Anwendungstypen Schwächen aufweist, neu zu etablieren.
13913.jpg
von Marc André ZhouASP.NET ist in die Jahre gekommen. Mit ASP.NET, das zusammen mit dem .NET Framework 1.0 Anfang 2002 auf der Bildfläche erschien, versuchte Microsoft ursprünglich das vielen Entwickler bestens vertraute Windows Forms-Modell auf die Entwicklung von Web-Anwendungen zu übertragen. Ein WebForm-Formular wird mit einem Designer erstellt, per Drag&Drop mit Steuerelementen ausgestattet und per Doppelklick werden Eventhandler hinzugefügt. Doch der vermeintliche Komfortgewinn hatte seinen Preis. Für viele moderne Webanwendungen ist dieses Modell nicht mehr adäquat. Mit dem ASP.NET MVC (Model-View-Controller) Framework bietet Microsoft seit kurzem eine attraktive Alternative an. Vor einigen Wochen erschien das Release 2, das viele neue Funktionen mitbringt. Der erste Artikel einer dreiteiligen Serie gibt einen Überblick über das MVC Framework und stellt es dem klassischen WebForm Modell gegenüber.Was ist das MVC-Framework und wie funktioniert es?MVC steht für Model-View-Controller. Dahinter steht ein bewährtes Entwurfsmuster, das auf eine lange Tradition zurückblickt, die in den 70er Jahren im legendären Xerox Parc Research-Center (in dem bekanntlich unter anderem auch die Maus, die Programmiersprache Smalltalk und die grafische Benutzeroberfläche erfunden wurden) begann. Im Zusammenhang mit ASP.NET ermöglicht das MVC-Framework, eine ASP.NET-Anwendung in die Bestandteile Model, View und Controller aufzuteilen, die verschiedene Verantwortlichkeiten besitzen. Abbildung 1 zeigt an einem sehr einfachen Schaubild wie die drei Bausteine zueinander in Beziehung stehen. Abbildung 1: Model-View-Controller-Beziehungen Das Modell (Model)Das Modell ist für die Daten zuständig. In dieser Rolle übernimmt es die Speicherung der Daten sowie die Bereitstellung der Daten für die Anzeige in der Ziel-GUI.Die Sicht (View) Die View ist für die Anzeige der Daten zuständig und bezieht die Daten aus dem Modell. Die GUI sollte dabei idealerweise keine Geschäftslogik beinhalten, sondern nur für die reine Präsentation der Daten verantwortlich sein.Der Koordinator (Controller) Der Controller ist für die Koordination von Modell und Sicht zuständig und bildet das zentrale Element innerhalb des MVC-Musters. Der Koordinator lädt die Daten und übergibt diese der jeweiligen Sicht. Durch die Trennung sorgt das MVC-Framework für eine klare Festlegung der Verantwortlichkeiten und setzt somit das wichtige ,,Separation of Concerns"-Paradigma (SoC) erfolgreich um.Der Controller verbindet im klassischen MVC-Entwurfsmuster das Model und die View und ist für die Koordination untereinander zuständig. Innerhalb des ASP.NET MVC Framework ist dies entsprechend umgesetzt. Jegliche Aktionen werden vom Controller gesteuert. Seiten und Daten werden dabei über eine URL angefordert. Dies stellt zunächst keinen Unterschied zu einer klassischen ASP.NET-Webform-Anwendung dar, denn Webseiten werden generell über URLs aufgerufen.Das ASP.NET MVC Framework verzichtet aber auf Querystrings (wie z.B. /ProductDetail.aspx?id=7) und hinterlegt zusätzliche Informationen direkt in die URL. Soll ein Produkt mit der ID = 5 angezeigt werden, ist folgende URL denkbar: http://domain.de/products/books/5. Anstatt die ID zu verwenden, könnte auch der Produktname verwendet werden. So kann die vorherige URL umgeschrieben werden zu: http://domain.de/products/books/parallel%20computing. Eine Übersicht über alle Bücher wäre damit über folgende URL erreichbar: http://domain.de/products/books.Der Controller ist für die Auflösung der Anforderung zuständig. Um dies zu ermöglichen, beinhaltet das ASP.NET MVC Framework eine sog. Routing-Engine. Sie steuert, an welchen Controller ein Aufruf geleitet wird. Abbildung 2 verdeutlicht die Funktionsweise anhand eines Beispiels. Abbildung 2: Die Funktionsweise der Routine-Engine Das MVC-Framework unterstützt von Anfang an SEO URLs (Search Engine Optimization). Diese Links können von Suchmaschinen einfacher verfolgt und somit indiziert werden. Dies stellt einen enormen Vorteil z. B. für Online-Shops dar, da so Produkte einfacher durch Suchmaschinen erfasst werden könnenDas Ende von WebForms?Das ASP.NET MVC Framework soll jedoch nicht das bewährte ASP.NET WebForm Modell ersetzen. Ds MVC Framework versteht sich als eine Erweiterung von ASP.NET. Abbildung 3 zeigt, wie das MVC-Framework innerhalb des .NET Frameworks eingeordnet werden kann. Abbildung 3: Zusammenspiel von ASP.NET MVC mit dem .NET FrameworkDas ASP.NET WebForm-Modell Die Idee des klassischen Webform-Modells war es, die Umsetzung von Webanwendungen zu erleichtern, in dem das Windows Forms-Modell auf das Web übertragen wurde. Um dieses Ziel zu erreichen, arbeiten ASP.NET Anwendungen mit einem Postback-Mechanismus. (Fast) jeder Klick auf ein Steuerelement löst einen Postback aus. Bei jedem Postback wird die gesamte Seite zurück an den Webserver gesendet, verarbeitet und wieder zurückgeschickt. Je nach Verbindungsgeschwindigkeit kann sich dadurch der Seitenaufbau erheblich verzögern. Alle vorhandenen ASP.NET Steuerelemente basieren auf dem Postback-Mechanismus. Daher ist es nicht möglich, vorhandene Steuerelemente für MVC basierte Anwendungen zu verwenden. Im Gegensatz zum ASP.NET MVC Framework ermöglicht das ASP.NET WebForm Modell lediglich die Darstellung von Daten. Eine Aufteilung im Sinne von ,,Separation of Concerns" muss durch den Entwickler explizit geplant und realisiert werden. Durch die fehlende Trennung ist es schwer, automatische Testverfahren zu verwenden. WebForm vs. MVC-FrameworkDas WebForm Modell eignet sich nach wie vor sehr gut dazu, schnell erste funktionale Oberflächen zu erstellen. Allerdings ist das WebForm Modell an den Postback-Mechanismus gebunden, Erweiterungen lassen sich dadurch nur umständlich implementieren. Da oft Ereignismethoden direkt in der Codebehind Datei implementiert werden, kommt es zu einer ungünstigen Vermischung von Oberflächen-, Datenzugriffs- und Geschäftslogik. Dies erschwert das Testen solcher Anwendungen enorm, teilweise werden Teile der Geschäftslogik mehrfach umgesetzt. Das MVC Framework separiert eine Anwendung direkt in verschiedene Komponenten. Dadurch wird auch das Testen erheblich vereinfacht, da jede Komponente (M-V-C) separat getestet werden kann. Das MVC Framework eignet sich daher sehr gut, einen Test-Driven-Development-Ansatz (TDD) zu verfolgen. Das MVC-Framework ist als erweiterbares Framework ausgelegt. Es existieren zahlreiche Schnittstellen, die eine einfache Erweiterung ermöglichen. Die logische Seitenstruktur muss sich nicht, wie beim WebForm Modell, im physikalischen Dateisystem widerspiegeln. Als nachteilig kann die ,,kleine" Lernkurve angesehen werden, um erfolgreich MVC basierte Anwendungen zu realisieren. Ein ASP.NET Entwickler muss sich dabei vor allem von der ,,Postback-Denkweise" lösen. In einem künftigen DeveloperWorld-Artikel werden die Neuerungen des Release 2 des ASP.NET MVC Framework erläutert. Ein abschließender Artikel wird die konkrete Verwendung anhand eines Beispielprojektes demonstrieren. Marc André Zhou ist Dipl. Inf. (FH) und erwarb zusätzlich den Titel Master of Science. Derzeit ist er für die Logica Deutschland GmbH & Co. KG als Senior Consultant tätig. Weitere Informationen finden Sie auf seinem Blog unter http://www.sw-consultant.de.Peter Monadiemi


Das könnte Sie auch interessieren