ASP.NET MVC. Autor wykładu: Marek Wojciechowski

Podobne dokumenty
Architektura MVC w ASP.NET. Autor wykładu: Marek Wojciechowski

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Technologie internetowe ASP.NET Core. Paweł Rajba

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

Podstawy wzorca MVC MODEL KON- TROLER WIDOK. Odpowiada za wyświetlenie danych użytkownikowi. Zawiera dane aplikacji oraz jej logikę.

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Nowy projekt: - ASP.NET MVC 3 Web Application - [Other Languages] Visual C# Web ASP.NET MVC 3 Web Application - okno dialogowe:

Realizacja Aplikacji Internetowych 2013 laboratorium K. M. Ocetkiewicz

Realizacja Aplikacji Internetowych 2012 laboratorium K. M. Ocetkiewicz

Ruby i Ruby on Rails. Mateusz Drożdżyński

Program szkolenia: Symfony, nowoczesny framework PHP

Realizacja Aplikacji Internetowych 2013 laboratorium cz. 2 K.M. Ocetkiewicz

Microsoft.NET: ASP.NET MVC + Entity Framework (Model First)

Zaawansowane aplikacje internetowe laboratorium REST

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework

Program szkolenia: Tworzenie aplikacji w Ruby on Rails z wykorzystaniem zwinnych metodyk

Czym jest Ruby on Rails?

WYKORZYSTANIE WZORCA MVC W ASP.NET

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski


Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia

KARTA PRZEDMIOTU. Warsztaty z Ruby on Rails. Ruby on Rails Workshop

Systemy internetowe ASP.NET mgr inż. Andrzej Sobecki

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Szkolenie wycofane z oferty

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Walidacja danych w ASP.NET MVC

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Walidacja po stronie serwera Walidacja po stronie klienta:

MVC w praktyce tworzymy system artykułów. cz. 1

Różne podejścia do projektowania aplikacji internetowych

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

Platformy Programowania

4 AS SP.NET MVC. Widok. Zaawansowane programowanie internetowe Instrukcja nr 4

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Infrastruktura aplikacji WWW

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails

Spring Framework - wprowadzenie i zagadnienia zaawansowane

File -> New -> File HTML Page Open <Body></Body> C:\inetpub\wwwroot Index.html

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

Kurs rozszerzony języka Python

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

Widoki zagnieżdżone, layout. 1. Wprowadzenie Repozytoria danych

Tytuł szkolenia: Angular 4 - budowanie nowoczesnych i wydajnych aplikacji przeglądarkowych

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Zaawansowany kurs języka Python

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Projekt: Mikro zaprogramowane na sukces!

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Wzorce prezentacji internetowych

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

Programowanie obiektowe

REFERAT O PRACY DYPLOMOWEJ

Plan. Aplikacja. Architektura aplikacji. Architektura aplikacji Tworzenie aplikacji Application Builder podstawy

ASP.NET MVC. Uwierzytelnianie i routing. Zaawansowane programowanie internetowe Instrukcja nr 6

Zaawansowane aplikacje internetowe - laboratorium

Bezpieczeństwo frameworków WEBowych Java na przykładzie ataku CSRF

Programowanie w Ruby

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

O sobie. Adam Kowalski. Absolwent informatyki Uniwersytetu Wrocławskiego Full-stack Developer w firmie Synergy Codes.

Django : praktyczne tworzenie aplikacji sieciowych / Antonio Mele. Gliwice, cop Spis treści

Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy

Tworzenie i wykorzystanie usług sieciowych

MVC w praktyce tworzymy system artykułów. cz. 2

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Wybrane działy Informatyki Stosowanej

Modele danych walidacja widoki zorientowane na model

SZKOLENIE TWORZENIE SYSTEMÓW

Instrukcja laboratoryjna cz.6

Agenda. Wstęp Zmiany Co nowego dla web developerów? Nowości we front-end developingu Czego spodziewać się może końcowy użytkownik?

Kurs języka Ruby. Ruby on Rails ActionPack

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło

Tworzenie modułów. Wymagania aplikacji. Tworzenie modułów. Architektura aplikacji. controllers

Szkolenie wycofane z oferty. Programowanie w JavaScript (zawiera jquery)

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień Uniwersytet Warszawski

REFERAT PRACY DYPLMOWEJ. Temat pracy: Projekt i realizacja warstwy serwerowej gry internetowej

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

REFERAT O PRACY DYPLOMOWEJ

Aplikacje WWW Wprowadzenie

Omówienie wzorców wykorzystywanych w Prism 5.0. Dominika Różycka

Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Wybrane działy Informatyki Stosowanej

Aplikacje Internetowe

Transkrypt:

ASP.NET MVC Autor wykładu: Marek Wojciechowski

Modele programistyczne ASP.NET Web Forms Komponentowy interfejs użytkownika (kontrolki) Programowanie wizualno-zdarzeniowe Klasyczna składnia ASP.NET ASP.NET MVC Implementacja wzorca MVC Klasyczna składnia ASP.NET lub silnik Razor Web Pages Proste aplikacje webowe jak w PHP lub starym ASP Składnia Razor Web Forms ASP.NET MVC Web Pages ASP.NET

ASP.NET Web Pages Najnowszy i najprostszy model programistyczny framework do tworzenia dynamicznych stron internetowych w stylu PHP i klasycznego ASP wykorzystuje składnię i silnik Razor (ASP.NET Web Pages 2) open source tworzone w Visual Studio lub darmowym środowisku WebMatrix oparte o silnik widoków (ang. view engine) Razor obsługiwane języki programowania: C# i Visual Basic (rozszerzenia stron.cshtml i.vbhtml)

Silnik widoków Razor ASP.NET MVC od początku wspierał koncepcję silników widoków modułów implementujących różną składnię szablonów stron Spark i NHaml jako przykłady silników szablonów do użycia w ASP.NET MVC zamiast tradycyjnego, znanego z Web Forms, silnika ASP.NET Razor opracowany dla MVC3, stosowany również w MVC4, ale też w ASP.NET Web Pages 2 Cechy silnika Razor przejrzysty kod bazujący na językach C# i VB zwarta i przejrzysta składnia: @{ }, @wyrażenie inteligentny parser umożliwia naturalny przeplot HTML z językiem programowania wspiera IntelliSense, unit tests, layouts helpery do generacji formularzy HTML

ASP.NET Web Pages Przykład (1/2) @{ var title = Request.QueryString["title"]; if (String.IsNullOrEmpty(title)) { title = "Razor Web Page"; } var count = Request["count"].AsInt(1); } <html> <head><title>@title</title></head> <body> <form method="post"> First name: @Html.TextBox("name", @Request["name"]) # of greetings: @Html.TextBox("count", @count) <input type="submit" value="submit" /> </form> @{ if(ispost) { for(int i = 0; i < count; i++) { <p>hello @Request.Form["name"]!</p> } } } </body></html> Test.cshtml

ASP.NET Web Pages Przykład (2/2)

ASP.NET MVC Framework firmy Microsoft dla ASP.NET oparty o wzorzec Model-View-Controller (MVC) inspirowany frameworkiem Ruby on Rails pierwsza wersja produkcyjna: marzec 2009 przedstawiany jako alternatywa dla Web Forms, a nie następca aktualna wersja MVC6 open source (licencja MS-PL) darmowy w pełni wspierany od wersji MVC3 oferuje silnik widoków Razor jako alternatywę dla klasycznej składni ASP.NET

Zalety ASP.NET MVC Pełna kontrola nad generowanym kodem HTML Embrace HTTP and HTML - don't hide it brak view state i formularzy po stronie serwera Możliwości integracji z Ajax, jquery Intuicyjne adresy URL w aplikacji RESTful i przyjazne wyszukiwarkom Podział kompetencji i odpowiedzialności komponentów aplikacji (ang. separation of concerns) Testowalność wsparcie dla Test-Driven Development (TDD) Nacisk na zarządzanie nawigacją w aplikacji wzorzec Front Controller, routing

Web Forms na tle ASP.NET MVC Abstrakcja od HTML i HTTP view state, postbacks, kontrolki, cykl życia strony ułatwia programistom szybki start trudno porządnie implementować duże systemy mniej kodu RAD, małe zespoły projektowe Orientacja na stronę jako atomową jednostkę aplikacji Website jako domyślny sposób organizacji kodu w VS ścisły związek nazwy pliku strony z adresem URL trudne i mało wydajne testowanie aplikacji wzorzec Page Controller

Role komponentów w ASP.NET MVC Models komponenty odpowiedzialne za pamiętanie stanu stan często utrwalany w bazie danych Views komponenty odpowiedzialne za wyświetlanie interfejsu użytkownika aplikacji widok może być tworzony kreatorem w oparciu o model (CRUD scaffolding) Controllers komponenty odpowiedzialne za obsługę interakcji z użytkownikiem, manipulowanie modelem i wybór widoku do wyświetlenia

Kreator aplikacji w ASP.NET (VS 2013) Zunifikowany kreator obejmujący różne frameworki w ramach ASP.NET

Uwierzytelnianie użytkowników w ASP.NET No Authentication Individual User Accounts Rejestracja przez aplikację, profile w SQL Server Organizational Accounts Active Directory / Office 365 Windows Authentication Dla aplikacji intranetowych

Struktura projektu ASP.NET MVC Nowo utworzony projekt zawiera zaczątek aplikacji, który można następnie dostosować i rozwinąć kontrolery i widoki dla strony powitalnej szablon strony (layout page) domyślna reguła routingu obsługa logowania użytkowników opcjonalnie towarzyszący projekt do testów jednostkowych

Aplikacja startowa ASP.NET MVC

Routing Global.asax.cs public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { RouteConfig.RegisterRoutes(RouteTable.Routes); } } public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.maproute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } } RouteConfig.cs

Controller public class HomeController : Controller { public ActionResult Index() { return View(); } HomeController.cs public ActionResult About() { ViewBag.Message = "Your application description page."; } } return View();

View @{ ViewBag.Title = "About"; } <h2>@viewbag.title.</h2> <h3>@viewbag.message</h3> About.cshtml <p>use this area to provide additional information.</p>

Szablon stron (layout) <html><head> <title>@viewbag.title - My ASP.NET Application</title> @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr") </head> <body> <ul class="nav navbar-nav"> <li>@html.actionlink("home", "Index", "Home")</li> <li>@html.actionlink("about", "About", "Home")</li> <li>@html.actionlink("contact", "Contact", "Home")</li> </ul> <div class="container body-content"> @RenderBody() </div> </body></html> _Layout.cshtml

Współdzielenie kodu wykonywalnego widoków Pliki _ViewStart W folderze Views W podfolderach widoków poszczególnych kontrolerów Uruchamiane na początku renderowania widoku @{ Layout = "~/Views/Shared/_Layout.cshtml"; } _ViewStart.cshtml

Przekazywanie danych z kontrolera do widoku ViewData, ViewBag (od MVC 3) Dane dostępne w ramach pojedynczego żądania nie przetrwają operacji Redirect ViewData["klucz"], ViewBag.klucz TempData Dane przetrwają operację Redirect TempData["klucz"] Wewnętrznie wykorzystuje sesję HTTP View models i strongly typed views Obiekty modelu przekazywane do widoku Rozwiązanie zalecane

ASP.NET MVC View Model Patterns Domain model jako view model Np. encja Entity Framework Dedykowany view model zawierający obiekt (lub obiekty) domain model (+ dane potrzebne do prezentacji) Dedykowany view model zawierający atrybuty obiektu dziedziny (+ dane potrzebne do prezentacji) Konieczna translacja między obiektami dziedziny i widoku

Domain object Przykład (EF) namespace MVCNews2013.Models { public class NewsItem { [Key] public int Id { get; set; } public DateTime TimeStamp { get; set; } public string Text { get; set; } } } public class NewsDBContext : DbContext { public DbSet<NewsItem> News { get; set; } }

Scaffolding w ASP.NET MVC Technika generowania funkcjonalności CRUD dla obiektu dziedzinowego (kontroler + widoki) Kreatory Visual Studio dla ASP.NET MVC: Kompletny scaffolding od encji EF do kontrolera z akcjami CRUD i odpowiadającymi im widokami Utworzenie kontrolera z akcjami CRUD dla encji EF (bez widoków) Tworzenie widoku dla danej akcji kontrolera z możliwością wskazania encji EF jako modelu

Kompletny scaffolding w ASP.NET MVC (1/2)

Kompletny scaffolding w ASP.NET MVC (2/2)

Selektywne tworzenie silnie typowanych widoków dla akcji kontrolera

Ochrona przed atakami CSRF Cross Site Request Forgery (CSRF, XSRF) atak wykorzystujący zaufanie serwisu do przeglądarki użytkownika (żądanie z przeglądarki zalogowanego użytkownika, podrzucone mu z innego serwisu) Mechanizm obrony w ASP.NET MVC poprzez Anti-Forgery Token generowana losowo informacja dołączona do formularza w polu ukrytym i jednocześnie ustawiana jako cookie po odebraniu formularza wysłanego z przeglądarki test zgodności tokena z pola ukrytego i cookie

AntiForgeryToken w ASP.NET MVC widok z formularzem <% using (Html.BeginForm()) {%> <%= Html.AntiForgeryToken() %> <! elementy formularza <% } %> kontroler przetwarzający dane z formularza [ValidateAntiForgeryToken] public ActionResult Akcja(FormCollection form) {... }

Podsumowanie ASP.NET MVC to nowy framework dla ASP.NET oferowany przez Microsoft implementacja architektury MVC zastosowanie podejść zalecanych w dużych projektach separation of concerns test-driven development Powrót do korzeni: HTML i HTTP niekiedy przypomina ASP: <% %> REST-owe URI helpery ułatwiające kodowanie Pierwotnie pozycjonowany jako alternatywa dla Web Forms; w praktyce je w nowych projektach zastąpił