Programování v prostředí.net



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

Tvorba informačních systémů

Tvorba informačních systémů

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

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

Formuláře. Internetové publikování. Formuláře - příklad

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

17. července :51 z moravec@yahoo.com

1 Webový server, instalace PHP a MySQL 13

Michal Augustýn Microsoft Most Valuable Professional

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

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

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

1. Webový server, instalace PHP a MySQL 13

Instalace a konfigurace web serveru. WA1 Martin Klíma

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

Microsoft ASP.NET 2.0/3.0 (advanced)

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

Tvorba informačních systémů

Formuláře. Internetové publikování

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

APS Web Panel. Rozšiřující webový modul pro APS Administrator. Webové rozhraní pro vybrané funkce programového balíku APS Administrator

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11

Koláčky, sezení. Martin Klíma

Vazba ESO9 na MS Outlook a MS Exchange

Michal Krátký, Miroslav Beneš

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

Informační systém pro e-learning manuál

Michal Augustýn ALWIL Software Microsoft Most Valuable Professional

Informační systémy 2008/2009. Radim Farana. Obsah. Aktivní serverové stránky ASP. Active Server Pages. Activex Data Objects. LDAP database.

Internet Information Services (IIS) 6.0

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

PREPROCESOR POKRAČOVÁNÍ

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

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

APS Administrator.OP

APS Administrator.ST

NSWI096 - INTERNET JavaScript

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

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í

Zabezpečení proti SQL injection

Šifrování Autentizace Bezpečnostní slabiny. Bezpečnost. Lenka Kosková Třísková, NTI TUL. 22. března 2013

SIMATIC S IT. Micro Automation. Promoters Meeting October Představení CP IT SPIDER CONTROL TELESERVIS. TESTOVACÍ server.

Artlingua Translation API

Generické programování

Internet cvičení. ZS 2009/10, Cvičení 4., PHP. Tomáš Pop. DISTRIBUTED SYSTEMS RESEARCH GROUP

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

DUM 14 téma: Interakce s uživatelem

PŘÍRUČKA SÍŤOVÝCH APLIKACÍ

Rezervační systém Tvorba WWW stránek

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

Úvod do tvorby internetových aplikací

INFORMAČNÍ SYSTÉMY NA WEBU

Střední odborná škola a Střední odborné učiliště, Hořovice

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

1 Administrace systému Moduly Skupiny atributů Atributy Hodnoty atributů... 4

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

Aplikační vrstva. Úvod do Php. Ing. Martin Dostal

PŘETĚŽOVÁNÍ OPERÁTORŮ

Příloha 6. Palety nástrojů

Novinky ve Visual Studio Tomáš Kroupa

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Java a XML. 10/26/09 1/7 Java a XML

Sada 1 - PHP. 09. Formuláře

Zabezpečení proti SQL injection

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

zapište obslužnou metodu události Click tlačítka a vyzkoušejte chování polevýsledek.text = polečíslo1.text + polečíslo2.text;

Web. Získání informace z internetu Grafické zobrazení dat a jejich struktura Rozšíření funkcí pomocí serveru Rozšíření funkcí pomocí prohlížeče

Nastavení DCOM. Uživatelský manuál

Vytváření a použití knihoven tříd

KIV/PIA Semestrální práce

KIV/PIA 2013 Jan Tichava

Jak efektivně ochránit Informix?

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

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

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

20. Projekt Domácí mediotéka

Semestrální práce 2 znakový strom

Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5

Jazyk C# (seminář 3)

M4 PDF rozšíření. Modul pro PrestaShop.

Střední odborná škola a Střední odborné učiliště, Hořovice

Přechod na Firebird 3. Popis migrační utility

People Counter v2. Ver. 2.0

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Versiondog Lukáš Rejfek, Pantek (CS) s.r.o. 7/2014

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

MS SQL Server 2008 Management Studio Tutoriál

1. Administrace služby Bezpečný Internet přes webovou aplikaci WebCare GTS

1. DATOVÉ SCHRÁNKY OBECNÝ PŘÍSTUP K DATOVÉ SCHRÁNCE DATOVÉ ZPRÁVY... 3

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

STŘEDNÍ ŠKOLA INFORMAČNÍCH TECHNOLOGIÍ A SOCIÁLNÍ PÉČE

JavaScript 101. "Trocha života do statických stránek"

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

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

elan-rs485/ /2017 / rev.0 Strana 1 z 19

Internet cvičení. ZS 2009/10, Cvičení 3., Tomáš Pop. DISTRIBUTED SYSTEMS RESEARCH GROUP

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

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

Transkript:

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

Obsah přednášky Dynamický web ASP.NET ASP.NET třídy Kontrolky Validace Stavy Bezpečnost 2 / 50

Dynamický web Stránka vytvořena programově na straně serveru poté odeslána klientovi Webové aplikace lehcí klienti většinu práce oddře server data driven web web řízený daty napojení na databáze 3 / 50

Webové aplikace Přístup k datům je vzdálený neznámý čas - záleží na mnoha faktorech fyzická vzdálenost od serveru kvalita sítě denní doba Přístup k datům je hromadný v jednu chvíli může k datům přistupovat mnoho uživatelů zajištění konzistence dat Přístup k datům je různorodý různí weboví klienti různé operační systémy různé HW platformy 4 / 50

Požadavek a odezva Request, Response Přístup k aplikaci probíhá pomocí webového prohlížeče požadavky předány pomocí HTTP HyperText Transfer Protocol Aplikace je spuštena na webovém serveru server přijme požadavek a rozhodne, která aplikace bude zodpovědná za odezvu Odezva odeslána ke klientovi opět prostřednictvím HTTP obsah je většinou HTML stránka HyperText Markup Language 5 / 50

HTTP Nezachovává připojení každý požadavek a odezva je izolovaný packet Problém s udržením stavu aplikace např. nákupní košík Není jednoznačné řešení ukládání informace na straně serveru pro velké servery může být paměťově velmi náročné není zaručeno (a většinou to tak ani není), že se klient odpojí nějak regulérně ukládání na straně klienta cookies musí se posílat s každým požadavkem musí být limitovaná velikost klient je může mít zakázané 6 / 50

Systémy pro tvorbu dynamických webů Rychlost vývoje dostupné knihovny a znovuvyužití kódu Výkonnost interpretované x kompilované Přehlednost míchání html a kódu Nástroje debuggery, profilery,... Skalabilita snadnost přenesení na web farmy Znalost jazyka... 7 / 50

Systémy pro tvorbu dynamických webů PHP Perl JSP ASP ASP.NET... 8 / 50

ASP.NET Server má k dispozici.net class library Stránka se kompiluje popis se přeloží do assembly při prvním spuštění prodleva, pak už rychlé Možnost separace kódu a vzhledu stránky code-behind dva oddělené soubory Možnost použití standardních nástrojů např. MSVS, včetně debuggeru... Možnost použít libovolný jazyk který má podporu.net 9 / 50

ASP.NET Uchovaní stavu cookies (klient) specialní služba ASP.NET State Service (server) SQL Server DB (server) Web kontrolky podobně jako kontrolky na winformech unifikace kontrolek množství předdefinovaných kontrolek možnost vytváření uživatelských kontrolek 10 / 50

Příklad <%@ Page language ="C#" %> <html > <head > < script runat =" server "> DateTime Now () { return DateTime. Now ; } </ script > </ head > <body > <h1 >Ahoj světe </h1 > <p>teď je: <% Response. Write ( Now (). ToString ());% > </p> </ body > </ html > 11 / 50

ASPX soubor Direktivy <%@ direktiva atributy %> Page Import ekvivalent using (zahrnuje NameSpace) Serverové kontrolky elementy s atributem runat=server Serverové skripty HTML script element s atributem runat=server 12 / 50

Code behind Oddělení kódu a designu stránek zvyšuje přehlednost Kód stránky lze uložit do separátního souboru Překladem projektu vznikne assembly, která se umístí do adresáře bin Stránka dědí od stránky Inherits ze souboru CodeFile <?@ Page language =C# CodeFile =" stranka. cs" Inherits =" stranka "?> 13 / 50

Příklad WebForm1.aspx <%@ Page language ="c#" CodeFile =" WebForm1. aspx.cs" Inherits =" WebForm1 " % > <html > <body > <h1 >Ahoj světe </h1 > <p>teď je: <input type =" Text " id=" Cas " runat =" server " value =" moc hodin "> </p> </ body > </ html > WebForm1.aspx.cs... public class WebForm1 : System. Web. UI. Page { private void Page_ Load ( object sender, System. EventArgs e) { Cas. Value = DateTime. Now. ToString (); }... } 14 / 50

System.Web.UI.Page Reprezentuje.ASPX soubor (Web Form) Soubor.ASPX se naparsuje, přeloží do potomka Page a uloží do assembly Je-li použit code-behind, dědí se od této třídy 15 / 50

Co se děje při generování Bloky skriptu s atributem runat= server se vloží přímo do definice třídy < script runat =" server "> DateTime Now () { return DateTime. Now ; } </ script > Každá serverová kontrolka se přidá do třídy jako atribut příslušného typu <asp : Label id=" Label1 " runat =" server ">Lable1 </ asp : Label > Bloky <% %> se vloží spolu s HTML do metody, která se volá při renderování stránky Teď je: <% Response. Write ( Now (). ToString ());% > 16 / 50

Události Init v okamžiku inicializace kontolky na začátku Load když je kontrolka nahrána do objektu Page stále začátek nedošlo ke zpracování událostí PreRender po obsluze událostí před vykreslením stránky Unload po vykreslení stránky před uvolněním z paměti 17 / 50

System.Web.HttpContext Zapouzdřuje všechny informace o jednom požadavku HttpRequest Request HttpResponse Response HttpApplicationState Application HttpSessionState Session... Snadno přístupná vlastnost Context 18 / 50

System.Web.HttpApplication Slučuje metody, vlastnosti a události, které jsou společné pro celou aplikaci Umožňuje změnit chování aplikace Lze oddědit Global.asax Application_Start Session_Start Application_BeginRequest... 19 / 50

Web formuláře Formuláře jsou jednou z možností, jak na stránky umístit aktivní obsah (tlačítka, textboxy,...) Příklad <%@ Page language ="C#" %> <html > < script runat =" server " > void Page_Load () { text2. Value = text1. Value ; text1. Value = DateTime. Now. ToString (); } </ script > <body > <form runat =" server " > <h1 >Ahoj světe </h1 > Teď je : <input type =" text " id=" text1 " runat =" server " ><br/ > Předtím bylo : <input type =" text " id=" text2 " runat =" server " ><br/ > <input type =" submit " runat =" server " ID=" Submit1 " NAME =" Submit1 "> </ form > </ body > </ html > 20 / 50

Kontrolky Elementy označené atributem runat="server" existují i na serveru serverové kontrolky Každá kontrolka je na serveru reprezentovaná proměnnou název lze určit atributem ID Atribut runat="server" lze nastavit pro každý html element příklad... h1. Attributes. Add (" style "," color : red ");... <h1 runat =" server " id="h1">ahoj světe </h1 > 21 / 50

HTML kontrolky Reprezentují HTML elementy označené atributem runat="server" Ke každému elementu vytvořen v.netu datový typ těsně kopíruje vlastnosti elementu těsně kopíruje interface elementu Problém s přístupem k takovýmto objektům vytvoření jednotného přístupu Web kontrolky 22 / 50

Web kontrolky Ucelenější hierarchie kontrolek Jednotné rozhraní Systém vázání dat Kontrolky se renderují jako jeden či více html elementů uživatel je odstíněn Možnost vytvářet vlastní kontrolky Existence několika složitějších kontrolek Calendar DataGrid DataList 23 / 50

Příklad Zdroják <%@ Page language ="C#" %> <html > < script runat =" server " > void Page_Load () { text2. Text = text1. Text ; text1. Text = DateTime. Now. ToString (); } </ script > <body > <form id=" Form1 " method =" post " runat =" server "> <h1 >Ahoj světe </h1 > Teď je : <asp : Label id=" text1 " runat =" server " ></ asp : Label > <br/> Předtím bylo : <asp : Label id=" text2 " runat =" server " ></ asp : Label ><br/> <asp : Button Text =" Obnov " runat =" server " ID=" Button1 "></ asp : Button > </ form > </ body > </ html > 24 / 50

Příklad HTML výstup <html > <body > <form name =" Form1 " method =" post " action =" index1. aspx " id=" Form1 "> <input type =" hidden " name =" VIEWSTATE " value =" ddwtmtyp... " <h1 >Ahoj světe </h1 > Teď je: <span id=" text1 ">20.11.2005 23:42:50 </ span ><br/> Předtím bylo : <span id=" text2 ">20.11.2005 23:36:33 </ span ><br/> <input type =" submit " name =" _ctl0 " value =" Obnov "/> <input type =" hidden " name =" EVENTVALIDATION " value ="/ wew.. </ form > </ body > </ html > 25 / 50

Web formuláře Kontrolky na formuláři označené atributem runat="server" HTML kontrolky těsně kopírují rozhraní dané HTML specifikací příklad <input type =" text " runat =" server "></ input > Web kontrolky unifikované rozhraní pro práci s web formuláři příklad <asp : TextBox runat =" server "></ asp : TextBox > 26 / 50

Uživatelské kontrolky Jednoduchá kontrolka oddědit od Control nebo WebControl přidat data a logiku kontrolky překrýt metodu Render zkompilovat do assembly nakopírovat assembly do adresáře bin zaregistrovat kontrolku <%@ Register TagPrefix =" Custom " Namespace =" CustomControls " Assembly = " CustomControls " % > 27 / 50

Uživatelské kontrolky Komponované kontrolky celá stránka lze převést na kontrolku odstranit elementy form, body, head, html změnit @Page na @Control změnit příponu na.ascx při použití code-behind dědit od UserControl 28 / 50

Validace na straně serveru Událost se provede teprve po odeslání stránky zpět na server Možnost nastavit vlastnost AutoPostBack, odeslání na server se provede automaticky při změně textu Po odeslání na server provést validaci a případné chyby odeslat zpět klientovi Vhodné pro složité kontroly porovnání proti DB Nevhodné pro jednoduché kontroly zbytečné zatížení spojení 29 / 50

Validace na straně klienta Použití validátorů RequiredFieldValidator požaduje vyplněný text CompareValidator porovnání vůči konstantě Operace Equal, NotEqual,... RangeValidator kontroluje rozsah vstupu RegularExpressionValidator porovnává s regulárním výrazem CustomValidator libovolná obsluha validace vlasnost IsValid 30 / 50

Validace na straně klienta Vlastnosti validátorů ControlToValidate nastavení vstupní kontrolky, která se má validovat ErrorMessage zpráva, která se má zobrazit při chybě EnableClientScript pokusit se o validaci na straně klienta Funkce validátorů validace na straně klienta proběhne pouze v případě že je nastaven EnableClientScript klient podporuje DHTML v opačném případě probíhá validace na serveru 31 / 50

Validace na straně klienta ValidationSummary možnost zobrazit chyby z validátorů na jednom místě vše se nastavuje automaticky možnost zobrazit text nebo dialog u validátorů vhodné nastavit Text na * a umístit je k odpovídajícím kontrolkám zobrazení se provede až po stisku tlačítka, nemusí dojít k odeslání na server 32 / 50

Stavy Důležité pro dynamiku stránek Umožňuje zásah uživatele do aplikace V ASP.NET následující kategorie stavů stav aplikace (application state) stav relace (session state) stav zobrazení (view state) stav koláčků (cookie state) 33 / 50

Stavy Stav je informace, která přetrvává Obvykle je informace složena z názvu (klíče) a hodnoty Např. CenaZboží = 300 VybranáLokalita = České Budějovice Login = Superuživatel 34 / 50

Stav aplikace Týká se celé aplikace (všech stránek, které jsou součástí projektu) Vytvoří se v okamžiku připojení prvního uživatele, přežívá dokud není služba zastavena či restartována Vhodné pro malá data často používaná data stabilní data 35 / 50

Stav aplikace Možnost získat stav z HttpApplicationState Application K jednotlivým položkám možno přistupovat pomocí stringového indexeru Příklad this. Application [" LibovolnyObjekt "] = new LibovolnyObjekt ; LibovolnyObjekt o = ( LibovolnyObjekt ) this. Application [" LibovolnyObjekt "]; 36 / 50

Stav aplikace Nutnost řešit přístupové konflikty (stav společný pro všechny uživatele) Může způsobit nekonzistenci dat Možnost/nutnost uzamknout přístup k proměnným Application.Lock() čeká, dokud si neuzme aplikaci pro sebe Application.UnLock() uvolní aplikaci pro další zájemce (nezapomenout zavolat!) 37 / 50

Stav relace Komunikace serveru s jedním uživatelem v jednom prohlížeči ASP.NET řeší do velké míry automaticky Při zahájení relace se vygeneruje session ID, které se předává mezi serverem a klientem jako cookies musí být povoleno v prohlížeči jako část adresy funguje jen pro relativní adresy http://localhost/aplikace/ (es5kdprrks1m3l55yqyvqw45)/webform1.aspx Nutno nastavit v souboru web.config <sessionstate cookieless="true"> 38 / 50

Stav relace Možnost získat z HttpSessionState Session Indexery string int Vlastnosti bool IsCookieless jak se předává (cookie/adresa) bool IsNewSession nová relace int Timeout (v minutách) jak dlouho má být relace platná při neaktivitě 39 / 50

Stav relace Ne každá stránka potřebuje posílat relaci Možnost nastavit přístup k relaci Atribut EnableSessionState direktivy Page <\%@ Page EnableSessionState=... True čtení i zápis (výchozí hodnota) Readonly pouze čtení False nenačte se, nelze ani zapsat Stav relace je možno ukládat i mimo proces serveru State service SQL server 40 / 50

Stav zobrazení ViewState Týká se jen po sobě jdoucích požadavků na tutéž stránku Obsahuje stavové informace všech kontrolek na stránce Realizováno jako skrytá položka formuláře name=" VIEWSTATE" value="ddwtmtm1... 41 / 50

Koláčkový stav Cookie state Cookie je technika pro uchování stavu Není standardizovaná Cookie (koláček) dvojice název, hodnota Přenáší se s každým požadavkem Je možné koláčky přidávat Chová se podobně jako session state 42 / 50

Koláčkový stav Možnost získat HttpCookieCollection Request.Cookies Indexery int string Ukládá jen stringy! Příklad string s = Request.Cookies["barva"].Value; 43 / 50

Koláčkový stav Přidání koláčku třída HttpCookie string Name string Value DateTime Expires Přidání do kolekce Response.Cookies 44 / 50

Bezpečnost Uživatel by se měl přesvědčit o identitě serveru Server by se měl přesvědčit o identitě uživatele zkontrolovat identitu uživatelů Authentication přidělit uživatelům práva Authorization 45 / 50

Bezpečnost Správce webu autorizuje uživatele Uživatelé se autentikují vytvoří se autentikační koláček okolnosti vytvoření určuje autor webu většinou na základě jména a hesla hodnota koláčku by neměla být triviální šifrování 46 / 50

Konfigurace < authentication mode =" Forms " > <forms loginurl = " login. aspx "> < credentials passwordformat =" Clear " > <user name =" admin " password =" adminovoheslo "/> </ credentials > </ forms > </ authentication > < authorization > <allow users =" admin " /> <deny users ="*" /> </ authorization > 47 / 50

Třída FormsAuthentication HttpCookie GetAuthCookie(string, bool) chci ověřit uživatele, ověření má přetrvat i po ukončení prohlížeče void RedirectFromLoginPage(string, bool) uživatel byl úspěšně ověřen, ověření ma přetrvat void SignOut() odhlášení uživatele string HashPasswordForStoringInConfigFile(string,string) vytvoří hashované heslo metody MD5, SHA1 48 / 50

Příklad <html > < script language ="C#" runat =" server "> void Login_ Click ( Object sender, EventArgs e) { if ( FormsAuthentication. Authenticate ( username. Text, password. Text )) FormsAuthentication. RedirectFromLoginPage ( username. Text, false ); } </ script > <body > <form runat =" server "> Jméno : <asp : textbox id= username runat =" Server "/><br/> Heslo : < asp : textbox id = password textmode = Password runat =" Server "/><br/> <asp : button id= button onclick =" Login_Click " text =" Login " runat =" Server "/> </ form > </ body > </ html > 49 / 50

Konec 50 / 50