ASP NET TNPW 2 Ing Ji tpnek Obsah
ASP. NET TNPW 2 Ing. Jiří Štěpánek
Obsah přednášky • Historie ASP. NET • Web. Forms • MVC • Přidružené technologie • Doporučená literatura
ASP • Active Server Pages • Skriptovací platforma (obdoba čistého PHP) • Od roku 1996 • VBScript a JScript <% For i = 1 To 6 Step 1 Response. Write "<h" & i & ">Nadpis velikosti " & i & "</h" & i & ">" Next %> <h 1>Nadpis <h 2>Nadpis <h 3>Nadpis <h 4>Nadpis <h 5>Nadpis <h 6>Nadpis velikosti velikosti 1</h 1> 2</h 2> 3</h 3> 4</h 4> 5</h 5> 6</h 6>
. NET • Platforma společnosti Microsoft • Runtime pro spouštění aplikací • Sada knihoven • Vývojové nástroje • Neustále se vyvíjející • První verze 1. 0 (2002) • Poslední verze 4. 7. 1 (říjen 2017) • Poskytuje možnosti vývoje • Webových aplikací • Klasických desktopových aplikací (Win. Forms, WPF) • Mobilních aplikací
ASP. NET • Součást platformy. net • Framework pro vývoj webových aplikací • Možnost programování ve více jazycích • Dostupnost celého. net frameworku • Lze využít jakékoli funkcionality, kterou poskytuje celý. net framework a není nutné se omezovat pouze na podmnožinu asp. net (kryptografie, grafika, práce se souborovými formáty, ORM, DI) • Dvě hlavní větve vývoje WA • Web. Forms (Na pozadí, ustupuje se od něj) • MVC • . NET Core jako multiplatformní řešení • Součástí je i asp. net core
Web. Forms • ASP. NET stránka je ve své podstatě instance třídy (objekt). • . aspx stránka • (X)HTML kód • Serverové komponenty – spustí se vždy na straně serveru, jejich výstupem je (X)HTML kód. Například komponenta Grid. View načte data z datového zdroje a vykreslí na své místo příslušnou tabulku • Codebehind • Každá. aspx stránka má „za sebou“ programový kód, který řídí její chod. Codebehind vidí na serverové komponenty a může s nimi pracovat – na principu událostí (např. Page_Load při načtení stránky).
Web. Forms • . aspx stránka je sama o sobě tvořena html kódem, do kterého jsou vkládány serverové komponenty. • . aspx. cs je codebehind – tedy kód na pozadí, který řídí jednotlivé události na stránce a může pracovat s komponentami. . cs je přípona zdrojového kódu psaného v jazyce C#, pro visual basic by to bylo. vb • . aspx. designer. cs je automaticky generovaný designerem visual studia. V tomto souboru jsou deklarovány jednotlivé serverové komponenty a události, které byly vytvořeny v režimu návrhu stránky.
Web. Forms • Knihovna visuálních komponent (serverové komponenty), které slouží k usnadnění sběru a prezentace informací • Princip fungování je podobný jako u klasických okenních aplikací napsaných na platformě. net – akce uživatele vyvolá událost, na kterou je třeba programově reagovat. • Lineární procesní model (PHP) – stránka je zpracovávána od začátku kódu až do konce • Událostní model zpracovává události vyvolané na stránce • View. State mechanismus pro zachování persistence webového formuláře
Web. Forms – serverové komponenty
Web. Forms - výhody • Snadný vývoj přetahováním komponent z toolboxu • Komponenty pokrývají většinu často řešených programátorských úloh • Zobrazovací komponenty (Grid. View, List. View, Panel, Calendar…) • Ovládací prvky (Text. Box, Radio. Button, Check. Box…) • Validační komponenty • Mnoho dalšího • View. State automaticky zajišťuje setrvání vyplněných dat ve formuláři • Velice podobný vývoj jako u klasických desktopových aplikací (Win. Forms)
Web. Forms - nevýhody • View. State znamená enormně velký datový přenos • Životní cyklus stránky (událostní model) může být dosti komplikovaný • Malá míra separace prezenční a aplikační vrstvy. Jednotlivé komponenty jsou provázány s codebehind kódem. • Nízká kontrola nad HTML výstupem aplikace • Jen malá možnost zasahovat do aplikace na nižší úrovni (HTML, HTTP) • Nemožnost snadného testování • Vysoká provázanost vrstev • Komplikované nebo až nemožné jednotkové testy
ASP. NET MVC • Architektonicky dělí webovou aplikaci na 3 nezávislé části • Jednotlivé části mají minimální provázanost • Snadná testovatelnost • View engine (aspx / razor / další…) • Absolutní kontrola nad generovaným klientským kódem (HTML, CSS, JS), minifikace, bundling • Snadná rozšiřitelnost frameworku • Zabudovaný systém routování URL • Moderní rozhraní podporující nejnovější api (asynchronní operace, LINQ, lamda výrazy) • Open. Source
ASP. NET MVC
Model • Doménové třídy aplikace (business entity) • Persistentní logika (ukládání/načítání dat z úložiště) • Metadata (atributy jednotlivých tříd, vlastností a metod, které jsou brány v potaz při práci s modelovými třídami. Např. validační atributy)
View • Zobrazení dat • Nezávislé na zbytku komponent • View dostane data, která zobrazí podle šablony (aspx/razor / …) • Nepřítomnost klasických Web. Forms komponent jako Text. Box, Grid. View atd. • Plná kontola nad generovaným kódem • Možnost provázat html prvky s property modelové třídy • Možnost tvořit View založené na modelové třídě (strongly typed view)
Controller • Přijímá HTTP požadavky • Na základě routovacích pravidel volá příslušnou metodu třídy (controlleru) • Metoda v sobě zapouzdřuje logiku pro danou akci (např. zobrazení formuláře pro editaci položky košíku) – načtení dat o položce, uživateli, jeho objednávce atd… • Data jsou předána View (typově nebo pomocí View. Bag) • Dědí od třídy Controller, flexibilita celého mechanismu (možnost vytvářet vlastní předky s předpřipravenou funkcionalitou) např. při: • Automatickém vytváření instancí potřebných tříd • Vytváření mechanismu pro podporu vícejazyčnosti • Zabezpečení / přístupová práva
Routing • Mapování jednotlivých komponent URL na controllery a jejich akce • Určuje třídu controlleru, jehož instance se bude vytvářet a jeho metodu, která se bude volat v závislosti na URL • Řeší i jednotlivé parametry v URL • Pokročilejší konfigurace (povinné/nepovinné parametry, agragace zbytku URL do jediného parametru atd. . • Routování je možné libovolně konfigurovat v aplikačním kódu • Libovolné množství routovacích map a jejich konfigurací • Možnost konfigurovat routování také pomocí atributů na třídě / metodě controlleru
Routing
Metody controlleru - akce • • Volání příslušné metody podle routovacích pravidel Automatické mapování parametrů v URL na argumenty volané metody Atributy [Http. Post] a [Http. Get] pro restrikci přístupu … mnoho dalšího
View. Engine • Mechanismus, který vytváří a zpracovává pohledy • Implementuje IView. Engine • Lze vytvořit vlastní implementaci View. Engine • Existuje mnoho dostupných View. Enginů pro asp. net MVC • Typicky se využívá Razor, který je implicitně součástí asp. net MVC • Změna na jiný View. Engine může a nemusí být výhodná • Zvyklosti • Projektová specifika • Spolupráce s dalšími technologiemi
Razor view engine
Data. Annotations • Knihovna poskytující datové atributy pro vytváření modelových metadat • Typicky použitelné při validaci nebo jiném zpracování instancí dané třídy • Popis na úrovni modelu zajišťuje konzistenci • Instance třídy je zpracovávána (validována) vždy pomocí stejných pravidel • Na rozdíl od validace na úrovni metody • Data. Annotations poskytují rozsáhlou škálu možností pokrývající drtivou většinu programátorských potřeb • Mimo klasických restrikcí (délka textu, email, požadované pole…) obsahuje např Remote. Validation, která v MVC zajistí AJAXové volání a validaci na pozadí (kontrola existujícího uživatelského jména…. ) • Rozšiřitelné • Možnost napsat vlastní anotaci (validátor)
Data. Annotations
Validace – Pohled (Rozor) • Nutné nalinkování potřebných JS knihoven • V zásadě nulová konfigurace • Použití připravených metod pro zobrazení validačních výsledků • Funguje na straně serveru, na straně klienta je zajištěna kontrola ještě před odesláním formuláře (aby se zamezilo zbytečné kontrole na straně serveru – zbytečný request)
AJAX Helpers • Součást MVC frameworku • Zapouzdřuje AJAXové operace • Jednoduchá konfigurace • Definice volaných JS fukcí před / po vykonání dotazu • Definice obsahového kontejneru • Automatický fallback, pokud dojde k problému • Velice snadno integrovatelné a použitelné
AJAX Helpers
Web. API • Rozhraní pro jednoduchou tvorbu HTTP služeb, které mohou být využívány širokým spektrem klientů • Webové aplikace • Mobilní aplikace • Desktopové aplikace apod. • Princip je stejný jako u klasického MVC Controlleru (routování, volání metod a podobně) • Nepředávají data zobrazovacímu pohledu, ale k dalšímu zpracování • Single page aplikace • Zpracování JS / Tlustý klient
Web. API - Api. Controller
Web. API – klientská část
Signal. R • Framework od MS implementující a zapouzdřující real-time funkcionalitu na straně serveru i v klientské části • Automatické přepínání technologií (polling / long polling / websocket) podle jejich dostupnosti • Jakmile je dostupný Web. Socket, použije se. Ostatní varianty pouze obcházejí případnou absenci podpory této technologie • Unifikované programátorské rozhraní • Server-side events • Persistent. Connection / Connection. Hub • Základní třídy pro práci • Dynamicky generovaný Java. Script pro klientskou část, využití datového typu dynamic na straně aplikace • Možnost využít v jakémkoli typu aplikace • Live. Demo např. http: //drawsignal. azurewebsites. net/
ASP. NET MVC Potřebné nástroje / techniky • ORM • Dependency Injection • Unit Testy • Mocking • Bundling
Konec prezentace Otázky / Připomínky
- Slides: 32