ASP.NET MVC V2
Jean-Claude TrachselSenior ConsultantTrivadis AG
Trivadis AGFacts & Figures
13 Locationen mit über 540 AngestelltenBaden, Basel, Bern, Brugg, Lausanne, Zürich Düsseldorf, Frankfurt, Freiburg, Hamburg, München, Stuttgart Wien
Finanziell unabhängig und nachhaltig profitabelKennzahlen im 2008
Konsolidierter Konzernumsatz von CHF 108 Millionen650 aktive Kunden in mehr als 1‘600 ProjektenMehr als 150 Service Level AgreementsÜber 5'000 Kursteilnehmer pro Jahr Forschungsbudget von CHF 6.0 Millionen
Agenda
ASP.NET MVC Basics
Features Version 2.0
Praxiserfahrungen
Summary & Ressourcen
ASP.NET MVC BasicsThema1/4
Was Ist MVC?
Acronym für Model ● View ●
Controller
Ein Design Pattern
Mechanismus um Verantwortlichkeiten
zu trennen
Schritt 1Der eingegangene Request wird von der Routing Engine
an denController geleitet
Request
Controller
Umsetzung mit ASP.NET MVCZusammenspiel M ● V ● C
Schritt 2Der Controller verarbeitet den Request und erstellt ein
Model
ControllerModel
Umsetzung mit ASP.NET MVCZusammenspiel M ● V ● C
Schritt 3Das Model wird an die View übergeben
Controller
View
Umsetzung mit ASP.NET MVCZusammenspiel M ● V ● C
Schritt 4Die View wandelt das Model in das Output Format
(HTML) um
Controller
View
Umsetzung mit ASP.NET MVCZusammenspiel M ● V ● C
Schritt 5Der Response wird gerendert
Response
Controller
View
Umsetzung mit ASP.NET MVCZusammenspiel M ● V ● C
Positionierung ASP.NET MVCAlternativen
ASP.NET Web FormsASP.NET MVC
ASP.NET Framework
.NET Framework
Warum ASP.NET MVC? Key Features
Paradigma WechselWeb Entwicklung in ReinkulturStatuslos!
Optimiert für TDD und Unit TestsIntegriert moderne Entwicklungsansätze
Aspect Oriented Programming (AOP)Dependency Injection (DI)Inversion of Control (IoC)
Warum ASP.NET MVC?Separation of Concerns
Komplexität ist sauber aufgeteilt
Ideal für grosse u/o komplexe
Applikationen
Ideal für grosse Teams
Ideal für die Zusammenarbeit mit
Designern
Warum ASP.NET MVC?Flexibel und erweiterbar
MVC Komponenten sind ersetzbarInterface basierte ArchitekturWenig “sealed” Klassen/Methoden
BeispieleVS Templates, T4 Template EngineDefaultControllerFactoryDefaultModelBinder
Projekt erstellen
Visual Studio Template
demo
Controller KlasseAblaufsteuerung
Visual Studio Tools und TemplatesStruktur- und NamenskonventionController Basis Klasse
View MethodeUpdateModel Methode
Methoden RückgabewertActionResult
Controller KlasseFilter aka Aspekte
HandleErrorAuthorizeOutputCacheValidateAntiForgeryToken
Cross-site request forgery (CSRF) attacks
Basisklasse für eigene Filter
Controller erstellen
ProductController und Filter
demo
View KlasseVisualisierung
Visual Studio Tools und TemplatesReines HTML
Plus <%=...%> Code Tag
HtmlHelper KlasseHtml.TextBox(), usw.
User Controls (.ascx)
Model & Views erstellen
Index (Liste), Details, Edit
demo
ASP.NET MVC 2.0Features
Thema 2/4
ASP.NET MVC 2.0 Features Releases ASP.NET MVC
2.0 RC, VS 2008
2.0 Beta 2, VS 2010
Offizieller Release 2.0 mit VS 2010
April 2010
ASP.NET MVC 2.0 Features Übersicht Features
Areas
Validation
Typed UI Helper
UI Helper Templates
Areas SupportEnterprise ready
Strukturierung
der Solution
Single Project Areas
Multi Project Areas
Areas SupportSingle Project Areas
Folder StrukturRoutes Klasse
Erbt von AreaRegistrationDefiniert die Route
Global.asaxRegistrieren der Areas Routen
Daten ValidierungDataAnnotation
Validierung mit DataAnnotationAttribute eingeführt mit .NET 3.5 SP 1Analog zu ASP.NET Dynamic Data
Serverseitige Prüfung durch die ModelBinder KlasseClientseitige Prüfung durch diejQuery Validation Library
Validierung
DataAnnotation Attributes
demo
Typisierte UI HelpersHtmlHelper Extensions
ASP.NET MVC 1.0
ASP.NET MVC 2.0
<%=Html.EditorFor(p => p.ProductID)%>
<%=Html.TextBox("ProductID“,Model.ProductID)%><%=Html.RadioButton(„Avail“,Model.Available)%>
Typisierte UI HelpersEigenschaften und Vorteile
Intellisense
Compile-Time Support
Datentypbasiertes Rendering
Unterstützen Standard- und komplexe
Datentypen
UI Helper TemplatesDatentyp Vorlagen
Erweiterung der typisierten UI HelpersDefinition des Rendering mit UserControls
Für Standard- und komplexe Datentypen
Angewendet durchNamenskonventionUI Helper ParameterViewModel Attribut UIHint
UI Helpers & Templates
DateTime Template
demo
Weitere FeaturesBinding Binary, HttpPost, etc.
Binding Unterstützung für Base64 codierte Strings
Timestamp
Aus [AcceptVerbs(HttpVerbs.Post)] wird [HttpPost]Und vieles mehr
Weitere FeaturesWas kommt noch
Typisierte Link Helpers
Asynchrone Controller Methoden
Weitere Verbesserungen
ASP.NET MVC PraxisThema 3/4
ASP.NET MVC In Der PraxisParadigmawechsel
Der Um- oder Einsteig ist…schwieriger für
WinForms EntwicklerWebForms Entwickler
einfacher für„Nicht MS“ Entwickler
ASP.NET MVC In Der PraxisProduktivität –
Keine Wiederverwendbarkeit fürBestehende Konzepte und Framework
FunktionalitätsverlustFehlende GUI Libraries
Wenig Kenntnisse der client-orientierten Entwicklung
AJAX, JavaScript, jQuery & Co.
ASP.NET MVC In Der PraxisProduktivität +
Klare StrukturEinfachere Einarbeitung neuer MAEinfachere Wartung und Weiterentwicklung
Mehr Unit TestsHöhere Qualität
Bessere Wiederverwendbarkeit durch bessere Kapselung der Funktionen
ASP.NET MVC In Der PraxisHindernisse und Chancen
Kleine Community„Pfannenfertige“ Lösungen gibt‘s noch nicht
Hohes RisikoErfahrungen fehlen noch
Potential wird nicht erkannt/genutztTDD, Unit TestsKlare StrukturierungVolle Kontrolle
ASP.NET MVC In Der PraxisGUI Libraries
AJAX und jQueryjQuery GridjQuery Validation Library
CooliteBasiert auf ExtJS
SyncfusionTelerik
GUI Library
Telerik Grid
demo
Summary & Ressourcen
Thema 4/4
SummaryASP.NET MVC Framework
Integriert moderne
Entwicklungsaspekte
Einfach und gut zu testen
Komplexität auf Model ● View ●
Controller verteilt
Offen, flexibel und erweiterbar
SummaryASP.NET MVC Einsatz
Abhängig von den AnforderungenTDD, Unit Test MVCRIA, RAD WebForms
Abhängig von den UmständenEntwickler Know-How/MotivationProjekt- und TeamgrösseAnwendungslebensdauer
Weitere InformationenMVC rocks
Webseitenhttp://www.asp.net/mvchttp://www.codeplex.com/aspnet
Blogshttp://www.haacked.com/http://weblogs.asp.net/scottguhttp://www.hanselman.com/
Have fun!
Q & A
© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after
the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Top Related