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

Podobné dokumenty
Michal Augustýn ALWIL Software Microsoft Most Valuable Professional

ASP.NET MVC. Michal Horák 2008

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)

Tvorba informačních systémů

Microsoft ASP.NET 2.0/3.0 (advanced)

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

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

KIV/PIA 2013 Jan Tichava

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

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

Historie, současnost a budoucnost ASP.NET

Tvorba informačních systémů

Internet Information Services (IIS) 6.0

Novinky v ASP.NET MVC6

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

UJO Framework. revoluční architektura beans. verze

RESTful API TAMZ 1. Cvičení 11

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

Tvorba informačních systémů

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

KIV/PIA Semestrální práce

Tvorba informačních systémů

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

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

WCF RIA Services. aneb jak na RIA aplikace v Silverlightu

Django Urls, views, templates

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

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

DEVFEST ANGULAR 2 WORKSHOP. angular.cz

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

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

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

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

Instalace a konfigurace web serveru. WA1 Martin Klíma

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

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

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í

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

Proč Angular JS framework?

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

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

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

Routery Turris a jejich ekosystém I

PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY. Vývoj webových aplikací v Microsoft ASP.NET MVC a WebForms

Programování v prostředí.net

Jakub Čermák Microsoft Student Partner

Reaktivní programování v.net

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

Jazyk C# (seminář 6)

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

Jak vznikala webová aplikace kolonizace.asp2.cz

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

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

Zápis programu v jazyce C#

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

Python XML a Web 1 PGS

KAPITOLA 3. Architektura aplikací na frameworku Rails. V této kapitole: modely, pohledy, řadiče.

Serverové skriptovací technologie

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

JavaServer Faces Zdeněk Troníček

Vývojařská Plzeň AngularJS

Část IV - Bezpečnost 21. Kapitola 19 Bezpečnostní model ASP.NET 23

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

MVVM pro desktop i web

Generické programování

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

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.

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

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

INFORMAČNÍ SYSTÉMY NA WEBU

Komponenty v.net. Obsah přednášky

Webové služby. služby OctopusPro

Ember.js. Jan Kopřiva, Vojtěch Jasný

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

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

Testování webových aplikací Seznam.cz

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

1 Webový server, instalace PHP a MySQL 13

Distribuované systémy a výpočty

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

Web Services na SOAP

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

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

WCF. IW5 - Programování v.net a C# WCF

1. Webový server, instalace PHP a MySQL 13

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

GWT pro pokročilé. MoroSystems, s.r.o. Pavel Klobása. Senior Java Developer.

Android za hranicemi Hello World

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

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.

ANGULAR 2 WORKSHOP. angular.cz

typová konverze typová inference

KAPITOLA 9. Formuláře

IS pro podporu BOZP na FIT ČVUT

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

Doxygen. Jakub Břečka

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

Jazyk C# - přístup k datům

Transkript:

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

dříve převážně desktopové aplikace rozmach internetu poptávka po webových vývojářích ASP.NET WebForms snadný přechod - RAD mezitím jiné směry webového vývoje ASP.NET MVC přijetí jednoho z jiných směrů

framework pro tvorbu webových aplikací reakce na úspěch návrhového vzoru MVC u webových aplikací (RoR, Django, Zend FW) respektuje bezstavovost HTTP plná kontrola nad HTML modulární, rozšiřitelný zdrojáky dostupné na CodePlexu ne-rad vývoj není to náhrada WebForms

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

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

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) 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 Redirect("http://www.bing.com/"); // RedirectResult return RedirectToAction("Index"); // RedirectToRouteResult return File("soubor.txt", "txt/plain"); // FilePathResult return Json(myObject); // JsonResult 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<Product>(p, formdata.tovalueprovider())) BusinessLayer..Update(p); return RedirectToAction("Update", new id = p.id );

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>

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Product>" %> <asp:content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> Update product </asp:content> <asp:content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <% using (Html.BeginForm()) %> <label for="name">name: </label><%= Html.TextBox("Name") %> <label for="description">desc: </label><%= Html.TextBox("Description") %> <input type="submit" name="submit" value="submit" /> <% %> </asp:content>

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

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

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

metody RenderAction a Action volání akčních metod z view silně typový HTML helper: dříve: Html.TextBox( Prop ) nyní: Html.TextBoxFor(m => m.prop) vylepšené serverové validace klientské validace (včetně podpory jquery) areas další úroveň

templating: Html.DisplayFor(m => m.prop) Html.EditorFor(m => m.prop) asynchronní controllery pár dalších drobností

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://www.aspnetmvc.cz snad už brzy http://forum.builder.cz české fórum i o.net

a odpovědi