Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
ASP.NET MVC od zera do praktyki
4/16/ :12 PM ASP.NET MVC od zera do praktyki Michał Żyliński ISV Developer Evangelist Microsoft Polska © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
2
ASP.NET na rozstaju dróg?
Web Forms ASP.NET AJAX ASP.NET MVC ASP.NET Dynamic Data ASP.NET Framework .NET Framework
3
ASP.NET „Classic”
4
MVC – smacznie i zdrowo … czyli jak zjeść ciastko i mieć ciastko View
…i cała reszta Controller Model
5
Trochę teorii Krok 1 Żądanie z przeglądarki trafia do kontrolera
MGB 2003 Trochę teorii Kontroler Żądanie Krok 1 Żądanie z przeglądarki trafia do kontrolera © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
6
MGB 2003 Trochę teorii Model Kontroler Żądanie Krok 2 Kontroler przetwarza żądanie wykorzystując logikę biznesową zawartą w modelu © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
7
Trochę teorii Krok 3 Dane z modelu przekazywane są do widoku Żądanie
MGB 2003 Trochę teorii Kontroler Żądanie Widok Krok 3 Dane z modelu przekazywane są do widoku © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
8
MGB 2003 Trochę teorii Kontroler Żądanie Widok Krok 4 Widok zajmuje się wizualizacją danych pochodzących z modelu © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
9
Trochę teorii Krok 5 Serwer zwraca odpowiedź do przeglądarki Żądanie
MGB 2003 Trochę teorii Kontroler Żądanie Widok Odpowiedź Krok 5 Serwer zwraca odpowiedź do przeglądarki © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
10
Dlaczego ASP.NET MVC ?
11
Dlaczego ASP.NET MVC a nie ASP.NET
Pełna kontrola nad HTML: Brak ViewState I CodeBehind Większy porządek w architekturze Elastyczność i rozszerzalność TDD jako jeden z głównych filarów Bliższe koncepcyjnie typowemu programiście WWW ASP.NET ASP.NET MVC Łatwość użycia Kontrola
12
Dlaczego ASP.NET MVC a nie RoR, Django itd.
Te same usługi, które dostępne są w ASP.NET: Zarządzanie użytkownikami (role, profile…) Zarządzanie stanem sesji i aplikacji Konfiguracja (web.config) Mechanizmy cache Mechanizmy lokalizacyjne Master i content pages Kontrolki użytkownika Obiekty bazowe: HttpContext, HttpRequest, HttpResponse Designer
13
… bez użycia klawiatury!
Demo {Hello World} … bez użycia klawiatury!
14
Scenariusz Planeta Microsoft Cel:
Agregator kanałów RSS gromadzący informacje o technologiach Microsoft Funkcjonalność: Prezentowanie (ujednoliconej) listy wpisów Możliwość dodawania nowych kanałów jako administrator
15
Model danych + tabele systemowe
16
Szkielet wizualny Lewa kolumna Prawa kolumna Treść Nawigacja Nagłówek
Stopka
17
Przyjazne adresy URL /Home – wyświetlenie strony głównej
/Home/Search – wyniki wyszukiwania /Home/Search/{phrase} /Home/Feed/{FeedId} – wpisy z pojedynczego kanału
18
Routing W pełni konfigurowalna centrala telefoniczna
Konfiguracja w pliku global.asax 2 scenariusze: Ścieżka Zasób Zasób Ścieżka
19
Routing Ścieżka to: URL (z ew. parametrami) Wartości domyślne
Więzy – walidatory wykorzystujące np. wyrażenia regularne lub typ żądania HTTP Tabela ścieżek Kolekcja ścieżek Ścieżka Ścieżka Ścieżka Route reportRoute = new Route("{locale}/{year}", new ReportRouteHandler()); reportRoute.Defaults = new RouteValueDictionary { { "locale", "en-US" }, { "year", DateTime.Now.Year.ToString() } }; reportRoute.Constraints = new RouteValueDictionary { { "locale", "[a-z]{2}-[a-z]{2}" }, { } };
20
Demo Routing
21
Kontroler i akcja Kontroler: Akcja:
Klasa, której część metod będzie dostępna dla przeglądarki Ma przyrostek Controller Implementuje interfejs IController lub jest potomkiem klasy Controller Akcja: Metoda publiczna klasy kontrolera zwracająca typ ActionResult (lub void) Jej rezultatem może być m.in. ViewResult, JsonResult, RedirectResult czy RedirectToRouteResult
22
Widok Możliwość wymiany silnika szablonów
Wyświetla dane dostarczone przez kontroler Podstawy składni: <% {dowolny kod} %> Np. <% if (…) %> <%= {dowolny kod zwracający rezultat tekstowy} %> Np. <%= Model.Name %> W standardowej implementacji bardzo zbliżony do ASP.NET .aspx .master .ascx Możliwość wymiany silnika szablonów
23
Demo Struktura serwisu
24
HTML Helpers Zbiór metod, ułatwiających życie projektantom widoków
Odpowiedzialne (pół)automatyczne generowanie kodu HTML Najpopularniejsze stanowią składnik samej platformy, np.: Html.ActionLink, Html.Encode, Html.TextBox, Html.RenderPartial
25
Własny HTML helper Biblioteka helperów pozwala na rozszerzanie
Własny helper = dowolna metoda zwracająca wartość tekstową Implementacja poprzez metodę statyczną lub metodę rozszerzającą (extension method) (Po zaimportowaniu w szablonie) stanie się standardowo dostępna w Intellisense
26
Demo Własny HTML Helper
27
Przekazywanie danych do widoku
ViewState Kolekcja dowolnych obiektów, kluczem jest wartość tekstowa Wymaga rzutowania Kontroler: ViewState[„Wiek”] = 10; Widok: <%= (ViewState[„Wiek”] as int) %>
28
Przekazywanie danych do widoku
Model – przekazujemy do widoku konkretny obiekt biznesowy W widoku wykorzystujemy słowo kluczowe Model Mocno typowane Kontroler: return View(User); Widok: Użytkownik: <%= Model.Name %> Wiek: <%= Model.Age %>
29
Przekazywanie danych do widoku
ViewModel Podejście architektoniczne eliminujące ograniczenia ViewState i Model Przygotowanie/rozszerzenie modelu o właściwości wykorzystywane przez Model Model ViewModel View
30
Obsługa formularzy Walidacja danych:
Kontroler: ModelState – słownik zawierający rezultat walidacji modelu Widok: Html.ValidationMessage – walidacja pojedynczego pola formularza Html.ValidationSummary – raport zbiorczy Projekt xVal ( Przykład: ModelState.AddModelError(„Name”, „Nieprawidłowa nazwa”) ModelState.IsValid
31
Obsługa formularzy Aktualizacja danych -> ręcznie lub przez UpdateModel ModelBinders - możliwość wiązania pól formularzy z modelem: Dzięki Bogu mamy też scaffolding Przykład: public ActionResult Save(Person person) { UpdateModel(person, new[] {„Name”, „Password”}); }
32
Demo Obsługa formularzy
33
Action Filters Uzupełnienie akcji (lub całego kontrolera) o specyficzną, uniwersalną funkcjonalność Typy filtrów: Filtry autoryzacji Filtry akcji Filtry odpowiedzi Filtry wyjątków Typowe zastosowania: Kontrola dostępu Obsługa błędów Cache’owanie stron Logowanie zdarzeń
34
Demo Action Filters
35
Kontrola dostępu Domyślnie wykorzystuje usługi Membership i Role
Zarządzanie kontami użytkowników Gotowy filtr Authorize Ograniczanie dostępu do akcji w oparciu o nazwy użytkowników lub ról
36
Demo Kontrola uprawnień
37
Wersje językowe Zasoby (resources) – tak samo, jak w ASP.NET
Lokalne lub globalne Prosta struktura klucz=wartość Nie tylko prosty tekst, ale też grafika i inne Automatycznie wykorzystuje mechanizm ustawień językowych przeglądarki WWW Przykład wykorzystania: <%= Nazwa_zasobu.Klucz %> Np. <%= Resources.AboutUs %>
38
Demo Lokalizacja
39
Korzystanie z Ajaxa Helpery prawie jak UpdatePanel
Ajax.ActionLink(tekst, akcja, parametry, opcje wywołania) Obsługiwane przez Microsoft Ajax Library Standardowo na pokładzie również biblioteka JQuery (v.1.3.1) W pełni wspierana przez Visual Studio i Microsoft
40
Ajax prawie jak w ASP.NET
Demo Ajax prawie jak w ASP.NET
41
Testy Pełne wsparcie dla TDD – gotowy projekt dla unit testów
Współpraca z zewnętrznymi narzędziami (np. NUnit, Moq) Osobiście zacząłbym od warstwy modelu
42
Uwagi praktyczne MVC nie wymusza dobrych praktyk – o nie należy zadbać samemu Choćby IOC niezbędne dla dobrych testów aplikacji Uwaga na wielkość kontrolera! Warstwa biznesowa to nie tylko automatycznie wygenerowane klasy Warto eksperymentować – ASP.NET MVC jest z założenia otwartą platformą Dowolny ORM Dowolny silnik szablonów Dużo projektów towarzyszących
43
Wdrożenia na świecie Kelley Blue Book http://www.kbb.com
Wyszukiwarka ofert motoryzacyjnych (samochody nowe i używane) 12 mln odwiedzin miesięcznie
44
Wdrożenia na świecie Stack Overflow http://www.stackoverflow.com
Społecznościowa baza pytań i odpowiedzi dla programistów Założona przez Joela Spolsky’ego
45
Wdrożenia w Polsce Cineman http://www.cineman.pl
Największe w Polsce kino internetowe, działające od 2007 r. Całkowita przebudowa serwisu z platformy LAMP
46
Wdrożenia w Polsce Delikatesy internetowe A.pl http://www.a.pl
Sklep internetowy spółki Action S.A. „ASP.NET MVC znacznie ułatwia dodawanie nowych funkcjonalności, nie ogranicza twórców serwisów we wdrażaniu nowych pomysłów i sprawia, że utrzymanie kodu i zarządzanie całym projektem jest o wiele łatwiejsze” – Jakub Milewski, koordynator działań e-commerce w A.pl
47
Podsumowanie Możliwość wyboru Testy Elastyczność SEO
48
4/16/ :12 PM © 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.