12. Co je ASP? Vztah ASP a ASP.NETTechnologie ASP (Active Server Pages) je „předchůdcem“ ASP.NET!ASP vytvořila fy Microsoft, rozšířila se ve druhé polovině 90. let V této době byla ASP spolu s PHP pravděpodobně nejpoužívanější vývojovou platformou pro webové aplikaceProgramovací jazyky pro ASP: VB Script, JScript...ASP se nepřekládá (jedná se o interpretované prostředí)!Na ASP stránkách je možné využívat COM komponenty –> málo rozšířenéNejvětší problémy ASP:Špatná udržovatelnost kódu, míchání jednotlivých aplikačních vrstev,neexistence kvalitního vývojového prostředí.Pozor: ASP není ASP.NET!3
23. Historie ASP.NET1997 – po vydání IIS 4.0 Mark Anders a Scott Guthrie navrhli nový model pro webové aplikace, který odděluje strukturu od obsahu ScottGuthrie v Javě naprogramoval prototyp XSPNásledující beta verze byla přejmenovaná na ASP+, využívala CLR a nový jazyk C#2000 – představení veřejnosti jako ASP+, později ASP.NET(.NET jako společný brand)2002 – ASP.NET 1.0 jako součást nového .NET Frameworku 1.02003 – ASP.NET 1.1, MS Visual Studio 2003Doladění základních vlastností2005 – ASP.NET 2.0, MS Visual Studio 2005Master pages, webparts, themes, skins, navigace, membership, XHTML2007 – ASP.NET 3.5 se service packy se používá dodnes, MS Visual Studio 2008C# 3.0, VB9, později AJAX, MVC, LINQ, Entity Framework apod.2010 – ASP.NET 4.0, MS Visual Studio 2010http://en.wikipedia.org/wiki/ASP.NEThttp://2008.webexpo.cz/media/files/lectures/webexpo2008-bernard-roubicek-aspnet-35.ppsx5
24. ASP.NET a .NET Framework, základní pojmy.NET Framework fy Microsoft je nadstavba nad operačním systémemASP.NET je součást tohoto frameworku, v rámci které jsou vytvářeny, nasazovány a provozovány webové aplikace a webové službyAktuální verze je ASP.NET 4.0Základní funkcionalitu celého .NET Frameworku a spouštění řízeného (managed) kódu zajišťuje běhové prostředí CLR (Common Language Runtime – obdoba Java/JVM).NET Framework umožňuje používat různé jazyky, např. C#, C++, VB.NET, Python a další, které splňují předpoklady definované v CLS (Common Language Specification)Výstupem kompilátoru je řízený kód – tzv. MSIL (Microsoft Intermediate Language) MSIL je před svým spuštěním přeložen do strojového kódu za pomocí kompilátoru označovaného jako JITter (Just-in-time).NET Framework obsahuje i jiné části než jen ASP.NET, např. Windows Communication Foundation (WCF) nebo .NET Compact Framework pro mobilní zařízení6
26. Projekt MonoProjekt MONO je multiplatformní implementace .NET Frameworku, založená na standardech ECMAAktuálně projekt zaštiťuje fy NovellMono implementuje běhové prostředí CLR a knihovnu základních tříd BCLUmožňuje spouštění aplikací vytvořených pod .NET Frameworkem, kompatibilita není úplně 100%Mono podporuje např. Linux, Mac OSX, Solaris, Windows atd.http://www.mono-project.com/Main_PagePřednáškaTomáš Petříček, .NET a projekt MONO – Běží .NET i na jiných operačních systémech?http://www.avc-cvut.cz/avc.php?id=2788&language=cs_CZ8
37. Výhody ASP.NETStriktně objektový přístupŘízený (managed) kód, výjimka je možná v C++Oddělení kódu od designu, větší přehlednostKvalitní vývojové prostředí (základní verze zdarma), podpora mnoha jazyků.Snadná implementace (např. webové služby), konfigurace, testování, deploymentŘešení řady obvyklých problémů je přímo součástí ASP.NET (autentizace, validátory, navigace, šablony), k dispozici řada hotových komponentJasné oddělení jednotlivých vrstev aplikace a jejich opakovaná použitelnost (web, desktop, kapesní počítače)Snadná přístupnost k datům (db, XML, web services, REST, JSON)Umí řešit (obcházet) bez-stavovost HTTP/(X)HTMLProvádění nativního kódu (vyšší výkon!)Kvalitní dokumentacehttp://en.wikipedia.org/wiki/ASP.NET10
38. Nevýhody ASP.NETPochází od Microsoftu –> předsudky a odmítáníASP.NET se stále dynamicky rozvíjí (MVC, Entity framework, LINQ…)V použitelné podobě je ASP.NET zatím dostupná pouze pro OS Windows (obchodní politika, nedodělané Mono atd.)Má silnou vazbu na IISV ČR je aktuálně málo freehostingů s podporou ASP.NET (je to dražší a technologicky náročnější než LAMP = linux + apache + mysql + php)Řada používaných vizuálních komponent generuje nevalidní/nehezký (X)HTML kód –> postupné zlepšování Web Forms, možnost přímé kontroly u MVCPři nevhodném použití Viewstate roste množství přenášených datU Web Forms nemá programátor nad nižšími úrovněmi aplikace dobrou kontroluASP.NET je mocný nástroj, ale jeho zvládnutí si vyžádá čas (delší křivka učení)11
49. Jak funguje ASP.NET?ASP.NET stránky používají příponu *.aspx. (existuje celá řada dalších přípon pro další využití – *.ascx, *.asmx, *.ashx, *.config, *.sitemap apod.)Provádění ASP.NET stránky v modelu Web Forms (vzor MVP)není lineární (to je rozdíl proti interpretovaným technologiím)! V každé fázi zpracování je vyvolána a následně zpracována nějaká událost (Init, Load, UnLoad, Render apod.)Kód „pověšený“ na tyto události může býtVyvolán při zpracování nebo uživatelem,součástí *.aspx, v separátním souboru, v DLL knihovněKromě běžného (X)HTML kódu obsahují stránky tzv. serverové ovládací prvky (Server Control, Web Forms), kteréZapouzdřují vizuální elementy a zajišťují tak interakci s uživatelem,generují události (změna hodnoty, stisknutí tlačítka, … ), dále zpracovávané programovým kódem http://zdrojak.root.cz/clanky/prezentacni-vzory-zrodiny-mvc/13
50. Oddělení vzhledu a kódu stránky (Web Forms)141 soubor2 soubory<tagy>kód<tagy>kódForm1.aspxForm1.aspxForm1.aspx.csForm1.aspx.vbVazba mezi šablonou a programovým kódem…<%@Page CodeBehind=... pro VS.NET<%@Page Src=... pro samotný framework
61. Zpracování událostí (Postback) v ASP.NET web forms16ProhlížečServerZpráva o událostiUdálostZpracování zprávyZavolání procedury pro obsluhu událostiObsluha událostiAktualizovaná stránkaS událostmi je třeba šetřit, hlavně pokud se nejedná o intranetovou aplikaci…Zvyšují zátěž serveru,Zpomalují klienta.
62. ViewstateViewState je kolekce reprezentující stav stránky a všech obsažených ovládacích prvkůSpolu s technologii PostBack řeší ViewState bez-stavovost HTTP/(X)HTMLDíky Viewstate si prvky mohou zachovávat svůj stav napříč jednotlivými requestyDo kolekce lze programově přidávat proměnné (tady opatrně!)Stav prvků se neukládá na serveru, ale je přesouván na klienta a zpět coby skryté pole formulářeMožnost volby pro ViewState:ON – úspora výpočetního času, ale více kB putujících mezi klientem a serverem. OFF – nastavení hodnot, výpočty, načítání dat z databáze apod. probíhá při každém PostBackuPokud není třeba, zakažte použití ViewState (pro jednotlivé ovládací prvky, celou stránku nebo aplikaci), snížíte objem přenášených dat mezi klientem a serveremhttp://www.aspnet.cz/Articles/235-viewstate-k-cemu-je-a-jak-ho-spravne-pouzivat.aspx17
63. ASP.NET MVCZ jiných technologií (např. Java Spring MVC) osvědčený Model – View – Controller mění obvyklý způsob zpracování stránky ve Web Forms řízený událostmiPomocí routování URL se rozhoduje, který controller bude konkrétní akci zpracovávatStriktněji odděluje UI, aplikační logiku a data, zlepšuje kontrolu nad odesílaným (X)HTML kódem, má možnost přizpůsobení výstupu různým klientským platformámLepší testovatelnost, možnost využívání mock objektůNadstavba ASP.NET 3.5, musí se doinstalovat! Od verze 4.0 je MVC podporován přímoNěkdy trochu pracné, programátor si musí zvyknout, určité riziko míchání kóduVznikl na základě poptávky vývojářů!Je podporován fy Microsoft, bude koexistovat vedle obvyklého Web Forms (MVP)http://www.asp.net/mvc/http://en.wikipedia.org/wiki/ASP.NET_MVC_Frameworkhttp://www.augi.cz/programovani/aspnet-mvc-a-routing/18
64. ASP.NET RazorRazor je tzv. viewengine, schopný pracovat v kombinaci s MVC nebo Web FormsHodí se pro jednodušší aplikace (quick&win vývoj, prototypy), lze jej použít samostatněRychlá křivka učeníRazor + WebMatrix (vývojové prostředí) + SQL Server CompactEdition 4.0 (databáze) –> start pro úplné začátečníky (aspoň podle představ Microsoftu)Výhodou je možnost vývoje aplikací pro různé platformy (web, desktop, mobily, xbox…)Je to trochu divočina, jako základní PHP Bere už v úvahu validaci uživatelských vstupů a parametrizované dotazy do databázehttp://zdrojak.root.cz/clanky/microsofti-lizatka-pro-zacatecniky-sance-pro-boj-s-php-nebo-krok-zpet/http://zdrojak.root.cz/clanky/podrizne-razor-php/19
75. Vyrovnávací paměť (buffer), CacheVyrovnávací paměť (buffer)ASP.NET stránky mají implicitně zapnuté využití vyrovnávací paměti (bufferu) při sestavování výstupu.Buffer lze vypnout pomocí příkazu response.buffer = falseCachePoužití kešování (cache) je vhodné při opakovaných požadavcích na konkrétní stránkuCache je možné nastavit procelou stránku (podle parametrů, jazyka, prohlížeče apod.),část stránky (šetří čas nutný pro získání dat),rozšiřitelný objekt Cache (Cache API) – možnost uložení libovolného objektu.Flexibilní politiky pro expiraci, možnost invalidacecache při změně souboru apod.21
76. Validátory, implicitní validaceOvěření syntaxe zadaných datna straně klienta (rychlost, pohodlí),na straně serveru (bezpečnost).Různé možnosti zobrazení chybyValidátory je možné dle potřeby sdružovat do skupinRůzné typy validaceRequiredFieldValidator,CompareValidator,RangeValidator,RegularExpressionValidator,CustomValidator.V ASP.NET je možné automaticky zkontrolovat vstupní data od uživatele (od verze 1.1 implicitně povoleno) před jejich zpracováním22<%@ Page validateRequest="true" language="c#" ...
87. Konfigurace ASP.NET aplikacíJe uložena ve formátu XML do souboru web.config v adresáři v *.aspxstránkamiObsahuje všechna nastavení ASP.NET (autentizace, kompilace, trasování, ladění, chybové stránky, moduly, handlery, …)Jakékoliv uživatelské nastavení je možné definovat v sekci <appSettings>, která je rozšiřitelná – je možné přidávat vlastní sekce datJe možné využít více web.config souborů v jedné aplikaci, podle adresářové struktury (1 adresář = 1 web.config)V souboru machine.config (v adresáři s instalovaným frameworkem) jsou nastaveny parametry pro celý web server24
88. Nasazení ASP.NET aplikace do provozuStačí zkopírovat na určené místoOdpadá nutnost registrace komponent,Odpadá nutnost restartu služeb/serveru.Podpora pro všechny součástiWeb stránky, web služby,Zkompilované komponenty (DLL),Konfigurační soubory.Aktualizace aplikací je možná za provozuNakopírujte nové DLL na místo původního,Aplikace použijí nové DLL počínaje příštím klientským požadavkem.25
99. HTTP moduly, HTTP handleryKromě klasických *.aspx stránek je možné psát webové aplikace na nižší úrovni (HTTP moduly a HTTP handlery) a s jejich pomocí vyřizovat některé požadavky na serveruNěkteré HTTP moduly, např.OutputCache,Načítání a ukládání Session stavu,Autentizace,Autorizace.HTTP moduly je možné skládat na sebe, mohou rozšířit nebo přepsat prakticky všechny činnosti, které při běhu .NET aplikace nastávajíHTTP handler je vždy na konci, provádí vlastní zpracování (např. *.aspx souborů, načítání obrázků z databáze apod.) požadavku27
100. Zpracování požadavku v ASP.NET28Web server (IIS, …)ASP.NET runtimeGlobal.asaxAplikaceHTTP modulHTTP modulHTTP handler(Web form)HTTP handlerHTTP handler(Web services)
111. Vývojové nástroje pro ASP.NETVisual Studio .NET 2010ASP.NET 4.0 s řadou vylepšení (např. AJAX, LINQ, Entity Frm, MVC)Komplexní nástroj v různých verzích, určený pro vývoj, testování a řízení celých projektůExpress edice k dispozici zdarmaSQL Server Express – prakticky použitelný pro menší webové aplikaceVisual Web Developer Express si můžete stáhnout na adrese…http://www.microsoft.com/express/Web/Microsoft WebMatrixJednoduchý nástroj pro tvorbu webůOptimalizovaný pro Razorhttp://www.asp.net/webmatrixOstatníhttp://monodevelop.com/ (MonoDevelop)http://www.icsharpcode.net/OpenSource/SD/ (SharpDevelop)30
122. Odkazy na Internetuhttp://www.asp.net/Default.aspx (Oficiální web pro ASP.NET)http://msdn.microsoft.com/en-us/library/dd566231.aspx (ASP.NET web development)http://www.codeproject.com/ (příklady, zdrojové kódy)http://msdn2.microsoft.com/en-us/default.aspx (MSDN)http://en.wikipedia.org/wiki/ASP.NEThttp://quickstarts.asp.net/previews/ (MVC a spol.)http://blogs.msdn.com/vyvojari/archive/2009/10/04/zrychlete-v-voj-web-aplikac-s-toolkity.aspx32
123. Doporučená literaturaPísek, Slavoj – ASP.NET začínáme programovat, Grada 2003 MacDonald, Matthew; Szpuszta, Mario – ASP.NET 3.5 a C# 2008, ZonerPress 2008Watson, Ben – C# 4.0 – řešení praktických programátorských úloh, ZonerPress 2010 Esposito, Dino – Programming Microsoft ASP.NET MVC, Microsoft Press 201033