Scott Hanselmann hat die gute Nachricht schon vor ein paar Tagen verkündet, Scott Guthrie
macht es jetzt offiziell: es wird ein Model-View-Controller Framework für ASP.net geben.
Warum MVC?
Ruby on Rails
Der Shooting Star unter den Web-Frameworks ist elegant und überzeugt durch eine sehr
saubere MVC Implementierung und integrierte Unterstützung für Unit Tests. Es ist das Lieblingsspielzeug
der Agile Community. Microsoft selbst hat da im Moment nicht viel zu bieten. Klar, es gibt die
Web Client Software Factory aber die ist doch um einiges schwergewichtiger und auf spezielle
Enterprise-Bedürfnisse ausgerichtet.
Mit Monorail gibt es an sich schon eine nette Adaption von RoR für ASP.net. Ein MVC Framework
von Microsoft mit vollem Support als "First class citizen" in ASP.net ist aber trotzdem eine ganz
andere Nummer.
Nicht jeder mag Webforms
Der ganze Postback/ViewState Hokuspokus in ASP.net 1/2 kann leider doch nicht zu 100% die
Illusion von Statefullness erzeugen. Und wenn man Wert auf sauberes XHTML legt, sind die
ID Attribute und ViewState Felder doch ziemlich störend, vor allem in Fällen in denen man sie an
sich gar nicht benötigt - ein Datagrid auf das Webform gezogen und nicht aufgepasst, schon "wiegt"
die HTML Seite 100k...
Klar, man kann EnableViewState auf false setzen und die IDs irgendwie rausfiltern, aber wenn
man es von Anfang an gar nicht braucht, ist das irgendwie durchs Knie ins Auge.
Testability
Controller lassen sich prima über Unit-Tests abklopfen. Die fehlenden Interfaces für HttpContext,
HttpRequest usw. werden endlich nachgeliefert und die Abhängigkeit von System.Web an
den richtigen Stellen unterbrochen.
Bei meiner eignen Blog Engine für Planet-xaml (basierend auf Model-View-Presenter)
hatte ich mich gründlich über diese Dinge geärgert, die jetzt endlich behoben werden - fehlende
Interfaces z.B. für die Klassen HttpRequest/HttpResponse, um Mock Objekte für Unit-Tests
zu erzeugen.
Plugability
Was mir an dem was ich bisher über System.Web.Mvc gehört habe gefällt ist neben dem Programmiermodell
die immer wieder angesprochene offene Architektur - d.h. die Möglichkeit, eigene IoC Container oder
ViewEngines einzubinden usw. Ein Monorail Clone von Microsoft wäre bei der ALT.net Crowd auch sicher nicht
besonders gut angekommen.
Da das Framework auf ASP.net basiert wird es sicherlich ohne die Unzulänglichkeiten auskommen, mit denen
Rails bei aller Eleganz zu kämpfen hat (wer will schon auf C zurückgreifen, um eine Webanwendungen
flott zu machen?).
cheers
Florian