asp.net extensions
DESCRIPTION
ASP.NET Extensions. Jakob Tikjøb Andersen [email protected] +45 25 277 105. HVEM ER JEG?. Technical Teamlead Opgaver Offentlig indkøbsportal og eFakturerings projekt Performanceoptimering og arkitektur Generelt konsulentarbejde/brandslukning Teknologi Primært Microsoft teknologi - PowerPoint PPT PresentationTRANSCRIPT
HVEM ER JEG?• Technical Teamlead• Opgaver
– Offentlig indkøbsportal og eFakturerings projekt– Performanceoptimering og arkitektur– Generelt konsulentarbejde/brandslukning
• Teknologi• Primært Microsoft teknologi• Krydret med OSS som nHibernate, Castle, Watin, iBatis, nUnit m.fl.
– Interresante steder på nettet• http://www.intellect.dk/ (Blog)• http://www.miracleas.dk/ (Arbejde)• http://www.cnug.dk/ (Copenhagen .NET User Group)
2
HVEM ER I?
AGENDA
• ASP.NET MVC• ASP.NET Dynamic Data
Stil hellere end gerne spørgsmål undervejs!
ASP.NET MVC
Model
View Controller
MODEL
• Indeholder vores forretningslogik– Facade/Service/Manager klasser
• Typisk– Adgang til database– Adgang til webservices– Beregningslogik o.lign.
Model
View Controller
VIEW
• Brugergrænsefladen– HTML, Javascript, CSS osv.
• Afspejler data fra modellenModel
View Controller
VIEW
System.Web.Page
System.Web.Mvc.ViewPage
Frontpage
• Forskellige ViewEngines– Standard C#/VB.NET
• ViewPage tilføjer– Helpers
• AjaxHelper• HtmlHelper• TempData• ViewData• M.fl.
• Ofte egen specialisering– Egne helpers– Filtre etc.
VIEW
• Eksempel på view
VIEW
• Udover ViewPage– ViewUserControl– ViewMasterPage
CONTROLLER
• Håndterer– Brugerinteraktion• Opdaterer data baseret på brugerens valg• Skifter view baseret på brugerens valg
– Fodrer view med data fra modelModel
View Controller
CONTROLLERActionsAction Filters
ViewResult
RedirectToRouteResult
CONTROLLER
ActionResult
ViewResult
RedirectResult
JavascriptResult .....
Controller
IController
IActionFilter
IDisposable
BASECONTROLLER
• WebFormViewFactory– Bestemmer hvordan views renderes
• Kan udskiftes– Skriv din egen ViewEngine – Der findes alternativer• Nhaml, Brail m.fl.• http://codeplex.com/mvccontrib
MVC FLOW
1. MvcHttpHandler– Routing til korrekt
controller
2. Controller– Find action– Bind Request data til
parametre– Behandl evt. Filtre på
action– Eksekver action
MvcHttpHandler Routing table
Controller ViewEngine
Initialisering
Indkommende request
Udgående responseRedirect
WEBFORMS VS MVC
WEBFORMS
• Eventbaseret• Statefull over HTTP• Tæt integreret– Basisfunktionalitet (Control -> Page)– Kontrolstruktur
• Serverside ”UI” 3. partskomponenter• Svært at parralellisere udvikling
MVC
• Seperation of concern• Fuld kontrol• Routing• Let at teste• Let at bruge clientside 3. partskomponenter• Oplagt at parralellisere udvikling
DEMOASP.NET MVC – ”Hello world!”
HVORFOR MVC?
TESTABILITY - WEBFORMS
Model
Page Controller
Testes igennem UI
Kan unit testes
TESTABILITY - MVC
Model
View Controller
Kan unit testes
Testes igennem UI
DEMOMVC Testability
TESTING MVC
• Rig mulighed for Mocking– Alle centrale funktionaliteter er Interfaces– Mockede dependencies som parameter til
constructor– MVC bruger som standard default contructor
MVC EXTENSION POINTS
• ControllerFactories• Helpers• Data Binders• ViewFactories
ASP.NET DYNAMIC DATA