ASP.NET MVC je poměrně mladá technologie se spoustou zajímavých schopností a rozhodně slibnou budoucností. Podívejme se tedy dnes spolu stručně na teorii architektury MVC, kterou si v nadcházejících článcích vyzkoušíme v praxi.
Architektura Model-View-Controller (zkráceně MVC) rozděluje aplikaci do tří hlavních dílů: model (datový model), view (pohled – uživatelské rozhraní) a controller (kontrolér, řadič – řídící logika). Základní myšlenka je ta, že všechny tyto tři díly, často označované jako komponenty, jsou na sobě v maximální možné míře nezávislé, změny provedené v jedné komponentě tedy neovlivní zbylé dvě komponenty. Více detailů o architektuře MVC najdete například na české Wikipedii.
ASP.NET MVC slouží jako alternativa k dobře známým ASP.NET WebForms (v žádném případě se je nesnaží nahradit), stejně jako klasické WebForms spolupracuje tato technologie se stávajícími vlastnostmi ASP.NET, jmenujme třeba master pages, uživatelské role, sessions a další. Celý MVC framework najdeme v namespace System.Web.Mvc.
Pojďme si teď probrat trochu podrobněji jednotlivé komponenty.
Model
Model slouží k práci s daty, která aplikace používá. Stará se tedy například i o čtení a zápis z/do databáze, XML souborů a dalších.
View
View je komponenta, která zobrazuje uživatelské rozhraní, které je často vytvořeno na základě Modelu, který například načte tabulku zaměstnanců a View ji nějak zobrazí (skutečně jen zobrazí, o akce uživatele se už nestará).
Controller
Na cestě mezi komponentami Model a View stojí Controller – komponenta, která se stará o komunikaci s uživatelem, zachytávání událostí atp. Databázový dotaz probíhá tak, že ho od uživatele obdrží právě Controller, předá ho Modelu a teprve ten ho předá databázi.
Výhodou MVC je to, že usnadňuje vytváření aplikací tím, že vývojáři téměř „přikazuje“ kam má který kód dát. Kromě toho je jednodušší testování aplikací než třeba u standardních WebForms. Tam se totiž často dohromady míchá vzhled i práce s daty v jedné třídě. Napsat si například testovací třídu může být složitější, protože se jednoduše musíme zaobírat i tím, co nás zrovna příliš nezajímá. Do třetice tato architektura téměř svádí k paralelnímu vývoji. Díky nezávislosti jednotlivých komponent může jeden programátor pracovat na Modelu, druhý na Controlleru a tak dále.
Kdy použít MVC?
Před vytvořením nové aplikace je nutné se zamyslet, jestli skutečně použít MVC, anebo běžné WebForms. Jak už bylo řečeno, MVC nic nenahrazuje, je to jen další alternativa. Snad vám při rozhodování jakou použít technologii pomůže následujících pár bodů.
Výhody MVC
- Usnadňuje správu aplikace rozdělením do tří komponent.
- Nepoužívá View State, ani serverové ovládací prvky. Díky tomu je MVC framework ideální pro ty, kteří chtějí mít kompletní moc nad chováním aplikace.
- Používá tzv. „Front Controller“, který zpracovává požadavky od aplikace pomocí jednoho dalšího Controlleru. Ten se dá využít pro vytvoření routovací infrastruktury (vytváření URL je v ASP.NET neskutečně pohodlné, sami uvidíte v dalších dílech).
Výhody WebForms
- Disponuje systémem událostí (events), které jsou dostupné v desítkách, ne-li stovkách, serverových ovládacích prvků.
- Používá tzv. „Page Controller“, který dává funkcionalitu individuálním stránkám.
- Používá serverové ovládací prvky a View State, které mohou programování o hodně ulehčit.
- Obecně se dá říct, že vývoj pomocí standardních WebForms je méně složitý, protože většina komponent spolu těsně spolupracuje a většinou vyžadují méně kódu než u MVC.
Kde ASP.NET MVC sehnat?
Možnosti jsou dvě - buďto ze stránek Microsoftu, anebo přes aplikaci Web Platform Installer, která slouží ke stahování i ostatních webových aplikací a frameworků (Silverlight, doplňky pro IIS, atd.).
To byl jen úvod, kouzlo ASP.NET MVC objevíte teprve, až ho použijete v praxi, což spolu hned příště uděláme u stavění kompletní aplikace určené k plánování setkání s přáteli. Nebude omezená jen na ukázky konceptů MVC frameworku jako takového, ale naučíme se i práci s databází, využijeme AJAX, LINQ to SQL a další technologie.