Michal Augustýn www.augi.cz ALWIL Software Microsoft Most Valuable Professional



Podobné dokumenty
Michal Augustýn Microsoft Most Valuable Professional

ASP.NET MVC. Michal Horák 2008

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

ASP.NET Web API. Tomáš Herceg Microsoft MVP (ASP.NET)

Jak vznikala webová aplikace kolonizace.asp2.cz

Dynamické stránky v praxi. Bedřich Košata

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

Microsoft ASP.NET 2.0/3.0 (advanced)

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

Django, 2. cvičení url, views, templates. Úvod

Bottle -- příklad. Databáze. Testovací data. id Jedinečný identifikátor řádku: Bude typu INT s AUTO_INCREMENT a nastavíme ho jako primární klíč

Hiearchical MVC (Model-view-controller) vs. PAC (Presentation-abstraction-control)

Stručný úvod pro programátory. Michal Kuchta

Internet Information Services (IIS) 6.0

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

Tvorba informačních systémů

Tvorba webu v HTML. Redakční systém. CMS Joomla! Co je Joomla

KIV/PIA 2013 Jan Tichava

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Instalace a konfigurace web serveru. WA1 Martin Klíma

UJO Framework. revoluční architektura beans. verze

Programování v prostředí.net ASP.NET

Tvorba informačních systémů

Vytvoření pokročilé Fotogalerie v Drupalu - Views

KIV/PIA Semestrální práce

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

RESTful API TAMZ 1. Cvičení 11

PŘEHLED A MOŽNOSTI VYUŽITÍ WEBOVÝCH MAPOVÝCH SLUŽEB

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Server-side technologie pro webové aplikace

1. Struktura stránky, zásady při psaní kódu, MVC pattern. Web pro kodéry (Petr Kosnar, ČVUT, FJFI, KFE, PINF 2008)

Komponentově orientované webové frameworky. Jiří Stránský twitter.com/jistr

Mgr. Vlastislav Kučera přednáška č. 2

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Django Urls, views, templates

DEVFEST ANGULAR 2 WORKSHOP. angular.cz

Webové služby. služby OctopusPro

Tvorba informačních systémů

Informační systém pro rezervaci pokojů hotelu SPORT

Postup. Úvodem. Hlavní myšlenka frameworku. application. system. assets. uploads

Technologie společnosti Microsoft pro vývoj softwarových aplikací

Mgr. Vlastislav Kučera lekce č. 2

Začínáme s vývojem pro Android

X36WWW. Vícevrstvá architektura webové aplikace Martin Klíma. Tvorba Webu 2 1

language="javascript">... </script>.

Úvod do aplikací internetu a přehled možností při tvorbě webu

Vývoj Internetových Aplikací

ANGULAR 2 WORKSHOP. angular.cz

Serverové skriptovací technologie

Jakub Čermák Microsoft Student Partner

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

Distribuované systémy a výpočty

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

Tvorba webu. Úvod a základní principy. Martin Urza

Základy programování v jazyce JAVA

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Historie, současnost a budoucnost ASP.NET

Novinky v ASP.NET MVC6

Tvorba informačních systémů

Návrh a tvorba WWW stránek 1/8. Formuláře

Zabezpečení webové vrstvy a EJB projektu Část nastavení specifická pro Glassfish, část dána Java EE

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Sem vložte zadání Vaší práce.

Tvorba WWW stránek. Mojmír Volf

Protokol HTTP 4IZ228 tvorba webových stránek a aplikací

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek

Programování v jazyku C# II. 8.kapitola

Ruby on Rails. VŠE, Jiří Hradil

Tvorba informačních systémů

Úvod do tvorby internetových aplikací

Dobrý CMS Popis produktu a jeho rozšíření

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

WCF RIA Services. aneb jak na RIA aplikace v Silverlightu

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS STANISLAV SEHNAL

Po stisku Next se nám objeví seznam dostupných tříd (naše zkompilovaná třída User.KBI), viz následující obrázek.

Použití inteligentních značek s informačními službami

Webové Aplikace (6. přednáška)

[ASP].NET Core Demystified. Miroslav Holec. Konzultant a lektor [ASP].NET Core.

Formuláře. Aby nám mohli uživatelé něco hezného napsat třeba co si o nás myslí!

IS pro podporu BOZP na FIT ČVUT

Inovace výuky prostřednictvím šablon pro SŠ

WWW a HTML. Základní pojmy. Ivo Peterka

Python XML a Web 1 PGS

VYSOKÁ ŠKOLA POLYTECHNICKÁ JIHLAVA Katedra elektrotechniky a informatiky Obor Počítačové systémy kombinovaná forma

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

D R U P A L V O J T Ě C H K U S W O J T H A

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Univerzita Karlova v Praze. Matematicko-fyzikální fakulta BAKALÁŘSKÁ PRÁCE. David Ligr. Systém pro správu obsahu pro základní a střední školy

Tvorba informačních systémů

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Code Contracts. Robert Haken [MVP ASP.NET, MCT] Software architect, Owner at HAVIT, s.r.o. knowledge-base.havit.cz

Sem vložte zadání Vaší práce.

Stručný obsah. Část I Úvod. Část II Komponenty

Michal Krátký, Miroslav Beneš

Proč Angular JS framework?

Transkript:

Michal Augustýn www.augi.cz ALWIL Software Microsoft Most Valuable Professional

ASP.NET/IIS MVC v ASP.NET MVC Routing Controllery Views master pages kompozice

framework pro tvorbu webového rozhraní na platformě ASP.NET používá návrhový vzor MVC podobně jako Nette, Django, SpringMVC, RoR, ZendFW, nyní ve verzi 2, pracuje se na verzi 3 rozšiřitelný/upravitelný v mnoha směrech open-source (licence Ms-PL) zdrojáky dostupné na Codeplex.com

.NET Framework ~ Java C#, VB.NET, F#, IronPython, Internet Information Services ~ Apache web.config ~.htaccess module ~ module handler ~ handler ASP.NET je handler

IIS ASP.NET WebForms MVC

Požadavek GET http://domena.cz/produkt/zobraz/10 IIS moduly ASP.NET [ISAPI filter] handler moduly Výsledek <html> </html>

request response 1 routing Controller 5 2-3 4 Model View

public class HomeController : Controller public ActionResult Index() ViewData["Message"] = "Welcome to ASP.NET MVC!"; return View(); public ActionResult About() return View();

defaultně se používá WebForms view-engine view == aspx stránka public ViewResult Show(int id) Product p = BusinessLayer.Load(id); return View("Show", p); <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Product>" %> <asp:content ID="indexTitle" ContentPlaceHolderID="TitleContent" runat="server >Home Page</asp:Content> <asp:content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server"> <h2><%= Html.Encode(ViewData["Message"]) %></h2> <p><%= Html.Encode(ViewData.Model.Name) %></p> </asp:content>

určuje tvar url konfigurace v souboru Global.asax.cs pravidla se vyhodnocují v pořadí vložení mapuje zpracování url na kontroler a akční metodu umožňuje generování url výchozí nastavení: /Home/Product/20 routes.maproute( "Default", // Route name "controller/action/id", // URL with parameters new controller = "Home", action = "Index", id = "" // Parameter defaults );

třída odvozená od třídy Controller obsahuje akční metody (vrací ActionResult) 1. čte data z requestu 2. komunikuje s modelem 3. vybírá view a předává mu data k prezentaci Controller Model View

parametry requestu mapovány na vstupní parametry akční metody ( deserializace ) public ActionResult Show(int id) Routovací parametry: controller, action, id POST parametry: product.id, product.name, product.price public ActionResult Create(Product product) manuálně: [Try]UpdateModel vlastní konverze - IModelBinder

slouží k zápisu výsledku do HttpResponse public abstract class ActionResult public abstract void ExecuteResult(ControllerContext context); return View("Index"); // ViewResult return PartialView("Product"); // PartialViewResult return Json(myObject); // JsonResult return Redirect("http://www.bing.com/"); // RedirectResult return RedirectToAction("Index"); // RedirectToRouteResult return File("soubor.txt", "txt/plain"); // FilePathResult return new MyRssResult(myCollection); // Rss(myCollection)

vlastní action-result na přesměrování public class MyRedirectResult : ActionResult public string Url get; set; public override void ExecuteResult(ControllerContext context) context.httpcontext.response.redirect(this.url); return new MyRedirectResult Url = "http://www.bing.com" ;

1. hash-table ViewData ViewData[ message ] = Hello world! ; 2. Model libovolná třída ViewData.Model = new MyViewModel(); typově bezpečné Controller Model View

všechny produkty public ViewResult Index() IEnumerable<Product> products = BusinessLayer.LoadAll(); return View(products); // ViewData.Model = products; jeden produkt public ViewResult Show(int id) Product p = BusinessLayer.Load(id); return View("Show", p);

editace produktu public ViewResult Update(int id) Product p = BusinessLayer.Load(id); return View("Update", p); [AcceptVerbs(HttpVerbs.Post)] public RedirectToRouteResult Update(int id, FormCollection formdata) Product p = BusinessLayer.Load(id); if (TryUpdateModel<IProduct>(p, formdata.tovalueprovider())) BusinessLayer.Update(p); return RedirectToAction("Update", new id = p.id );

master page určuje layout stránky definuje díry k vyplnění (ContentPlaceHolder) content page plní ContentPlaceHoldery při zobrazení stránky řekneme jakou master page použít jak vyplnit jednotlivé díry

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title><asp:contentplaceholder ID="TitleContent" runat="server" /></title> <link href="../../content/site.css" rel="stylesheet" type="text/css" /> </head> <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Product>" %> <asp:content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> Home Page - <%= Html.Encode(Model.Name) %> </asp:content>

<% using (Html.BeginForm()) %> <fieldset> <legend>fields</legend> <p> <%= Html.LabelFor(model => model.name) %> <%= Html.TextBoxFor(model => model.name) %> <%= Html.ValidationMessageFor(model => model.name) %> </p> <p> <%= Html.LabelFor(model => model.price) %> <%= Html.TextBoxFor(model => model.price) %> <%= Html.ValidationMessageFor(model => model.price) %> </p> <p> <input type="submit" value="save" /> </p> </fieldset> <% %>

<% using (Html.BeginForm()) %> <fieldset> <legend>fields</legend> <%= Html.EditorFor(model => model.name) %> <%= Html.EditorFor(model => model.price) %> <p> <input type="submit" value="save" /> </p> </fieldset> <% %> <% using (Html.BeginForm()) %> <fieldset> <legend>fields</legend> <%= Html.EditorForModel() %> <p> <input type="submit" value="save" /> </p> </fieldset> <% %>

<% Html.EnableClientValidation(); %> <%= Ajax.ActionLink("Odkaz", "IndexAjax", "Home", new AjaxOptions InsertionMode = InsertionMode.Replace, LoadingElementId = "loading-image", UpdateTargetId = "dynamic-content", ) %>

standardní umístění ~/Views/controller/view.[aspx,ascx] ~/Views/Shared/view.[aspx,ascx] lze změnit (stejně jako vše) partial views: UserControls (ascx) dědí z ViewUserControl<TModel> Html.RenderPartial( MyPView, model)

vyšší úroveň kompozice proběhne celý round-trip jde proti filozofii MVC, ale je užitečný Kdy použít RenderAction a kdy RenderPartial? Action pro rendering nutná komunikace s modelem Partial všechna data dostupná

přijde request: routing: controller = Product action = Show id = 21 model-binding: id = 21 public ViewResult Show(int id) Product p = BusinessLayer.Load(id); return View("Show", p); /Product/Show/21

public ViewResult Show(int id) Product p = BusinessLayer.Load(id); return View("Show", p); <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Product>" %> <asp:content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> Product details </asp:content> <asp:content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <h2><%= Html.Encode(Model.Name) %></h2> <p><%= Html.Encode(Model.Description) %></p> <p>price: <%= Html.Encode(Model.Price) %></p> </asp:content>

aspektové rozšíření akčních metod lze aplikovat i na celé controllery [Authorize(Roles = "Admin")] [OutputCache(CacheProfile="TestProfile")] [HandleError(View="Error")] public ActionResult Test() return new EmptyResult();

public interface IAuthorizationFilter void OnAuthorization(AuthorizationContext filtercontext); public interface IActionFilter void OnActionExecuting(ActionExecutingContext filtercontext); void OnActionExecuted(ActionExecutedContext filtercontext); public interface IResultFilter void OnResultExecuting(ResultExecutingContext filtercontext); void OnResultExecuted(ResultExecutedContext filtercontext); public interface IExceptionFilter void OnException(ExceptionContext filtercontext);

1.0 2.0 silně typovější Html.RenderAction display & edit templates 3.0 komponenty (grid, captcha, ) multiple partial updates, client templates, scaffolding, DI, MEF,

MVC jednoduché čistý kód nutí správně strukturovat plná kontrola nad html zezačátku vyžaduje více znalostí WebForms složitější model RAD, komponentový vývoj odstínění od stavovosti http ViewState, PostBack

http://asp.net/mvc http://haacked.com Phil Haack http://weblogs.asp.net/scottgu - ScottGu http://forum.builder.cz české fórum i o.net http://www.aspnetmvc.cz snad už brzy

a odpovědi