Michael Rettenmund

ASP.NET MVC : ASP.NET goes Model View Controller


Geposted von Michael Rettenmund am 29.07.2008, 22:03

MVC
Model-View Controller kurz "MVC" ist eine Architekturform, die bei der Software Entwicklung zur Unterteilung in wörtlich drei Teile "Modell", "Präsentation" und "Steuerung" dient. Zurück zu den englischen Begriffen: "Model" - ist das Datenmodell, wobei "View" - den Präsentationsteil enthält und schliesslich die Programmsteuerung mittels dem "Controller" erfolgt.

ASP.NET MVC Framework
Und das ist auch alles was uns interessieren sollte bei der Entwicklung von Web Applikationen! Verfolgt Microsoft nun auf ASP.NET einen völlig neuen Ansatz mit dem ASP.NET MVC?  Keine Angst, das gute alte Webform wird uns wohl noch eine Weile erhalten bleiben. Jedoch scheint es die Strategie von Microsoft zu sein, eine Alternative zur Entwicklung mit Forms bieten zu wollen.

Die Stärken des ASP.NET MVC Konzepts liegen ganz klar in der klaren Auftrennung der Softwarebestandteile. Dies erleichtert unter anderem auch das Testing und sorgt dadurch automatisch für eine höhere Softwarequalität. Gerade bei grösseren Projekten kann darum der MVC-Ansatz sehr sinnvoll sein. Unit Testing mit ASP.NET MVC ist auch möglich ohne dass die Controller innerhalb von Prozessen laufen. Das bringt natürlich enorme Speed beim Unit Testen! Das schöne ist auch, dass man jegliche Unit Testing Frameworks verwenden kann -  NUnit, MBUnit, MS Test usw.

Model - View - Controller Interaction
Doch es gibt noch weitere entscheidende Vorteile: Endlich sprechende URLs! Mit dem "Router" können saubere Webadressen in der eigenen Applikation aufgebaut werden. Die Suchmaschinen erfreuen sich dank MVC an SEO-optimierten "clean URLs". Dateierweiterungen wie ".aspx" sind nun auch nicht mehr zwingend, so dass z.B. eine selbst festegelegte URL wie "/mein/name/ist/hase" zu einer bestimmten Action führt. Daneben ist das MVC Framework so designed worden, dass es flexibel genug ist, auch den Austausch der View Engine, der Routing Policy uvm. zu erlauben.
Das MVC Framework unterstützt ASP.NET .ASPX, .ASCX und Masterpage Files als "View Templates". Dies heisst, dass man existierende ASP.NET Features wie beispielsweise Server Controls, Templates, Date-Binding, Localization, Forms- und Windows Authentication, Membership- und Roles Provider, Output- und Data-Caching, Session- und Profile Management unter ASP.NET MVC weiterhin verwenden wird. Was jedoch wegfällt ist das Post-Back-Modell, das bis heute auf ASP.NET Webforms eingesetzt wurde und nicht wegzudenken war. Anstelle des Post-Backs werden die End-User Interaktionen zur Controller Klasse weitergeleitet bzw. "gerouted".

Classic ASP.NET und MVC

Derzeit hat ASP.NET MVC noch den Preview Release Status. Es können also bereits schon ein paar Dinge ausprobiert werden. Da das Release noch nicht einmal den Beta Status trägt werden sich noch viele Dinge ändern. Doch das macht die ganze Sache auch irgendwie interessant, oder?

MVC Sample "Store" Project
Nun wie sieht das ganze praktisch aus. Fragen wir doch direkt Scott Gu, General Manager in der Microsoft Developer Division, einen ASP.NET'ler bei Microsoft an vorderster Front. Im Rahmen meines Blogartikels habe ich heute morgen versucht den freundlichen und immer kommunikativen Scottie, den ich das letzte mal an einem MS Tech Event zu Silverlight in Zürich sah, per E-Mail zu erreichen. Leider ist er derzeit auf "Schwangerschaftsurlaub" bzw. was heisst hier "leider"? Wir freuen uns natürlich mit ihm über seinen Nachwuchs und berufen uns einfach auf seine neusten Blogbeiträge (erreichbar unter http://weblogs.asp.net/scottgu). Der nette Scott Gu war fleissig und kann uns mittels seinem "Scott Gu's MVC Store" Beispiel schon einen interessanten optischen und funktionellen Beginner-Einblick in die MVC Welt bieten. 

Scott Gu's Web Store auf ASP.NET MVC
Bild: Scott's Store Sample Projekt zeigt sich schlicht und übersichtlich

Auf den ersten Blick scheint alles wie immer auszusehen - eine normale Web Applikation. Anhand der URL lässt sich jedoch erahnen, dass wir es hier mit einer MVC Applikation zu tun haben könnten, denn wir sehen keine File-Endung .aspx und die URL ist sehr sprechend und logisch aufgebaut (schon klar, dies lässt sich natürlich auch anders ermöglichen).

Doch schauen wir einmal ganz kurz unter die Haube wie man so ein Projekt überhaupt beginnt ... eigentlich recht einfach: Wir legen ein neues Visual Studio Projekt an mittels File > New Project und schliesslich "ASP.NET MVC Web Application". Sogleich erkennen wir einige Default Directories, die uns angelegt worden sind: /Models, /Views, /Controllers.

Visual Studio Solution
Bild: Unsere neu erstellte MVC Solution zeigt sich nach der Erstellung mit einigen Default Folders und einem Testprojekt.

Wenn wir nun die Applikation starten, wird uns direkt der Home Content im Browser dargestellt.

MVC Sample Application
Bild: Unsere MVC Sample Application zeigt sich erstmals im Browser.

Wenn wir nun das Tab "About us" selektieren, werden wir zum "About us" geleitet.

MVC Sample Application - "About us"
Bild: Der "About Us" Bereich wird nach Klicken auf das Tab dargestellt

Verantwortlich für die Tab Aktionen ist die HomeController Klasse. Diese beinhaltet zwei Action Methoden:

HomeController Klasse
Bild: HomeController Klasse in unserem neu angelegten Projekt

Fazit
Ich möchte an dieser Stelle nun nicht mehr tiefer gehen, sondern direkt auf Scott Gu's Blog verweisen. Ich denke, dass man schnell den Einstieg in ASP.NET MVC finden wird und dies unter Umständen auch eine Chance für PHP-Entwickler sein kann, die sich ungern mit der ASP.NET Post-Back Methodiken auseinandersetzen möchten. Mit ASP.NET MVC steht ein alternatives Konzept zur Verfügung, das ein unglaubliches Potential hat, sofern es bis zum Release der Final ASP.NET MVC Version so weitergeht. Doch da habe ich keine Angst und vertraue ganz auf unseren guten Scott Gu ;-)

Quelle Bildmaterial: http://weblogs.asp.net/scottgu/Thanks Scott!
0 Kommentare | Trackback Url

Kommentare
Ihr Kommentar zum Blog-Eintrag





Feedburner
aseantic RSS Feed
Feedburner RSS Feed
Add to Favorites
Add to Delicious
aseantic @ Facebook
Add to Technorati Favorites
Bookmark and Share
Creative Commons