Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Podstawy Asp.Net Mvc 1.0 W 3600 Sekund

10,770 views

Published on

Published in: Technology
  • Be the first to comment

Podstawy Asp.Net Mvc 1.0 W 3600 Sekund

  1. 1. Michał Jaskólski http://www.jaskolski.com.pl PODSTAWY ASP.NET MVC 1.0 W 3600 SEKUND
  2. 2. MVC jako takie  MVC = Model View Controller  Może być postrzegany jako wzorzec architektoniczny lub jako wzorzec projektowy.  Jako wzorzec architektoniczny nieodłącznie kojarzony z wielowarstwową architekturą aplikacji.  Jako wzorzec projektowy – zdarzeniowy model aplikacji.  Stosowanie MVC wymusza systematyzację kodu i określenie jasnej struktury programu.  Umożliwia rozdzielenie warstwy prezentacyjnej od warstwy danych i logiki biznesowej.  Systematyzacja ułatwia testowanie.
  3. 3. ASP.NET MVC 1.0  Spojrzenie na MVC oczami wielkiego brata zza oceanu.  Zrywa niemal całkowicie z dotychczasową metodologią pisania aplikacji z użyciem ASP.NET Web Forms, jednak „pod maską” nadal opiera się na podstawowych mechanizmach ASP.NET.  Praktycznie eliminuje możliwość używania dotychczasowych kontrolek ASP.NET
  4. 4. ASP.NET MVC 1.0...  Renderowanie zawartości widoków odbywa się za pomocą HTML Helpers.  Wbudowana klasa TagBuilder ułatwia pisanie własnych pomocników.  … a na dodatek doskonałe wsparcie dla mniej lub bardziej podstawowych zadań związanych z tworzeniem aplikacji opartych o MVC z poziomu Visual Studio   Wsparcie dla testowania aplikacji za pomocą testów jednostkowych.
  5. 5. Model  Model = obiekt(y)  Obiekty (klasy) implementują logikę związana z zachowywaniem stanu obiektu (w bazie, plikach, gdziekolwiek) oraz zawierają właściwości odzwierciedlające ich rzeczywiste znaczenie.  W ASP.NET MVC:  Implementacja wlasna  Linq 2 SQL  ADO.NET Entity Framework  …
  6. 6. Widok  Komponent odpowiedzialny za tworzenie interfejsu użytkownika.  Interfejs użytkownika tworzony jest na podstawie przekazanych danych modelu.  Wizualizuje model.  Zapewnia graficzny interfejs odwołujący się do akcji kontrolera.  W ASP.NET MVC:  Strony ASPX  Kontrolki użytkownika ASCX (widoki częściowe)
  7. 7. Kontroler  Komponenty odpowiedzialne za reakcję na akcje użytkownika.  W odpowiedzi na działanie podjęte przez użytkownika dokonują operacji na modelu oraz wybierają i tworzą widok do przedstawienia użytkownikowi jako wynik jego działania.  W ASP.NET MVC:  Klasy (ich instancje) które przetwarzają wartości z żądań HTTP (query string, dane POST) i na ich podstawie podejmują stosowne działanie.
  8. 8. LET’S DO THE CODE
  9. 9. Model
  10. 10. Kontrolery
  11. 11. Akcje  Mapowanie żądań HTTP na metody klasy kontrolera.  Rozróżnienie GET a POST (atrybut AcceptVerbs – domyślnie HttpVerbs.Get).  Automatyczne mapowanie parametrów żądania na parametry metod.  Dla żądań POST możliwość zmapowania danych na obiekt.  Akcja kończy się wynikiem – ActionResult  Jeżeli metoda skojarzona z akcją nie zwraca obiektu dziedziczącego z ActionResult, wynik automatycznie jest konwertowany na łańcuch i „ubierany” w ContentResult.
  12. 12. Akcje...  Aby metoda kontrolera stałą się akcją:  Musi być publiczna.  Nie może być statyczna.  Nie może być metodą rozszerzającą (extension method)  Nie może to być konstruktor ani metody właściwości.  Metoda nie może być generyczna.  Metoda nie może być metodą klasy bazowej kontrolera.  Metoda nie może zawierać parametrów out lub ref.  Aby metoda nie była akcją – atrybut NoAction
  13. 13. Akcje – bindowanie danych  Kontrolowanie sposobu bindowania danych z żądania POST z obiektem modelu danych.  Gdy obiekt występuje jako parametr akcji - mapowanie można kontrolować za pomocą atrybutu Bind nadanego parametrom metody ([Bind(Exclude=quot;Id„, Include=„Name,Description”)]).  Gdy używamy metody UpdateModel – UpdateMode(mode, new string[] { „Name”, „Description”})  Atrybut Bind można przypisać do typu, aby kontrolować proces wiązania globalnie.
  14. 14. Akcja – reakcja - wynik  ViewResult (View)– wynikiem jest widok.  EmptyResult – brak wyniku.  RedirectResult (Redirect, RedirectToRoute, RedirectToAction) – przeniesienie pod inny adres.  JsonResult (Json)– wynikiem są dane zwrócone w postaci JSON.  JavaScriptResult (JavaScript)– wynikiem jest zasób – skrypt JS.  ContentResult (Content)– wynikiem jest zasób - tekst.  File*Result (File):  FileContentResult – wynikiem jest zasób binarny.  FilePathResult – wynikiem jest ścieżka do zasobu.  FileStreamResult – wynikiem jest strumień zasobu.
  15. 15. Walidacja  ModelState.IsValid  ModelState.AddModelError  Html.ValidationMessage()  Html.ValidationSummary()  Ponownie atrybut Bind – uniknięcie błędów, które nie są błędami.  IDataErrorInfo – „stary” interfejs .NET, jeżeli klasa go implementuje – ASP.NET MVC zrobi z niego użytek.
  16. 16. ASP.NET MVC Routing  Zapewnia mapowanie / rewriting URLi na wywołania odpowiednich akcji wskazanych kontrolerów  ASP.NET daje możliwość tworzenia:  Własnych reguł „trasowania”.  Stosowania obostrzeń dla parametrów trasy (wyrażenia regularne).  Implementację własnych obostrzeń – IRouteConstraint.
  17. 17. Widoki  Widok można stworzyć na kilka sposobów:  Ręcznie  Z lekką pomocą Visual Studio.  Automagicznie  Widoki ściśle typizowane: System.Web.Mvc.ViewPage<T>  Widoki częśćiowe (Html.RenderPartial) – także typizowane: System.Web.Mvc.ViewUserControl<T>  Dla widoków ściśle typizowanych właściwość Model jest typu T.  ViewData – dane dodatkowe poza danymi modelu.  Model SelectList  Integracja HtmlHelper z stanem modelu
  18. 18. Filtry akcji kontrolera  Modyfikacja sposobu wykonania się akcji kontrolera.  Aplikowane w sposób deklaratywny jako atrybuty metod kontrolera.  Umożliwiają np.:  Implementacje własnych metod autoryzacji.  Modyfikację danych widoku. …  Standardowe np.:  Authorize  HandleError  OutputCache
  19. 19. Filtry akcji kontrolera...  Cztery kategorie filtrów:  Autoryzacyjne - IAuthorizationFilter – implementacja autoryzacji i autentykacji dla akcji kontrolera. Wykonywane PRZED akcją.  Akcji - IActionFilter – wykonywane PRZED i PO akcji – można zastosować np. do modyfikacji danych widoku zwracanych przez akcję.  Wyniku - IResultFilter - wykonywane PRZED i PO akcji – umożliwiają modyfikacje widoku przed jego wyrenderowaniem.  Wyjątków – IExceptionFilter -   Filtry są wykonywane w wyżej wymienionej kolejności.  Kolejność wykonywania filtrów z tej samej kategorii można ustalić za pomocą właściwości Order.
  20. 20. PODSUMOWANIE
  21. 21. Ficzersy  Separacja funkcjonalna aplikacji (logika biznesowa, UI, dane).  Platforma rozszerzalna – wiele komponentów ASP.NET MVC może być w łatwy sposób poszerzona lub podmieniona.  Ułatwione testowanie aplikacji.  Potężne możliwości mapowania URL (SEO, REST).  Możliwość wykorzystania ASPX, ASXC, Master Pages jako UI.  Możliwość wykorzystania istniejących w ASP.NET mechanizmów (autoryzacja, autentykacja, członkostwo, role, sesja, cache, profile, konfiguracja, …).  Wsparcie dla AJAX.
  22. 22. Zalety  Podział na warstwy ułatwia panowanie nad złożonymi projektami.  Zapewnia programiście pełną kontrolę nad działaniem programu – nie używana jest skomplikowana logika Web Forms.  Aplikacje pisane z użyciem ASP.NET MVC są lżejsze dla strony klienckiej – brak ViewState.  Możliwość tworzenia zaawansowanego routingu / URLi przyjaznych dla użytkownika.  Wsparcie dla TDD (Test Driven Development).
  23. 23. Wady  Zupełnie inny model niż Web.Forms (zdarzeniowy).  Brak możliwości wykorzystania dotychczasowych kontrolek.  Brak ViewState – konieczność ładowania danych widoku za każdym razem, gdy są one potrzebne.  Dla małych aplikacji wprowadza stosunkowo dużo formalizmu (ale pamiętajmy, że małe aplikacje często dojrzewają ).  W wielu sytuacjach wymaga pisania większej ilości kodu.
  24. 24. Garść sznurków  http://www.asp.net/mvc/  http://nerddinner.codeplex.com/  http://weblogs.asp.net/scottgu/archive/2009/ 03/10/free-asp-net-mvc-ebook-tutorial.aspx
  25. 25. Brawa, oklaski, gwizdy, skowyty 

×