Lekce 1 - Úvod do ASP.NET
Vítejte v 1. lekci kurzu o tvorbě webových stránek pomocí technologie ASP.NET. Dnes si technologii představíme a vysvětlíme si její základní principy.
ASP.NET je webový framework, stručně řečeno se jedná o sadu knihoven, které umožňují tvorbu webových aplikací v jazyce C#. Knihovny obsahují hotová řešení mnoha základních problémů, které ve webových technologiích vyvstávají. To jsou např. bezpečnost, autentifikaci uživatele, práci s databází, správu formulářů a podobně. ASP tedy není programovací jazyk, programovat budeme v C# a budete tedy potřebovat základní znalosti tohoto jazyka. Programovat se dá teoreticky i ve Visual Basicu, ale skoro nikdo to nedělá Pokud nemáte znalosti C#, nic se neděje, začátečnické tutoriály naleznete v sekci C# .NET a poté se sem můžete vrátit. Dále je potřeba alespoň základní znalost HTML, tu opět získáte pročtením několika HTML tutoriálů. Protože webové aplikace jsou stále více populární a nahrazují aplikace desktopové, ve většině firem chtějí po C# programátorech znalost i frameworku ASP.NET. Určitě se vyplatí o této technologii něco vědět.
Co vše se dá v ASP.NET vytvořit?
Úplně vše. ASP.NET je vhodné jak pro malé osobní weby, tak pro velké projekty, ať už korporátní nebo např. webové portály. Jako technologie je minoritní a to samozřejmě z důvodu licence. Ačkoli webové stránky můžete tvořit ve free edici Visual Studia, webhostingů podporujících ASP.NET není mnoho a to hlavně těch zadarmo. Když vezmeme všechny webové aplikace a porovnáme, kolik z nich běží na ASP.NET a kolik třeba na konkurenčním PHP, které je otevřenou technologií, nebude to velké číslo. Pokud ovšem vezmeme v potaz pouze velké projekty, jako jsou např. stackoverflow nebo w3schools, běží jich na ASP.NET poměrně dost. Oblíbené je též v korporátní sféře.
Základní principy ASP.NET
Technologie je založena na architektuře klient-server. Aplikace v ASP.NET je tedy program, jehož výstupem je HTML stránka. ASP.NET běží na straně serveru. Abychom lépe pochopili, jak ASP.NET funguje, ukažme si nejprve obyčejný statický web.
Statický web (bez ASP.NET)
Takový web jste určitě již někde viděli, HTML stránky jsou jednoduše uložené na serveru. Jakmile klient (uživatel s prohlížečem) pošle požadavek na server, server mu jednoduše vrátí přesně ty stránky, co má uložené.
Graficky vypadá komunikace asi nějak takto:
Dynamický web (s ASP.NET)
Statický web se těžko spravuje a má velká omezení. Proto začaly vznikat serverové jazyky, které umožňují HTML stránku ještě pozměnit předtím, než je klientovi odeslána. Lze tak vytvořit aktivní prvky, jako např. diskuzní fóra, přihlašování uživatelů, nahrávání obsahu pomocí editoru a podobně.
ASP.NET tedy běží na serveru, na základě požadavků od
klienta vygeneruje webovou stránku a pošle ji klientovi. Ten vidí už jenom
výsledné HTML, ve kterém není po ASP.NET ani památky (tedy kromě toho, že
stránka má koncovku .aspx
a ne .html
).
Graficky by situace vypadala takto:
Mezi C# a konkurenčním PHP jsou obrovské rozdíly. Zatímco PHP je dynamický jazyk, C# je silně typovaný. Jak se ukázalo, tak takový jazyk může být výhodný i pro web, ale pokud přecházíte z PHP, může to být nezvyklé. Velkou výhodou je možnost použití .NET frameworku, který se na serveru hodí, protože obsahuje mnoho užitečných knihoven a funkcí. ASP.NET je pro upřesnění jedna ze součástí .NET frameworku.
ASP.NET běží na serveru IIS (Internet Information Services) a teoreticky může běžet i na webserveru Apache jako modul (podobně jako PHP). S instalací plné verze Visual Studia nebo Visual Studia verze Community, která je zadarmo, se vám nainstaluje i tento server. Stránky tak můžete ladit jednoduše ve svém počítači. Ohledně českých freehostingů na zkoušení webů v ASP.NET stojí za zkoušku http://www.asp2.cz. Místa tam není mnoho, ale na pokusy nebo osobní web to bohatě stačí. Pro vážnější projekty je třeba si webhosting koupit, ale to platí asi u všech technologií.
WebForms, MVC a Core
Microsoft nám nabízí hned několik způsobů jak webové stránky vytvářet. Tím historicky nejstarším byly WebForms, které jsou dnes již poměrně nezajímavé. Jejich nástupcem je ASP.NET MVC a to je v současné době nahrazováno technologií ASP.NET Core, která je naštěstí velmi podobná.
WebForms
WebForms byl pokus přenést WinForms (tedy standardní formulářové/okenní aplikace, jak je známe z desktopu) na web. Idea je jednoduše v designeru poskládat formulář z kontrolek z toolboxu (tlačítka, popisky, textová pole atd.) a těmto ovládacím prvkům přiřadit události. Aplikace se navenek chová jako desktopová, ale na pozadí je složitější logika. Úkol nasimulovat desktopovou aplikaci na webu je poněkud nelehký a to z toho důvodu, že protokol HTTP je bezstavový. Výhodou WebForms je obrovská rychlost tvorby zejména aplikací, kde je hodně formulářů. Nevýhodou je komplikovanější architektura a problém udělat cokoli "jinak" nebo spolupracovat s dalšími technologiemi. Kvůli těmto problémům se již WebForms příliš nepoužívají.
MVC
MVC je novější koncept a jde na celou věc jinak. Rozděluje webovou aplikaci do komponent 3 typů: Kontrolery, Modely a Pohledy (Model View Controller). Kontroler je řídící komponenta, která přijme data od uživatele a komunikuje s modelem. Model obsahuje logiku, pracuje s databází a podobně. Data od modelu předá kontroler pohledu. Pohled je vlastně šablonou, do které se data vloží a vznikne výsledná HTML stránka. Jednoduše řečeno, cílem konceptu je zpřehlednit architekturu webu a rozdělit ho na 2 části - Logiku a Výstup. Kontroler poté tyto 2 části propojuje.
Core
Jelikož se Microsoft stále více snaží působit v open source komunitě, byla po otevření jazyka C# a .NET frameworku jen otázka času, než se firma rozhodne umožnit užívání ASP.NET i mimo operační systém Windows. ASP.NET Core se od ASP.NET MVC liší zejména tím, že na server nahráváme kromě naší aplikace i samotný framework ASP.NET, který již tedy nemusí být na serveru nainstalován. Svou aplikaci tedy můžeme nahrát kamkoli, i kde není prostředí Windows nebo ASP.NET. Aby to nebylo moc jednoduché, tak kromě přístupu MVC přináší Core i další způsoby jak webové aplikace tvořit. ASP.NET Core je v současné době nejvyvíjenější a proto se určitě vyplatí učit právě tuto technologii.
Nastínili jsme si tedy o co asi půjde. Než se do toho pustíme, upřesněme požadavky na znalosti na celý kurz.
Požadavky na znalosti
Pro dokončení celého kurzu se předpokládají znalosti v rozsahu následujících kurzů:
- Základní konstrukce jazyka C# .NET,
- Objektově orientované programování v C# .NET,
- Kolekce a LINQ v C# .NET,
- HTML a CSS,
- Visual Studio.
V příští lekci, Úvod do webových aplikací v ASP.NET, si uděláme úvod do webových aplikací, abychom pochopili proč jsou žádanější než aplikace desktopové.