Sdílet prostřednictvím


ASP.NET MVC – přehled

od Microsoftu

Seznamte se s rozdíly mezi aplikacemi ASP.NET MVC a aplikacemi ASP.NET Web Forms. Zjistěte, jak se rozhodnout, kdy vytvořit aplikaci ASP.NET MVC.

Model-View-Controller (MVC) odděluje aplikaci do tří hlavních komponent: model, zobrazení a kontroler. Architektura ASP.NET MVC poskytuje alternativu k ASP.NET Web Forms vzoru pro vytváření webových aplikací založených na MVC. Architektura ASP.NET MVC je odlehčená, vysoce testovatelná prezentační architektura, která je (stejně jako u aplikací založených na Web Forms) integrovaná se stávajícími funkcemi ASP.NET, jako jsou stránky předlohy a ověřování založené na členství. Architektura MVC je definována v oboru názvů System.Web.Mvc a je základní podporovanou součástí oboru názvů System.Web .

MVC je standardní vzor návrhu, který zná mnoho vývojářů. Architektura MVC bude pro některé typy webových aplikací přínosná. Ostatní budou i nadále používat tradiční vzor aplikace ASP.NET, který je založený na Web Forms a zpětném vrácení. Jiné typy webových aplikací budou kombinovat tyto dva přístupy; žádný z přístupů nevylučuje druhý přístup.

Architektura MVC zahrnuje následující komponenty:

Vyvolání akce kontroleru, která očekává hodnotu parametru

Obrázek 01: Vyvolání akce kontroleru, která očekává hodnotu parametru (kliknutím zobrazíte obrázek v plné velikosti)

  • Modely. Objekty modelu jsou části aplikace, které implementují logiku pro doménu dat aplikace. Objekty modelu často načítají a ukládají stav modelu v databázi. Například objekt Product může načíst informace z databáze, pracovat s ní a pak zapsat aktualizované informace zpět do tabulky Products v SQL Server.

V malých aplikacích je model často koncepčním oddělením místo fyzického. Pokud například aplikace čte pouze datovou sadu a odesílá ji do zobrazení, aplikace nemá fyzickou vrstvu modelu a přidružené třídy. V takovém případě sada dat převezme roli objektu modelu.

  • Zobrazení. Zobrazení jsou komponenty, které zobrazují uživatelské rozhraní aplikace. Toto uživatelské rozhraní se obvykle vytváří z dat modelu. Příkladem může být zobrazení pro úpravy tabulky Products, které zobrazuje textová pole, rozevírací seznamy a zaškrtávací políčka na základě aktuálního stavu objektu Products.

  • Kontrolery. Kontrolery jsou komponenty, které zpracovávají interakci uživatele, pracují s modelem a nakonec vyberou zobrazení pro vykreslení, které zobrazuje uživatelské rozhraní. V aplikaci MVC zobrazení zobrazí pouze informace; kontroler zpracovává uživatelský vstup a interakci a reaguje na ně. Kontroler například zpracovává hodnoty řetězce dotazu a předává tyto hodnoty modelu, který pak pomocí hodnot dotazuje databázi.

Model MVC pomáhá vytvářet aplikace, které oddělují různé aspekty aplikace (vstupní logiku, obchodní logiku a logiku uživatelského rozhraní), a zároveň poskytují volné propojení mezi těmito prvky. Vzor určuje, kde se mají jednotlivé druhy logiky v aplikaci nacházet. Logika uživatelského rozhraní patří do zobrazení. Vstupní logika patří do kontroleru. Obchodní logika patří do modelu. Toto oddělení vám pomůže spravovat složitost při vytváření aplikace, protože umožňuje zaměřit se na jeden aspekt implementace. Můžete se například zaměřit na zobrazení bez závislosti na obchodní logice.

Kromě správy složitosti model MVC usnadňuje testování aplikací než testování webové aplikace založené na Web Forms ASP.NET. Například ve webové aplikaci Web Forms založené na ASP.NET se k zobrazení výstupu a k reakci na uživatelský vstup používá jedna třída. Psaní automatizovaných testů pro aplikace Web Forms založené na ASP.NET může být složité, protože k otestování jednotlivých stránek musíte vytvořit instanci třídy stránky, všech jejích podřízených ovládacích prvků a dalších závislých tříd v aplikaci. Vzhledem k tomu, že pro spuštění stránky je vytvořena instance tolik tříd, může být obtížné psát testy, které se zaměřují výhradně na jednotlivé části aplikace. Implementace testů pro ASP.NET aplikací založených na Web Forms proto může být obtížnější než testy v aplikaci MVC. Kromě toho testy v Web Forms ASP.NET aplikaci vyžadují webový server. Architektura MVC odděluje komponenty a využívá rozhraní, což umožňuje testovat jednotlivé komponenty izolovaně od zbytku architektury.

Volné spojení mezi třemi hlavními komponentami aplikace MVC také podporuje paralelní vývoj. Například jeden vývojář může pracovat na zobrazení, druhý vývojář může pracovat na logice kontroleru a třetí vývojář se může zaměřit na obchodní logiku v modelu.

Rozhodování o tom, kdy vytvořit aplikaci MVC

Musíte pečlivě zvážit, zda implementovat webovou aplikaci pomocí rozhraní ASP.NET MVC nebo ASP.NET Web Forms modelu. Architektura MVC nenahrazuje model Web Forms. Pro webové aplikace můžete použít obě architektury. (Pokud máte existující aplikace založené na Web Forms, budou nadále fungovat přesně tak, jak mají.)

Než se rozhodnete použít architekturu MVC nebo model Web Forms pro konkrétní web, zvažte výhody jednotlivých přístupů.

Výhody webové aplikace MVC-Based

Architektura ASP.NET MVC nabízí následující výhody:

  • Usnadňuje správu složitosti rozdělením aplikace do modelu, zobrazení a kontroleru.
  • Nepoužívá zobrazení stavu ani formuláře založené na serveru. Díky tomu je architektura MVC ideální pro vývojáře, kteří chtějí mít plnou kontrolu nad chováním aplikace.
  • Používá vzor předního kontroleru, který zpracovává požadavky webové aplikace prostřednictvím jednoho kontroleru. To vám umožní navrhnout aplikaci, která podporuje bohatou infrastrukturu směrování. Další informace najdete v tématu Front Controller.
  • Poskytuje lepší podporu pro vývoj řízený testy (TDD).
  • Funguje dobře pro webové aplikace, které jsou podporovány velkými týmy vývojářů a webových návrhářů, kteří potřebují vysokou míru kontroly nad chováním aplikace.

Výhody webové Forms-Based webové aplikace

Architektura založená na Web Forms nabízí následující výhody:

  • Podporuje model událostí, který zachovává stav nad protokolem HTTP, což je výhodné pro vývoj obchodních webových aplikací. Aplikace založená na Web Forms poskytuje desítky událostí, které jsou podporovány ve stovkách ovládacích prvků serveru.
  • Používá vzor kontroleru stránek, který přidává funkce na jednotlivé stránky. Další informace najdete v tématu Kontroler stránky.
  • Používá zobrazení stavu nebo serverové formuláře, které usnadňují správu informací o stavu.
  • Funguje dobře pro malé týmy webových vývojářů a návrhářů, kteří chtějí využívat velké množství komponent dostupných pro rychlý vývoj aplikací.
  • Obecně je to pro vývoj aplikací méně složité, protože komponenty (třída Page , ovládací prvky atd.) jsou úzce integrované a obvykle vyžadují méně kódu než model MVC.

Funkce rozhraní ASP.NET MVC Framework

Architektura ASP.NET MVC poskytuje následující funkce:

  • Oddělení úloh aplikace (vstupní logika, obchodní logika a logika uživatelského rozhraní), testovatelnost a vývoj řízený testy (TDD) ve výchozím nastavení. Všechny základní kontrakty v architektuře MVC jsou založené na rozhraní a dají se testovat pomocí napodobení objektů napodobení chování skutečných objektů v aplikaci. Aplikaci můžete testovat jednotkami, aniž byste museli spouštět kontrolery v ASP.NET procesu, díky kterému je testování jednotek rychlé a flexibilní. Můžete použít jakoukoli architekturu testování jednotek, která je kompatibilní s rozhraním .NET Framework.
  • Rozšiřitelná a připojitelná architektura. Komponenty architektury ASP.NET MVC jsou navržené tak, aby je bylo možné snadno nahradit nebo přizpůsobit. Můžete připojit vlastní modul zobrazení, zásady směrování adres URL, serializaci parametrů metody akce a další komponenty. Rozhraní ASP.NET MVC také podporuje použití modelů kontejneru injektáže závislostí (DI) a inverze řízení (IOC). DI umožňuje vložit objekty do třídy, místo aby se spoléhalo na třídu při vytváření samotného objektu. IOC určuje, že pokud objekt vyžaduje jiný objekt, první objekty by měly získat druhý objekt z externího zdroje, jako je konfigurační soubor. To usnadňuje testování.
  • Výkonná komponenta mapování adres URL, která umožňuje vytvářet aplikace, které mají srozumitelné a prohledávatelné adresy URL. Adresy URL nemusí obsahovat přípony názvů souborů a jsou navržené tak, aby podporovaly vzory pojmenování adres URL, které dobře fungují při optimalizaci vyhledávacího webu (SEO) a adresování REST (Representational State Transfer).
  • Podpora použití značek v existujících ASP.NET stránkách (soubory .aspx), uživatelských ovládacích prvků (soubory .ascx) a v souborech se značkami předlohy (soubory .master) jako šablony zobrazení. Můžete použít stávající funkce ASP.NET s architekturou ASP.NET MVC, jako jsou vnořené stránky předlohy, vložené výrazy (<%= %>), ovládací prvky deklarativního serveru, šablony, datové vazby, lokalizace atd.
  • Podpora stávajících funkcí ASP.NET. ASP.NET MVC umožňuje používat funkce, jako je ověřování pomocí formulářů a ověřování systému Windows, autorizace adres URL, členství a role, ukládání výstupu a dat do mezipaměti, správa stavu relací a profilů, monitorování stavu, konfigurační systém a architektura poskytovatele.