1. díl - Úvod do ASP.NET

C# .NET ASP.NET Úvod do ASP.NET

Vítejte v 1. dílu seriálu 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

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í. Mám na mysli např, bezpečnost, autentifikace uživatele, práce s databází, správa 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 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 běží na straně serveru. Abychom lépe pochopili, jak ASP 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é.

Gaficky 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 .htm).

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 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 Express for Web, 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 vs. MVC

Microsoft nám nabízí 2 hlavní způsoby, jak webové stránky vytvářet, jsou to WebForms a MVC. Oba jsou zajímavé a oba se dívají na webovou aplikaci trochu jinak.

WebForms

WebForms je 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 kontrolkám (controls) 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ý.

Stavem se myslí např. vyplněné hodnoty v polích, zaškrtnuté checkboxy, vybrané datum v kalendáři a podobně. Server vůbec neví, v jakém stavu je aplikace, pouze k němu přijde nějaký požadavek od uživatele a on na jeho základě generuje HTML stránky. Po odeslání stránky klientovi většina informací na serveru zaniká. Představme si, že ve formuláři něco vyplníme, zaškrtneme a stránku odešleme. V nové stránce většinou chceme, aby zůstaly tyto hodnoty vyplněné, zvláště tehdy, když se jedná o ten samý formulář. Stav formuláře se tedy musí někde udržovat, v ASP.NET je to řešeno pomocí tzv. ViewState. ViewState není nic jiného, než skryté formulářové pole, které na výsledné HTML stránce uchovává stav aplikace a odešle ho s dalším dotazem serveru, který u sebe zrestauruje stav aplikace, jaký měla předtím, provede nějakou akci a opět vygeneruje ViewState a stav zapomene. Toto se na pozadí opakuje a klient (a většinou i programátor) mají pocit, že pracují s desktopovou aplikací. Výhodou je obrovská rychlost tvorby zejména aplikací, kde je hodně formulářů. Nevýhodou je samozřejmě zvýšená velikost HTML stránky kvůli odesílání ViewState a poněkud komplikovanější architektura. WebForms je starší koncept, který však stále převládá ve firmách.

Jak se v ASP.NET Web Forms programuje?

Webová stránka je jako XML šablona. Elementy, které chceme na serveru modifikovat, označíme atributem runat="server". Nyní ho můžeme v tzv. CodeBehind (kódu na pozadí) modifikovat. CodeBehind je normální C# kód, jak ho znáte doteď. S elementy v XML šabloně pracujeme jako by to byly objekty. Abstrakce je zde opravdu vysoká, je to velmi nezvyklý přístup, na který se však dá zvyknout velmi rychle a v mnoha směrech usnadní práci.

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. Ačkoli to tak může vypadat, MVC není náhradou WebForms, je to pouze další alternativa jak web tvořit a jsou situace, kdy je WebForms výhodnější. MVC se tu budeme také věnovat.

Nastínili jsme si tedy o co asi půjde. Příště si uděláme úvod do webových aplikací, abychom pochopili proč jsou žádanější než aplikace desktopové.


 

  Aktivity (1)

Článek pro vás napsal David Čápka
Avatar
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.

Jak se ti líbí článek?
Celkem (17 hlasů) :
4.529414.529414.529414.529414.52941


 


Miniatura
Všechny články v sekci
Tvorba webů v ASP.NET
Miniatura
Následující článek
Úvod do webových aplikací v ASP.NET

 

 

Komentáře
Zobrazit starší komentáře (21)

Avatar
Kit
Redaktor
Avatar
Kit:

Záleží na šikovnosti programátora, obvykle to vyjde nastejno. Při výběru jsou rozhodující jiná kritéria než rychlost.

Odpovědět 15.1.2014 21:41
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Petr Čech (czubehead):

Měl jsem na mysli jestli se mi nebudou 10s načítat knihovny, nebo něco podobného. Moje škola má totiž web v ASP.NETu a požadavky zpracovává hrozně pomalu.

Odpovědět 15.1.2014 21:46
Why so serious? -Joker
Avatar
Kit
Redaktor
Avatar
Odpovídá na Petr Čech (czubehead)
Kit:

Nevím jak v ASP, ale v PHP se načítají jen potřebné knihovny. Obvyklá doba zpracování je v jednotkách až desítkách ms.

Odpovědět 15.1.2014 21:50
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
mkub
Redaktor
Avatar
Odpovídá na Petr Čech (czubehead)
mkub:

spracovanie poziadavok zalezi na viacerych faktoroch:

  • rychlost nacitania kniznic (pokial si kniznice neprednacitava)
  • rychlost a vytazenost sitete
  • rychlost databazoveho stroja
  • pocetnost kolizii v sieti
  • vytazenie weboveho a databazoveho servera
 
Odpovědět 16.1.2014 0:36
Avatar
Honza Chmelík:

Může mi prosím někdo poradit:(
Nahrál jsem si své zkušební webowky na výše zmíněný web(http://www.asp2.net) do složky wwwroot jsem nahrál všechny soubory, ale hlásí mi to error konkrétně :Could not load type 'Default.Default'.

Chybný řádek:

<%@ Page Language="C#" AutoEventWire­up="true" CodeBehind="De­fault.aspx.cs" Inherits="Defau­lt.Default" %>

Chápu, že musím změnit to Default.Default na něco jiného, ale nejsem si jistý na co...ve Visualu mi to funguje...

Editováno 6.2.2014 23:33
 
Odpovědět 6.2.2014 23:32
Avatar
martin.stiglinc
Redaktor
Avatar
martin.stiglinc:

Na zaklade coho sa programator rozhoduje, ktory sposob je pre jeho projekt najlepsi? Ci si ma vybrat MVC alebo MVC SinglePage pripadne ci to bude MVC WebForms? Napriklad ak tam bude registracia uzivatelov, dake platobne systemy, sms-brana na posielanie sms tymto registrovanym uzivatelom? Co vybrat?

Odpovědět 14.8.2015 13:07
Tomorow is the very first day of the rest of your life.
Avatar
Odpovídá na Honza Chmelík
andrej.misuta:

Ako si to vyriešil, prosím? :)

 
Odpovědět 6. dubna 15:45
Avatar
Odpovídá na martin.stiglinc
Michal Štěpánek:

V podstatě musíš udělat stránky v tom, co umíš. Nicméně WebForms se už asi moc vyvíjet nebude, takže bude lepší používat MVC. A jestli SPA nebo jen MVC (s oddělenými stránkami) asi hodně záleží na složitosti, resp. rozvětvenosti cílového projektu. Na jednodušší weby se hodí SPA na hodně složité (např. eshop) se moc SPA nehodí... Tím nechci tvrdit, že by se třeba eshop v SPA udělat nedal, ale podle mě by to byl čirý masochismus... 8-)

Odpovědět  +2 6. dubna 18:16
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na martin.stiglinc
Jiří Gracík:

Pokud bych dělal 10 let ve webformech a nikdy MVC neviděl, pak bych možná zvážoval webformy, jinak určitě MVC. Single page, jak už název napovídá, se hodí pro jednu stránku.

Odpovědět 6. dubna 18:51
Creating websites is awesome till you see the result in another browser ...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 31. Zobrazit vše