SlideShare uma empresa Scribd logo
1 de 25
Michał Jaskólski
        http://www.jaskolski.com.pl



PODSTAWY ASP.NET MVC 1.0
      W 3600 SEKUND
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.
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
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.
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
     …
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)
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.
LET’S DO THE CODE
Model
Kontrolery
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.
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
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.
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.
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.
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.
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
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
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.
PODSUMOWANIE
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.
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).
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.
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
Brawa, oklaski, gwizdy, skowyty 

Mais conteúdo relacionado

Semelhante a Podstawy Asp.Net Mvc 1.0 W 3600 Sekund

Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?tkryskiewicz
 
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftCloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftBiznes 2.0
 
Tomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureTomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureWebhosting.pl
 
My littlemvc 2008 official
My littlemvc 2008 officialMy littlemvc 2008 official
My littlemvc 2008 officialskowronkow
 
ASP.NET. Vademecum profesjonalisty
ASP.NET. Vademecum profesjonalistyASP.NET. Vademecum profesjonalisty
ASP.NET. Vademecum profesjonalistyWydawnictwo Helion
 
Wzorce Repository, Unity of Work, Devexpress MVC w architekturze Asp.net MVC
Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVCWzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC
Wzorce Repository, Unity of Work, Devexpress MVC w architekturze Asp.net MVCQuick-Solution
 
Migracja I Integracja Bazy
Migracja I Integracja BazyMigracja I Integracja Bazy
Migracja I Integracja BazyPrzemysław ...
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji androidSages
 
Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Bartlomiej Zass
 
Poland- Smart Client Technology - MTS 2005
Poland- Smart Client Technology - MTS 2005Poland- Smart Client Technology - MTS 2005
Poland- Smart Client Technology - MTS 2005Tomasz Cieplak
 
AADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptAADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptJacek Okrojek
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyqbeuek
 
Obiektowe tworzenie motywów z użyciem silnika szablonów Twig w WordPressie
Obiektowe tworzenie motywów z użyciem silnika szablonów Twig w WordPressieObiektowe tworzenie motywów z użyciem silnika szablonów Twig w WordPressie
Obiektowe tworzenie motywów z użyciem silnika szablonów Twig w WordPressieWordCamp Polska
 
MvvmCross na przykładach w Xamarin.Android
MvvmCross na przykładach w Xamarin.AndroidMvvmCross na przykładach w Xamarin.Android
MvvmCross na przykładach w Xamarin.AndroidIn'saneLab
 
Visual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga ekspertaVisual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga ekspertaWydawnictwo Helion
 

Semelhante a Podstawy Asp.Net Mvc 1.0 W 3600 Sekund (20)

Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?
 
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftCloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
 
Tomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureTomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows Azure
 
My littlemvc 2008 official
My littlemvc 2008 officialMy littlemvc 2008 official
My littlemvc 2008 official
 
ASP.NET. Vademecum profesjonalisty
ASP.NET. Vademecum profesjonalistyASP.NET. Vademecum profesjonalisty
ASP.NET. Vademecum profesjonalisty
 
Wzorce Repository, Unity of Work, Devexpress MVC w architekturze Asp.net MVC
Wzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVCWzorce Repository, Unity of Work, Devexpress MVC  w architekturze Asp.net MVC
Wzorce Repository, Unity of Work, Devexpress MVC w architekturze Asp.net MVC
 
Migracja I Integracja Bazy
Migracja I Integracja BazyMigracja I Integracja Bazy
Migracja I Integracja Bazy
 
Projektowanie i implementacja usług sieciowych
Projektowanie i implementacja usług sieciowychProjektowanie i implementacja usług sieciowych
Projektowanie i implementacja usług sieciowych
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji android
 
Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?
 
Poland- Smart Client Technology - MTS 2005
Poland- Smart Client Technology - MTS 2005Poland- Smart Client Technology - MTS 2005
Poland- Smart Client Technology - MTS 2005
 
AADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScriptAADays 2015 - Jak to zrobic w JavaScript
AADays 2015 - Jak to zrobic w JavaScript
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatyczny
 
WordCamp Lublin 2017
WordCamp Lublin 2017WordCamp Lublin 2017
WordCamp Lublin 2017
 
Obiektowe tworzenie motywów z użyciem silnika szablonów Twig w WordPressie
Obiektowe tworzenie motywów z użyciem silnika szablonów Twig w WordPressieObiektowe tworzenie motywów z użyciem silnika szablonów Twig w WordPressie
Obiektowe tworzenie motywów z użyciem silnika szablonów Twig w WordPressie
 
Speaker Idol Asp .Net Mvc
Speaker Idol   Asp .Net MvcSpeaker Idol   Asp .Net Mvc
Speaker Idol Asp .Net Mvc
 
Ajax w akcji
Ajax w akcjiAjax w akcji
Ajax w akcji
 
MvvmCross na przykładach w Xamarin.Android
MvvmCross na przykładach w Xamarin.AndroidMvvmCross na przykładach w Xamarin.Android
MvvmCross na przykładach w Xamarin.Android
 
JavaServer Faces. Wydanie II
JavaServer Faces. Wydanie IIJavaServer Faces. Wydanie II
JavaServer Faces. Wydanie II
 
Visual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga ekspertaVisual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga eksperta
 

Podstawy Asp.Net Mvc 1.0 W 3600 Sekund

  • 1. Michał Jaskólski http://www.jaskolski.com.pl PODSTAWY ASP.NET MVC 1.0 W 3600 SEKUND
  • 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. 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. 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. 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. 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. 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.
  • 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. 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. 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. 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. 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. 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. 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. 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. 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.
  • 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. 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. 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. 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. Brawa, oklaski, gwizdy, skowyty 