Podstawy Asp.Net Mvc 1.0 W 3600 Sekund

10,218
-1

Published on

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

No Downloads
Views
Total Views
10,218
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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 

×