Technologický přehled kolem ASP.NET Core 1.0 RC2

O ASP.NET Core se v poslední době mluví stále častěji a také mu byla věnována valná část konference TechEd v Praze. V tomto článku shrnuji aktuální situaci kolem ASP.NET Core z pohledu .NET vývojáře. Věnovat se budu zejména technikáliím. Samotnou rozborku ASP.NET Core frameworku nechám na příští článek.

Situace kolem (ASP).NET Core

.NET Core je nová multiplatformní a modulární open-source implementace dosavadního .NET Frameworku. Skládá se z běhového prostředí CoreCLR a modulární sady assemblies. Nový framework .NET Core je nyní dostupný v několika implementacích, přičemž webové vývojáře bude zajímat především ASP.NET Core, což je unifikace stávajícího ASP.NET MVC + ASP.NET Web API. V tomto článku budu dále psát především o webovém frameworku ASP.NET Core.

Aktuální verze frameworku je ASP.NET Core 1.0 RC2 (vydaná 17. 5. 2016) a jedná se o poslední verzi před oficiálním RTM releasem, který je zatím plánován na konec června 2016. Součástí releasu bude i nová verze toolingu (avšak stále ne finální). Odladěné nástroje s plnou podporou ASP.NET Core osobně očekávám ke konci roku.

Nový ASP.NET Core nabízí pohodlnější vývoj, lepší podporu různých balíčkovacích systémů (bower, gulp, grunt) a vyšší výkonnost. Často omílaná podpora alternativních platforem pro stávající vývojáře není moc zajímavá a odstrašující práce s příkazovou řádkou by se měla stát historií s dokončováním plné podpory ASP.NET Core ze strany Visual Studia.

image

Psaní aplikací nad .NET Core je aktuálně možné v jazycích C#, F# a podpora dalších jazyků je v plánu (zejména Visual Basic).

Běhové prostředí CoreCLR a .NET Core CLI

ASP.NET Core pro svůj běh používá runtime CoreCLR, který se skládá z několika klasických komponent:

  • .NET GC garbage collector (stejný jako ve stávajícím .NETu),
  • RyuJIT compiler - kompiluje IL nebo .NET IL do strojového kódu,
  • mechanismus pro zpracování výjimek

Z důvodu multiplatformní podpory lze komunikovat s CoreCLR skrze nástroje .NET Core CLI (Command Line Interface) Tools. CLI Tools je možné používat pomocí příkazové řádky, např. skrze příkazy dotnet new, dotnet restore atd. Vývojář pracující ve Visual Studiu je už nyní od práce s příkazovou řádkou odstíněn, protože Visual Studio si tyto příkazy volá samo. Čisté .NET CLI tak najde uplatnění především v Continuous Integration procesu na build serverech.

Je důležité zdůraznit, že ASP.NET Core koexistuje vedle klasického ASP.NETu a předpokládám, že s RTM verzí bude ASP.NET Core postupně vytlačovat stávající .NET. Dále doplňuji, že vývoj aplikací s novým CoreCLR nijak nebrání tomu používat i knihovny ze stávajícího .NETu.

Nejdůležitější knihovny (balíčky), které byl vývojář zvyklý používat klasickém .NETu (System.Collections, System.Xml...) jsou dostupné pod označením CoreFX a mají zcela vlastní repozitář na GitHubu.

Vývojářské nástroje: Visual Studio + .NET Core SDK

Stejně jako v případě klasických .NET aplikací je aktuálně jediným plnohodnotným nástrojem pro vývoj ASP.NET Core aplikací Visual Studio. Vedle Visual Studia je nutné nainstalovat SDK z microsoft.com/net/core, které obsahuje vše, co je pro vývoj ASP.NET Core aplikací potřeba (správce runtimů, šablony pro Visual Studio, další tooling...).

Je sice pravda, že pro vývoj ASP.NET Core aplikací lze použít libovolný editor (např.: Visual Studio Code), nicméně žádný není schopen provádět automaticky všechny běžné rutiny (např.: restore nuget packages) a nepředpokládám, že nějaký současný .NET vývojář má chuť si znepříjemňovat život psaním eposů v bashi.

Hostování ASP.NET Core aplikací

Protože doposud nebyla vydána finální verze ASP.NET Core 1.0, je s deployem na produkční on-premises servery problém (je s tím plno práce). Nejsnazší možnost jak hostovat aktuálně ASP.NET Core aplikaci je nasadit ji do prostředí Azure App Service. Lze očekávat, že s vydáním finální verze se objeví i tools pro snadnější deploy na on-premises servery (např.: podpora Web Deploy přímo z Visual Studia).

Závěr k technologickému přehledu

Technologický stav popsaný v tomto článku se zřejmě už žádných změn nedočká (nebo budou minimální). V této oblasti je nyní největším problémem stále ještě nedokončený tooling a plná podpora všech funkcí ze strany Visual Studia. Větších či menších změn se však stále může dočkat ASP.NET Core Framework, o kterém se blíže rezepíšu v příštím článku.

Miroslav Holec