Miroslav Holec

Software & Cloud Architect

miroslavholec.cz / blog / mvc-6-neexistuje-at-zije-aspnet-core

MVC 6 neexistuje! Ať žije ASP.NET Core!

Miroslav Holec

Miroslav Holec

Publikován 7. května 2017

Vývoj ASP.NET Core trval Microsoftu skutečně dlouhou dobu. Restart platformy, o kterém se tolik mluvilo a mluví byl dost živelný a především chaotický. Když jsem se zpětně díval na články z posledních dvou let, není pochyb o tom, že ani hoši z vývojářského týmu ASP.NET Core netušili kam to všechno dojde. Myslím, že stojí za to vnést do chaosu trochu světla a objasnit titulek mého článku.

MVC

Nechci se pouštět do akademických článků. MVC je v obecné rovině (jak předpokládám každý ví) pouze zkratkou pro architektonický vzor (pattern): Model-View-Controller. To je pekelně důležité, protože konečných implementací MVC vzoru existuje celá řada a to nejen ve světě Microsoft technologií. Příkladem budiž Zend Framework nebo Django. Pro vývojáře v bublině .NET technologií je implementací například webový framework ASP.NET MVC 5 nebo ASP.NET Core.

ASP.NET MVC a ASP.NET Web API

Webový framework ASP.NET MVC je úzce svázán s .NET Frameworkem (aktuálně .NET Framework 4.7) a umožňuje stavbu webových aplikací. Část frameworku společně s dalšími knihovnami lze použít pro tvorbu REST API. Takový balík nářadí pak nacházíme pod značkou ASP.NET Web API 2.2.

Zásadní problém je, že ASP.NET Web API si některé věci půjčuje z knihoven ASP.NET MVC Frameworku a tudíž jej (alespoň z mého pohledu) nikdy nešlo označit jako o "soběstačný" framework. Vždy to byla jen sada nástrojů, která pomáhala stavět aplikační rozhraní.

Vývojáři v Microsoftu si naštěstí uvědomili, že HTTP protokol je použitelný rovnocenně pro řešení standardních požadavků a servírování HTML stejně jako pro řešení požadavků na data a servírování JSON/XML nebo něčeho jiného. V praxi se totiž jak v případě ASP.NET MVC tak i v ASP.NET Web API nejednalo o nic jiného než komunikaci ve formě Request-Response. A přesně tento fakt byl zohledněn při tvorbě nového webového frameworku ASP.NET Core.

ASP.NET Core

ASP.NET Core (aktuálně ASP.NET Core 1.1), svého času také nazýván ASP.NET 5 je kompletní webový framework, který lze provozovat buď nad plným .NET Frameworkem 4.x nebo nad multiplatformním .NET Core. Jako webový framework poskytuje řadu užitečných nástrojů pro vyřešení výše uvedené komunikace Request-Response mezi klientem a serverem. Podstatné je, že skoro celý ASP.NET Core je postaven na zmíněmém architektonickém vzoru MVC a je prakticky jedno, zda jej použijete pro tvorbu webových aplikací, API nebo obojího zmíněného. Píšu záměrně "skoro celý", protože nikomu nic nebrání se na celé MVC serepetičky vykašlat a handlovat si requesty svým způsobem, jako se to dělalo ve středověku. To se nicméně nepředpokládá.

asp-net-core-architecture

A jak je to tedy s MVC 6?

MVC 6 neexistuje a je to pouze smyšlený název, který odkazuje na další generaci implementace MVC v podobě webového frameworku ASP.NET Core. Používají ho převážně dev evangelists, aby vývojářům naznačili, že ASP.NET Core je na MVC postaven. Je třeba říci, že MVC 6 není ani marketingový název a Microsoft se k tomu od momentu uvedení ASP.NET Core už nepřihlásil. Kdybychom skutečně chtěli být přesní, mohli bychom říci, že aktuálně je k dispozici ASP.NET Core MVC 1.1.2, jakožto část ASP.NET Core. Jenomže to je také dost zavádějící, protože se bavíme o verzi jednoho NuGet balíčku - kousku skládačky z celého modulárního frameworku.

Výstižně to potvrdil i Daniel Roth z Microsoftu:

Correct, pretty early on we renamed everything to ASP.NET Core, a new v1.0 framework. ASP.NET Core MVC is part of ASP.NET Core. The latest version of ASP.NET Core is 1.1.

Proto ten titulek dnešního článku. MVC 6 neexistuje. Je tu nový webový framework ASP.NET Core a jeho velkou část tvoří ASP.NET Core MVC, který je zcela modulární. Je celkem komplikované (a vlastně i zbytečné) snažit se určit jeho hranice.

A proč to píšu?

kniha mvc  6

Třeba proto, že pokud narazíte na pultech na knihu, která má být teprve vydána (v době kdy je naming již ustálený), lze očekávat, že podobných mystifikací bude plno i v samotném obsahu.

A tenhle článek to totálně zazdil:

article-aspnet-5

Školení ASP.NET Core a Entity Framework Core

Budoucnost platformy .NET bude patřit technologiím ASP.NET Core a EF Core. Přijďte se naučit tyto moderní technologie používat na mém praktickém školení.

7.8.2017 - 9.8.2017 ASP.NET Core MVC
11.9.2017 - 12.9.2017 Entity Framework Core