Microsoft ASP.NET
                 MVC 1+2
                         Stig Irming-Pedersen




24-03-2010           1       ...
Copenhagen Software

                                     Software-
                                     udvikling




   ...
Copenhagen Software


             •      Har benyttet ASP.NET MVC siden Q1 2008

             •      Har leveret løsninge...
ASP.NET MVC



                1. Introduktion af ASP.NET MVC

                2. Grundlæggende funktionalitet

          ...
Introduktion af ASP.NET MVC


      Gratis supplement til Microsofts eksisterende ASP.NET
      Alternativ til WebForms
...
ASP.NET
                                                                                      ASP.NET
   Kontrolbibliotek
...
Introduktion af ASP.NET MVC

                Model-view-controller
                Kontrol med URL‟er (SEO)
            ...
Introduktion af ASP.NET MVC
                                                      Model:
                                 ...
Grundlæggende funktionalitet


              1. Konventioner
              2. Controllers og actions
              3. View...
Konventioner
             www.domæne.dk/Product/Edit/123




             public class ProductController : Controller
    ...
Views

   Views er klassiske .aspx-filer uden code-behind
   De renderes med WebForms view enginen
   Views nedarver fr...
Views

     HTML Helpers er metoder til generering af HTML
     Extension methods knyttet til System.Web.Mvc.HtmlHelper
...
Opsummering

                      •URL‟er afbildes til actions i controllers
                      •Afbildning konfigurer...
Navigering

   URL‟er og controller actions bindes sammen via routes
   En route tabel dannes når applikationen startes
...
Data input

     At indsamle input fra brugeren gøres i flere trin:




                                                 ...
Data input

     Hvis data ikke accepteres af serveren, ser det lidt anderledes ud:




                                 ...
Model binding

   Model binding konverterer request data til Model objekter
   Request data leveres gennem ValueProvider...
Input fra brugeren

     Navnekonvention for at hente data i ValueProvider:
      ◦ nameOfActionParameter.NameOfModelProp...
Unit testing

   Adskillelse af markup og logik gør det muligt at teste logikken
    isoleret
   Actions er ikke afhængi...
Validering

     I ASP.NET Classic er validering blandet sammen med markup:
         <asp:RegularExpressionValidator
    ...
Input fra brugeren

     Validering er væsentligt forbedret i MVC 2.0

     Support af System.ComponentModel.DataAnnotat...
MVC Pipeline

   Vi har nu en CRUD applikation
   Behandling af indkommende requests ser således ud




                ...
Nyt i ASP.NET MVC 2.0



              1. Client side validering
              2. Child actions
              3. Templated...
Client side validering

   MVC 1.0 krævede en del fodarbejde eller brug af f.eks. xVal
   MVC 2.0 har indbygget support ...
Child actions

     I MVC 1.0 kan markup genbruges med Partielle Views
      ◦   Nedarver fra ViewUserControls (.ascx)
  ...
Child actions

     I MVC 2.0 er muligt at kalde action metoder fra views
      ◦ Komplekse objekter kan gives som argume...
Templated helpers

     Bruges til automatisk visning eller editering af objekter

     Svarer til funktionalitet i Dyna...
Templated helpers

     Default templates kan overrides ved at nedarve fra
      ViewUserControl
     Pr. konvention kal...
Templated helpers

   Meta data fås fra modellen via MetadataModelProvider
   Den samme meta data anvendes ved Model bin...
Areas

   Giver mulighed for inddeling af et projekt i områder
   Hvert area indeholder foldere til:
      ◦ Models
    ...
Asynchronous controllers

   Mulighed for optimering af brug af web server threads
   Requests med længerevarende kald b...
HTTP verbs override

   REST benytter HTTP verbs som GET, PUT, POST og DELETE
   MVC 2.0 understøtter nye action method ...
Andre nyheder

     Model validering erstatter input validering (alle egenskaber
      valideres uafhængig af tilstedevær...
Avanceret funktionalitet



               1. AJAX
               2. ActionResult
               3. Filters
              ...
AJAX

   Ajax Helpers betegner metoder til generering af AJAX kald
   AJAX‟ificerede pendanter til HTML Helpers
   Tilg...
AJAX

     jQuery er et JavaScript-bibliotek, der gør programmering i
      JavaScript sjovt – eller i hvert fald mindre ...
ActionResult

   En action skal returnere et ActionResult
   ActionResult‟ets type afgør, hvad der returneres til bruger...
Filters

   Med filters kan man elegant klistre ekstra logik på sine actions
   Implementeres som attributter, som forst...
Filters

     IActionFilter:
      Evalueres umiddelbart før og efter den tilhørende action metode
      køres
          ...
MVC Pipeline

                             Routing
                                                Model            Model
...
Udvidbarhed

     IRouteHandler: oversætter URL til IHttpHandler
      ◦   ASP.NET MVC benytter en MvcRouteHandler. Med d...
T4MVC

   T4 template for MVC
   Del af MVC Contrib på CodePlex
   Kan hentes her:
    http://mvccontrib.codeplex.com/w...
Deployment

     ASP.NET MVC består af en række assemblies, som blot kan
      bin-deployes:
      ◦ System.Web.Routing.d...
ASP.NET MVC

    Officiel hjemmeside og CodePlex

             www.asp.net/mvc
             aspnet.codeplex.com
    MVCCon...
Copenhagen Software
    Software as a Service konsulenter




                       www.copenhagensoftware.com

         ...
Upcoming SlideShare
Loading in …5
×

Mvc 1+2 Tech Talk 201003

2,234 views

Published on

An introduction to the ASP.NET MVC framework by SaaS consultants Copenhagen Software. In Danish.

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,234
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
51
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Mvc 1+2 Tech Talk 201003

  1. 1. Microsoft ASP.NET MVC 1+2 Stig Irming-Pedersen 24-03-2010 1 Copenhagen Software
  2. 2. Copenhagen Software Software- udvikling Software as a Service Cloud Computing (SaaS) Forretnings- udvikling Software as a Service konsulenter 24-03-2010 2 Copenhagen Software
  3. 3. Copenhagen Software • Har benyttet ASP.NET MVC siden Q1 2008 • Har leveret løsninger på ASP.NET MVC lige siden Klimakonsortiets EnergyMap Health Group A/S‟ sundhedsportaler www.energymap.dk www.wemove.dk Erfaringer med MVC 24-03-2010 3 Copenhagen Software
  4. 4. ASP.NET MVC 1. Introduktion af ASP.NET MVC 2. Grundlæggende funktionalitet 3. Nyt i ASP.NET MVC 2.0 4. Avanceret funktionalitet 5. Deployment Hvad kommer der til at ske? 24-03-2010 4 Copenhagen Software
  5. 5. Introduktion af ASP.NET MVC  Gratis supplement til Microsofts eksisterende ASP.NET  Alternativ til WebForms  Understøttet i .NET Framework 3.5 SP1 (og i .NET 4)  Integreret i Visual Studio 2008 SP1 (og i VS 2010)  Version 1.0 er frigivet 18. marts 2009 under Ms-PL  Version 2.0 er frigivet 12. marts 2010 under Ms-PL Hvad er ASP.NET MVC? 24-03-2010 5 Copenhagen Software
  6. 6. ASP.NET ASP.NET Kontrolbibliotek ASP.NET MVC AJAX HTML URL håndtering • Solidt • Skalerbart • Omfattende Caching Sessionshåndtering Sikkerhed Kontrolarkitektur Databaseadgang Rettighedsstyring HTTP abstraktion Konfiguration Hvad er ASP.NET MVC? 24-03-2010 6 Copenhagen Software
  7. 7. Introduktion af ASP.NET MVC  Model-view-controller  Kontrol med URL‟er (SEO)  Kontrol over HTML  Konventionsbaseret  Aspect-oriented programming  Unit Testing  Frihed ◦ Udvidbart ◦ View engine ◦ Test framework ◦ og meget mere... Hvorfor ASP.NET MVC? 24-03-2010 7 Copenhagen Software
  8. 8. Introduktion af ASP.NET MVC Model: Objekter som View: repræsenterer de data Markup som fortolkes applikationen arbejder og vises af klienten med. View Model Applikation Controller Controller: Håndterer input fra view og interagerer med modellen. Model-view-controller 24-03-2010 8 Copenhagen Software
  9. 9. Grundlæggende funktionalitet 1. Konventioner 2. Controllers og actions 3. Views 4. Navigering 5. Data input 6. Model binding 7. Unit testing 8. Validering 9. ASP.NET MVC pipeline Udvikling af CRUD applikation 24-03-2010 9 Copenhagen Software
  10. 10. Konventioner www.domæne.dk/Product/Edit/123 public class ProductController : Controller { public ViewResult Edit(int id) { //Do something clever } } ~/view/Product/Edit.aspx Controllers og actions 24-03-2010 10 Copenhagen Software
  11. 11. Views  Views er klassiske .aspx-filer uden code-behind  De renderes med WebForms view enginen  Views nedarver fra System.Web.Mvc.ViewPage  ViewPage kan være parameteriseret i Model typen: ◦ ViewPage<TModel>  Et view indholder følgende essentielle properties: ◦ Model: det faktiske model objekt medsendt fra action‟en ◦ ViewData: anden data sendt med til view‟et ◦ ViewContext: information om konteksten ◦ TempData: data fra sidste round-trip Filer og typer 24-03-2010 11 Copenhagen Software
  12. 12. Views  HTML Helpers er metoder til generering af HTML  Extension methods knyttet til System.Web.Mvc.HtmlHelper  Tilgås via Html-property‟en på ViewPage  Erklæret i bl.a. System.Web.Mvc.Html.InputExtensions  Type-stærke hjælpemetoder er tilføjet i MVC 2.0 public static MvcHtmlString TextBox(this HtmlHelper htmlHelper, string name, object value); public static MvcHtmlString TextBoxFor<TModel, TProperty>( this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression); <%= Html.TextBox("Title", Model.Title) %> <%= Html.TextBoxFor(model => model.Title) %> HTML Helpers 24-03-2010 12 Copenhagen Software
  13. 13. Opsummering •URL‟er afbildes til actions i controllers •Afbildning konfigureres, så URL‟er og filstruktur URL er uafhængige •En action er en public metode på en Controller •En action tager imod input, udfører Action forretningslogik og vælger et view •WebForms bruges som view engine (.aspx) •View‟et renderer HTML til klienten View MVC Pipeline 24-03-2010 13 Copenhagen Software
  14. 14. Navigering  URL‟er og controller actions bindes sammen via routes  En route tabel dannes når applikationen startes  En route består af ◦ URL-skabelon ◦ Angivelse af controller og action ◦ Eventuelt constraints på URL (regulære udtryk) public ActionResult SomeAction() URL { //Do something clever } Url.Action(”Action", ”Controller") URL Html.ActionLink(“Link text", <a href=”...”> “Action", Link text “Controller") </a> Routing og links 24-03-2010 14 Copenhagen Software
  15. 15. Data input  At indsamle input fra brugeren gøres i flere trin: Returner HTML for Details(id) POST Create(...data...) Redirect til Details(id) Returner <form> GET Details(id) GET Create() GET / POST/ Redirect / GET 24-03-2010 15 Copenhagen Software
  16. 16. Data input  Hvis data ikke accepteres af serveren, ser det lidt anderledes ud: Returner præ-udfyldt <form> POST Create(...data...) Returner <form> GET Create() GET / POST 24-03-2010 16 Copenhagen Software
  17. 17. Model binding  Model binding konverterer request data til Model objekter  Request data leveres gennem ValueProvider i nævnte rækkefølge: ◦ Form data fra POST ◦ URL routing parametre ◦ Query string parametre <label for="Title">Title:</label> <%= Html.TextBox("Title", Model.Title)%> eller public ActionResult Create(string Title) public ActionResult Create(Note note) { { //Validate and create //Validate and create } } Fra data input til model 24-03-2010 17 Copenhagen Software
  18. 18. Input fra brugeren  Navnekonvention for at hente data i ValueProvider: ◦ nameOfActionParameter.NameOfModelProperty.NameOfModelSubProperty ◦ collectionParameter[n].NameOfModelProperty  Model egenskaber kan kontrolleres med BindAttribute: ◦ Prefix (nameOfActionParameter) ◦ Include (NameOfModelProperty) ◦ Exclude (NameOfModelProperty)  Model binding kan kontrolleres yderligere ved direkte kald: ◦ UpdateModel(model, prefix, inclProperties, exclProperties, valueProvider) ◦ TryUpdateModel(model, prefix, inclProperties, exclProperties, valueProvider)  Model binding kan udskiftes ved implementation af IModelBinder: ◦ ModelBinders.Binders.DefaultBinder = new MyModelBinder(); ◦ ModelBinders.Binders.Add(typeof(MyModel), new MyModelBinder()); Model binding 24-03-2010 18 Copenhagen Software
  19. 19. Unit testing  Adskillelse af markup og logik gør det muligt at teste logikken isoleret  Actions er ikke afhængige af statiske klasser (i modsætning til ASP.NET Classic)  Model binding gør, at action metoder nemt kan fodres med testdata  Vi kan teste indholdet i et ActionResult uden at skulle behandle HTML ///Arrange var note = new Note(...); var controller = new NoteController(); ///Act var result = controller.Edit(note) as ViewResult; ///Assert Assert.AreEqual<string>("Edit", result.ViewName); Test af controller actions 24-03-2010 19 Copenhagen Software
  20. 20. Validering  I ASP.NET Classic er validering blandet sammen med markup: <asp:RegularExpressionValidator ID="REV“ ControlToValidate="SomeControl" ErrorMessage="Error!” ValidationExpression="d{10}" runat="server" />  I ASP.NET MVC foretages validering i controlleren (eller endnu bedre, i modellen!) og fejl registreres i Controller.ModelState: private void ValidateNote(Note note) { if (String.IsNullOrEmpty(note.Title)){ ModelState.AddModelError("Title", "Title required"); } } <%= Html.ValidationSummary("Please correct the errors and try again.") %> <%= Html.ValidationMessage("Title", "*")%> Server side validering 24-03-2010 20 Copenhagen Software
  21. 21. Input fra brugeren  Validering er væsentligt forbedret i MVC 2.0  Support af System.ComponentModel.DataAnnotations (ASP.NET Dynamic Data, Silverlight and Silverlight RIA): ◦ RequiredAttribute ◦ StringLengthAttribute ◦ RangeAttribute ◦ RegularExpression ◦ DataType ◦ ….  Validering kan udskiftes ved implementation af: ◦ ModelValidatorProvider / AssociatedModelValidatorProvider ◦ ModelValidator ◦ ModelValidationResult ◦ ModelClientValidationRule Server side validering 24-03-2010 21 Copenhagen Software
  22. 22. MVC Pipeline  Vi har nu en CRUD applikation  Behandling af indkommende requests ser således ud ActionResult Routing vælger Model Model Action eksekveres controller og action binding validering eksekveres (view renderes) Behandling af request 24-03-2010 22 Copenhagen Software
  23. 23. Nyt i ASP.NET MVC 2.0 1. Client side validering 2. Child actions 3. Templated helpers 4. Areas 5. Async controllers 6. HTTP verbs override Ny funktionalitet 24-03-2010 23 Copenhagen Software
  24. 24. Client side validering  MVC 1.0 krævede en del fodarbejde eller brug af f.eks. xVal  MVC 2.0 har indbygget support for DataAnnotations attributter  Der genereres JSON validerings metadata til brug i browseren  Følgende JavaScript valideringer supporteres: ◦ Microsoft AJAX ◦ jQuery validation  Følgende indsættes i view (før Html.BeginForm): <% Html.EnableClientValidation(); %> JavaScript validering 24-03-2010 24 Copenhagen Software
  25. 25. Child actions  I MVC 1.0 kan markup genbruges med Partielle Views ◦ Nedarver fra ViewUserControls (.ascx) ◦ Svarer til UserControls i ASP.NET Classic ◦ En ViewUserControl har en Model property på samme måde en ViewPage ◦ En ViewUserControl har ingen forretningslogik <%@ Control Language="C#“ Inherits="System.Web.Mvc.ViewUserControl<SpiffyNotes.Models.Note>" %> <% using (Html.BeginForm()){%> <label for="Title">Title:</label> <%= Html.TextBox("Title", Model.Title)%> <label for="Description">Description:</label> <%= Html.TextArea("Description", Model.Description)%> <input type="submit" value="Save" /> <% } %>  En ViewUserControl bruges med Html.RenderPartial(): <% Html.RenderPartial(”EditForm", Model); %> Genbrug af markup 24-03-2010 25 Copenhagen Software
  26. 26. Child actions  I MVC 2.0 er muligt at kalde action metoder fra views ◦ Komplekse objekter kan gives som argumenter  Fra views kan action metoder kaldes med: ◦ Html.RenderAction (skriver direkte til Response) ◦ Html.Action (returnerer streng)  Action metoder kan dekoreres med [ChildActionOnly] attribut: ◦ Kan ikke kaldes som almindelige action ◦ Håndterer caching anderledes Genbrug af logik 24-03-2010 26 Copenhagen Software
  27. 27. Templated helpers  Bruges til automatisk visning eller editering af objekter  Svarer til funktionalitet i Dynamic Data  Helper metoder er erklæret i System.Web.Mvc.Html.DisplayExtensions og –EditorExtensions: ◦ Html.Display(“Title”) ◦ Html.DisplayFor(model => model.Title) ◦ Html.DisplayForModel() ◦ Html.Editor(“Title”) ◦ Html.EditorFor(model => model.Title) ◦ Html.EditorForModel() Auto scaffolding 24-03-2010 27 Copenhagen Software
  28. 28. Templated helpers  Default templates kan overrides ved at nedarve fra ViewUserControl  Pr. konvention kaldes egne templates “<type>.ascx” og anbringes i folderne „DisplayTemplates‟ og „EditorTemplates‟  Folderne bestemmer prioriteten af templates og kan anbringes: ◦ I Shared-folderen under Views ◦ I view-folderen for en given controller ◦ Tilsvarende for areas  Meta data kan tilgås via ViewData.ModelMetadata property‟en  Meta data indeholder bl.a: ◦ Model og ModelType ◦ ContainerType og PropertyName ◦ Properties med yderligere meta data Overriding templates 24-03-2010 28 Copenhagen Software
  29. 29. Templated helpers  Meta data fås fra modellen via MetadataModelProvider  Den samme meta data anvendes ved Model binding  MVC 2.0 understøtter System.ComponentModel og System.ComponentModel.DataAnnotations  Følgende attributter kan anvendes: ◦ [HiddenInput] ◦ [UIHint] ◦ [DataType] ◦ [ReadOnly] ◦ [DisplayFormat] ◦ [ScaffoldColumn] ◦ [DisplayName] Model meta data 24-03-2010 29 Copenhagen Software
  30. 30. Areas  Giver mulighed for inddeling af et projekt i områder  Hvert area indeholder foldere til: ◦ Models ◦ Controllers ◦ Views  Hvert area konfigureres via nedarvet AreaRegistration: ◦ AreaName: property for områdets navn ◦ RegisterArea: metode til registrering af områdespecifikke routes  Alle areas registreres i Global.asax via hjælpemetode: ◦ AreaRegistration.RegisterAllAreas()  I MVC 2.0 er „area‟ et reserveret ord i routing konfigurationer Inddeling i områder 24-03-2010 30 Copenhagen Software
  31. 31. Asynchronous controllers  Mulighed for optimering af brug af web server threads  Requests med længerevarende kald blokerer threads  Med asynkrone controllers er det muligt at frigive threads ved venten og efterfølgende få en ny thread fra poolen  Async controllers nedarver fra AsyncController frem for Controller  Asynkrone controllers er først nyttige ved flere requests end threads og afhænger af eksterne services Optimering af threads forbrug 24-03-2010 31 Copenhagen Software
  32. 32. HTTP verbs override  REST benytter HTTP verbs som GET, PUT, POST og DELETE  MVC 2.0 understøtter nye action method attributter: ◦ HttpPostAttribute ◦ HttpPutAttribute ◦ HttpGetAttribute ◦ HttpDeleteAttribute  Browsere understøtter ikke alle verber  Html.HttpMethodOverride(HttpVerbs) renderer hidden input element, som håndteres af de nye attributter Håndtering af HTTP verbs 24-03-2010 32 Copenhagen Software
  33. 33. Andre nyheder  Model validering erstatter input validering (alle egenskaber valideres uafhængig af tilstedeværelse i form POST)  Binary data kan håndteres af Model binders  Ny DefaultValueAttribute til action parameters  Ny RequireHttpsAttribute action filter  Html.ValidationSummary kan vise fejlbeskeder for model fejl  JsonResult virker nu kun med HTTP POST requests  HTML helpers returner MvcHtmlString objekt ASP.NET MVC 2.0 24-03-2010 33 Copenhagen Software
  34. 34. Avanceret funktionalitet 1. AJAX 2. ActionResult 3. Filters 4. MVC Pipeline 5. Udvidbarhed 6. T4 templates Oversigt 24-03-2010 34 Copenhagen Software
  35. 35. AJAX  Ajax Helpers betegner metoder til generering af AJAX kald  AJAX‟ificerede pendanter til HTML Helpers  Tilgås via Ajax-property‟en på ViewPage  Defineret i System.Web.Mvc.Ajax.AjaxExtensions <div id="formElement" > <% using (Ajax.BeginForm( new AjaxOptions { UpdateTargetId = "formElement", OnFailure = "handleError" })) {%> <!-- Some <form> --> <%}%> </div> <script language="javascript" type="text/javascript“> function handleError(ajaxContext) { document.getElementById("formElement").innerHTML = ajaxContext.get_data(); } </script> Ajax Helpers 24-03-2010 35 Copenhagen Software
  36. 36. AJAX  jQuery er et JavaScript-bibliotek, der gør programmering i JavaScript sjovt – eller i hvert fald mindre håbløst:  jQuery følger med Visual Studios MVC templates!  jQuery kan bruges i stedet for Ajax Helpers  Fordi ASP.NET MVC vil give dig fuld kontrol over din HTML, indeholder det ikke kontroller til kalendere, grids mv. I stedet benyttes typisk grids fra JavaScript frameworks: ◦ jQuery (og jQuery UI) ◦ Ext JS ◦ Teleriks kontroller ◦ Din egen favorit jQuery 24-03-2010 36 Copenhagen Software
  37. 37. ActionResult  En action skal returnere et ActionResult  ActionResult‟ets type afgør, hvad der returneres til brugeren public abstract class ActionResult { public abstract void ExecuteResult(ControllerContext context); } ActionResult ContentResult FileResult HttpUnauthorized- JSONResult ViewResult Result RedirectResult Dit eget ActionResult Renderer view Renderer ren Objekt serialiseret Redirect til URL Returnerer fil HTTP Status code som JSON ??? tekst 401 ActionResult typer 24-03-2010 37 Copenhagen Software
  38. 38. Filters  Med filters kan man elegant klistre ekstra logik på sine actions  Implementeres som attributter, som forstås og evalueres af ASP.NET MVC frameworket  Perfekt til deklarativ håndtering af cross-cutting concerns ◦ Authentication ◦ Logging ◦ Database connection management ◦ Fejlhåndtering  Der er fire typer filtre, som evalueres på forskellige tidspunkter: ◦ IAuthorizationFilter ◦ IActionFilter ◦ IResultFilter ◦ IExceptionFilter  Filtre evalueres i speciel rækkefølge og exceptions “bobler” op gennem dem Action Filters 24-03-2010 38 Copenhagen Software
  39. 39. Filters  IActionFilter: Evalueres umiddelbart før og efter den tilhørende action metode køres public interface IActionFilter { void OnActionExecuted(ActionExecutedContext filterContext); void OnActionExecuting(ActionExecutingContext filterContext); }  IResultFilter: Evalueres umiddelbart før og efter ActionResult‟et evalueres public interface IResultFilter { void OnResultExecuted(ResultExecutedContext filterContext); void OnResultExecuting(ResultExecutingContext filterContext); } Action Filters 24-03-2010 39 Copenhagen Software
  40. 40. MVC Pipeline Routing Model Model URL vælger binding validering action Authorize Action Action filtre Action filtre filtre eksekveres ActionResult Result filtre Result filtre eksekveres ( View eksekveres ) Udvidet pipeline 24-03-2010 40 Copenhagen Software
  41. 41. Udvidbarhed  IRouteHandler: oversætter URL til IHttpHandler ◦ ASP.NET MVC benytter en MvcRouteHandler. Med din egen IRouteHandler kan du helt forbigå ASP.NET MVC.  IModelBinder: binder request data til model og validerer ◦ Håndter binding anderledes (inject dependencies i model) ◦ Brug model meta data (indeholder valideringsinformation) anderledes  IControllerFactory: instantierer controllers ◦ Dependency Injection ◦ Find controllers i andre assemblies: dynamisk? Fra database?  IActionInvoker: eksekverer actions/results ◦ Håndter filtre anderledes ◦ Vælg anden view engine  IViewEngine: vælger view baseret på ActionResult ◦ Led efter views på en ny måde ◦ Brug særlig markup (NHaml, Spark mv.)  ModelMetaDataProvider / ModelValidatorProvider  Det er kun begyndelsen… Extension Points 24-03-2010 41 Copenhagen Software
  42. 42. T4MVC  T4 template for MVC  Del af MVC Contrib på CodePlex  Kan hentes her: http://mvccontrib.codeplex.com/wikipage?title=T4MVC  Templaten genererer typer for strenge i et projekt <%= Html.ActionLink(”View note”, ”Details", ”Notes", new { id = Model.Id }, null)%> <%= Html.ActionLink(”View note", MVC.Note.Details(Model.Id))%> return View(”Edit"); return View(Views.Edit); Statisk typede strenge 24-03-2010 42 Copenhagen Software
  43. 43. Deployment  ASP.NET MVC består af en række assemblies, som blot kan bin-deployes: ◦ System.Web.Routing.dll ◦ System.Web.Mvc.dll ◦ System.Web.Abstractions.dll  ASP.NET MVC kan køre på både IIS 6.0 og IIS 7.0, men sidstnævnte er mest velegnet ◦ IIS 6.0 har udfordringer med extension-less routes ◦ IIS 7.0 kan med fordel benytte Integrated Pipeline  Kan også benyttes på Mono  MVC 1.0 og MVC 2.0 kan installeres side-by-side Krav til miljø 24-03-2010 43 Copenhagen Software
  44. 44. ASP.NET MVC Officiel hjemmeside og CodePlex www.asp.net/mvc aspnet.codeplex.com MVCContrib http://mvccontrib.codeplex.com Blogs weblogs.asp.net/Scottgu www.haacked.com www.hanselman.com Hvordan kommer jeg videre? 24-03-2010 44 Copenhagen Software
  45. 45. Copenhagen Software Software as a Service konsulenter www.copenhagensoftware.com mail@copenhagensoftware.com Spørgsmål? 24-03-2010 45 Copenhagen Software

×