ASP.NET MVC od zera do praktyki

Slides:



Advertisements
Podobne prezentacje
PARTNERSTWO na rzecz rozwoju rynku pracy powiatu starogardzkiego Projekt 50+ doświadczenie.
Advertisements

ISOiWUT Internetowy System Oferowania i Wyszukiwania Usług Transportowych.
Tworzenie ASP.NET Web Form
Wzorce projektowe w J2EE
Systemy zarządzania treścią CMS
Evident – Środki Trwałe
Jak przeżyć w Internecie? Czyli o bezpieczeństwie słów kilka… Michał Jankowski MJ Software Solutions Services.
Licencjonowanie Microsoft Office 2013
Software Assurance dla dużych firm
Dodatkowe informacje na temat umów Open oraz Open Value.
Promotor: dr.inż. Aleksandra Werner
Licencjonowanie wirtualizacji
Co tu robi Microsoft, czyli 10 mitów głównych
Przegląd programów licencyjnych dla instytucji z sektora publicznego oraz edukacyjnego i program SPLA.
Licencjonowanie rodziny System Center 2012
Licencjonowanie Exchange 2013
Licencjonowanie Lync 2013 Poziom 200.
Licencjonowanie SharePoint 2013
Podstawy umów Open oraz Open Value. Rozwiązania licencyjne firmy Microsoft Umowy Open Umowy Open Value Na wybrane komputery (Non company wide) Na całą
Rozwój aplikacji przy wykorzystaniu ASP.NET
Collaborate more Platforma Office 2010 Sebastian Wilczewski Konsultant Betacom S.A.
Wirtualna baza SQL zgodna z SQL Server SQL as a Service
Technologie tworzenia aplikacji internetowych Wykład 3
Licencjonowanie aplikacji serwerowych
Promotor: dr.inż. Aleksandra Werner
Licencjonowanie Windows 8
Ogólne informacje licencyjne Kluczowe funkcjonalności Dostępne wersje i porównanie Zasady licencjonowania Downgrade, SA Licencjonowanie w środowisku chmury.
Jak to działa? aplikacje desktopowe usługi online urządzenia
Usługi online oraz Office 365. Przegląd usług online Dodawanie usług online do umów grupowych Nabywanie licencji Office 365.
Podstawy modeli i programów licencyjnych Microsoft.
Licencjonowanie narzędzi dla programistów
Licencjonowanie rodziny produktów Forefront oraz System Center
ASP.NET Dynamic Data Jakub Binkowski Jakub Binkowski Visual C# MVP
Model – View – View Model
Systemy zarządzania treścią Wykład 5
Twoje nowoczesne biuro
Windows 8.1 dostarcza spójną platformę do tworzenia aplikacji, które potrafią dostosować się do wielu urządzeń Zaprojektowane raz, działają.
Jak przeżyć w Internecie? Czyli o bezpieczeństwie słów kilka… Michał Jankowski MJ Software Solutions Services.
Przegląd usług online Dodawanie usług online do umów grupowych Nabywanie licencji Office 365.
DEMO Jak założyć konto na Microsoft Virtual Academy?
.NET i Bazy Danych Projekt: Wadim Grasza.
Wzorce Projektowe w JAVA
Dr inż. Piotr Czapiewski. Framework (rama projektowa, szkielet) to w programowaniu struktura wspomagająca tworzenie, rozwój i testowanie powstającej.
Moduł e-Kontroli Grzegorz Dziurla.
Analiza problemów wydajnościowych w środowisku SharePoint 2013 Marcin Ciężak Support Escalation Engineer 06/11/201 5.
Rozpowszechnianie aplikacji KRYSTIAN KOWALCZUK TORUŃ,
Temat: Porównanie technologii php,c# oraz javascript na przykładzie webaplikacji typu społecznościowy agregator treści Autor: Wojciech Ślawski.
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Zarządzanie stanem w aplikacjach ASP.NET Elżbieta Mrówka-Matejewska
Politechnika Warszawska Wydział Elektryczny Kierunek: Informatyka stosowana Praca dyplomowa inżynierska Aplikacja do kontroli wydajności produkcji w.
HTML.  Wprowadzenie  Protokół HTTP  Język HTML  Definicja typu dokumentu  Nagłówek strony  Formatowanie treści dokumentu  Definiowanie struktury.
 Podstawowy składnik.NET Framework  Technologia tworzenia w pełni dynamicznych stron internetowych działających po stronie serwera  Zorientowanie na.
ASP.NET Tworzenie i zarządzanie wyglądem aplikacji, tworzenie mapy witryny. Kontrolki nawigacyjne.
Implementacja wzorca MVVM w Prism 5.0
Wortal Publicznych Służb Zatrudnienia. Stan obecny Przegląd witryn urzędów Różnorodność i standaryzacja.
Wzorzec MVC na przykładzie CakePHP
Komponentowe systemy rozproszone
BÓG JEST SZEPTEM I POWIEWEM
Nowa Ewangelizacja „Jak zawsze, również i dziś celem ewangelizacji
Aktywacja i przypisanie dostępnych licencji Dynamics 365 w Microsoft Partner Network Instrukcja Ostatnia aktualizacja
Pobranie dostępnych licencji partnerskich i sprawdzenie ich liczby w Microsoft Partner Network Instrukcja Ostatnia aktualizacja
Zakup subskrypcji Microsoft Action Pack (MAPS) w programie Microsoft Partner Network Instrukcja Ostatnia aktualizacja
Aktywacja i przypisanie dostępnych licencji Office 365 w Microsoft Partner Network Instrukcja Ostatnia aktualizacja
PROGRAMY DO KONTROLI RODZICIELSKIEJ
PROGRAMY DO KONTROLI RODZICIELSKIEJ
Aplikacje i usługi internetowe
Ovid LinkSolver.
Szablon identyfikowania głównych zainteresowanych osób
Zapis prezentacji:

ASP.NET MVC od zera do praktyki 4/16/2017 12:12 PM ASP.NET MVC od zera do praktyki Michał Żyliński michal.zylinski@microsoft.com 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.

ASP.NET na rozstaju dróg? Web Forms ASP.NET AJAX ASP.NET MVC ASP.NET Dynamic Data ASP.NET Framework .NET Framework

ASP.NET „Classic”

MVC – smacznie i zdrowo … czyli jak zjeść ciastko i mieć ciastko View …i cała reszta  Controller Model

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.

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.

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.

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.

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.

Dlaczego ASP.NET MVC ?

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

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 

… bez użycia klawiatury! Demo {Hello World} … bez użycia klawiatury!

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

Model danych + tabele systemowe

Szkielet wizualny Lewa kolumna Prawa kolumna Treść Nawigacja Nagłówek Stopka

Przyjazne adresy URL /Home – wyświetlenie strony głównej /Home/Search – wyniki wyszukiwania /Home/Search/{phrase} /Home/Feed/{FeedId} – wpisy z pojedynczego kanału

Routing W pełni konfigurowalna centrala telefoniczna Konfiguracja w pliku global.asax 2 scenariusze: Ścieżka Zasób Zasób Ścieżka

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}" }, { "year", @"\d{4}" } };

Demo Routing

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

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

Demo Struktura serwisu

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

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

Demo Własny HTML Helper

Przekazywanie danych do widoku ViewState Kolekcja dowolnych obiektów, kluczem jest wartość tekstowa Wymaga rzutowania Kontroler: ViewState[„Wiek”] = 10; Widok: <%= (ViewState[„Wiek”] as int) %>

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 %>

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

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 (http://xval.codeplex.com/) Przykład: ModelState.AddModelError(„Name”, „Nieprawidłowa nazwa”) ModelState.IsValid

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”}); }

Demo Obsługa formularzy

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ń

Demo Action Filters

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

Demo Kontrola uprawnień

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 %>

Demo Lokalizacja

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

Ajax prawie jak w ASP.NET Demo Ajax prawie jak w ASP.NET

Testy Pełne wsparcie dla TDD – gotowy projekt dla unit testów Współpraca z zewnętrznymi narzędziami (np. NUnit, Moq) http://www.mockframeworks.com/moq Osobiście zacząłbym od warstwy modelu

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

Wdrożenia na świecie Kelley Blue Book http://www.kbb.com Wyszukiwarka ofert motoryzacyjnych (samochody nowe i używane) 12 mln odwiedzin miesięcznie

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 

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

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

Podsumowanie Możliwość wyboru Testy Elastyczność SEO

4/16/2017 12: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.