ASP.NET Extensions Jakob Tikjøb Andersen
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 (Blog) (Arbejde) (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 ViewController
MODEL Indeholder vores forretningslogik – Facade/Service/Manager klasser Typisk – Adgang til database – Adgang til webservices – Beregningslogik o.lign. Model ViewController
VIEW Brugergrænsefladen – HTML, Javascript, CSS osv. Afspejler data fra modellen Model View Controller
VIEW System.Web.PageSystem.Web.Mvc.ViewPageFrontpage 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 model Model View Controller
CONTROLLER Actions Action Filters ViewResult RedirectToRouteResult
CONTROLLER ActionResult RedirectResultJavascriptResult..... ViewResult Controller IControllerIActionFilterIDisposable
BASECONTROLLER WebFormViewFactory – Bestemmer hvordan views renderes Kan udskiftes – Skriv din egen ViewEngine – Der findes alternativer Nhaml, Brail m.fl.
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 response Redirect
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
DEMO ASP.NET MVC – ”Hello world!”
HVORFOR MVC?
TESTABILITY - WEBFORMS Model Page Controller Testes igennem UI Kan unit testes
TESTABILITY - MVC Model ViewController Kan unit testes Testes igennem UI
DEMO MVC 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