ObrázokAko všetko vo svete IT, aj jedna z jeho najdôležitejších častí – web – sa posúva neustále dopredu. Nedá sa to ignorovať, pretože nová doba vždy prináša nové možnosti, ale aj nové hrozby. A ani firmy ako Microsoft to nemôžu ignorovať, a tak stále prichádzajú s novými nástrojmi, ktoré by mali lepšie spĺňať aktuálne požiadavky. Jedným z takých (novších) je ASP.NET MVC. V tomto článku sa pozrieme na knihu Professional ASP.NET MVC 4, ktorá bola napísaná práve o tomto frameworku.

Kniha je ideálna pre ľudí, ktorí už niečo v .Nete naprogramovali, prípadne majú dokonca skúsenosti s ASP.NET. Ak o .Nete nič neviete, tak treba začať niekde inde, pretože tu žiadne lekcie C# alebo Visual Basic-u nenájdete. Namiesto toho kniha štartuje prehľadom, čo to ASP.NET MVC je. A čo to vlastne je? Je to framework, ktorý je postavený na MVC vzore. Budem predpokladať, že už ste o ňom počuli a len pripomeniem, že je to vzor, ktorý rozdelí triedy (alebo objekty) do troch kategórií podľa ich zodpovednosti. Model udržiava dáta, validuje ich a môže ich čiastočne spracovávať. View zobrazuje údaje a transformuje, ak treba, do nejakej reprezentácie. A tiež môže prijímať vstup od používateľa, ale neinterpretuje ho, len prepošle Controlleru. Controller je ten, kto interpretuje vstup, robí zmeny dát v Modely, prípadne vytvára väzbu medzi View a Modelom. MVC má viacero variácií, v ktorých sa tieto zodpovednosti (a väzby medzi rôznymi typmi tried) môžu líšiť.

ASP.NET MVC ostáva tomuto vzoru verné, a teda tam v zásade existujú tieto tri hlavné typy tried. Aj preto je logické, že po úvodnej kapitole autor venuje tri za sebou nasledujúce kapitoly práve controlleru, view a modelu. View je v ASP.NET MVC reprezentované šablónou, ktorá môže byť písaná pomocou rôznej syntaxe. Natívna podpora je pre ASP.NET Web Forms (starší View engine, kde sa špeciálne výrazy vkladajú do HTML pomocou značiek <%) a Razor (novší – od verzie 3 – View engine, kde sa tieto výrazy vkladajú cez znak @). Okrem týchto je framework modulárny a na nete si viete nájsť iné View enginy so syntaxou Ruby, Python alebo Nodejs šablonových systémov a použiť tie. Controller je v podstate zoznam akcií, ktoré sú volateľné zvonku (rozumej prehliadačom alebo iným serverom). Môžu to byť akcie, ktoré vracajú vygenerovanú stránku (nejaké View, ktoré boli spracované a je z neho hotové HTML + Javascript) alebo môžu vracať niečo na spôsob REST sieťovej služby – teda dáta v nejakej forme – napríklad JSON alebo XML. Posledný je model. Ten predstavuje to, čo majú View a Controller spoločné. Objekt, ktorý v sebe drží údaje, aby ich View mohlo zobrazovať a Controller pripravovať/meniť.

Ďalšie kapitoly sa postupne venujú rôzným témam, ktoré nejako súvisia s jednou z týchto typov tried. Napríklad Forms a Html helpers. To sú rôzne pomocné triedy, ktoré uľahčujú tvorenie šablón. Je tu použítý mechanizmus .Net Extensions Method, a teda stačí k projektu pridať správne knižnicu a helpery, ktoré sú v priamo vo frameworku, zrazu získajú nové metódy. Takto je možné vyskladať helpery, aké pre daný projekt treba. Ďalšímy témami sú napríklad autorizácia alebo validácia. To druhé je realizované na strane aj server aj klienta. V klientovi nebeží žiaden C# kód, ale JavaScript a tak sa Microsoft rozhodol pre plnú integráciu s jQuery Validation pluginom.

Za ten čas, čo je ASP.NET MVC na trhu, sa toho už do frameworku pridalo množsvo (kniha má 507 strán). Nesmie chýbať podpora pre AJAX (napríklad aj pomocou AJAX Helperov) alebo nastaviteľný Routing. Routing je pomerne zaujímavá komponenta, lebo aj keď názov napovedá, že by sa mal starať o nájdenie správnej akcie v Controllery na základe URL, tak dokáže aj opak. Teda pre vybraný ControLler a akciu vygenerovať URL. To sa hojne používa vo View, kde je potrebné zadefinovať akciu napríklad pri potvrdení formulára. Princíp, na ktorom je Routing postavený, bol dokonca tak zaujímavý, že bol vytiahnutý z MVC frameworku do samostatnej knižnice priamo v ASP.NET, takže sa mu dostalo širšieho uplatnenia.

Medzi témami súvisiacimi s ASP.NET MVC nemôže chýbať NuGet package manager, Dependency Injection (v ASP.NET MVC realizované pomocou DI kontajnéra, ktorý je nutný vybrať z niekoľkých typov) alebo Unit Testing. Každému z tohoto je venovaná samostatná kapitola. Rovnako ako aj ASP.NET Web API, čo je svojím spôsobom niečo ako ASP.NET MVC ale prioritne určené pre vytváranie sieťových služieb (web services) nie stránok. Posledné kapitoly sa venujú rozširovaniu frameworku (keďže je do istej miery modulárny), zložitejším témam (rôzne View enginy, zložitejší routing atď) a jednému reálnemu väčšiemu príkladu.

ASP.NET MVC nie je komplikovaná vec. Ak máte aspoň predstavu, čo to MVC je, ovládate základy vývoja pre web a poznáte C#, tak máte k tomuto frameworku bližšie, než si myslíte. Musíte sa naučiť syntax niektorého View enginu (alebo si vybrať nejaký blízky tomu, čo poznáte), pochopiť ako funguje model a ako Controllery a môžete sa pustiť do písania. Ak ste teda niekde na začiatku toho celého, tak vám knihu Professional ASP.NET MVC 4 môžem odporučiť. Nebude vás zaťažovať začiatočníckymi detailami, ale skôr tým, čo je pre framework podstatné.