260 likes | 366 Views
ASP.NET Extensions. Jakob Tikjøb Andersen jta@miracleas.dk +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
E N D
ASP.NET Extensions Jakob Tikjøb Andersen jta@miracleas.dk +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 • 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)
AGENDA • ASP.NET MVC • ASP.NET Dynamic Data Stil hellere end gerne spørgsmål undervejs!
Model View Controller ASP.NET MVC
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 modellen Model View Controller
VIEW • 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
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 Indkommende request • MvcHttpHandler • Routing til korrekt controller • Controller • Find action • Bind Request data til parametre • Behandl evt. Filtre på action • Eksekver action MvcHttpHandler Routing table Initialisering Controller ViewEngine Redirect Udgående response
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
TESTABILITY - WEBFORMS Model Kan unit testes Page Controller Testes igennem UI
TESTABILITY - MVC Model Kan unit testes View Controller Testes igennem UI
MVC Testability DEMO
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