Konzultant a lektor pro [ASP].NET Core & REST API

Uvolněn (ASP.NET) Core 2.1.0, EF Core 2.1.0 - tipy na update

Miroslav Holec

Miroslav Holec

31. května. 2018 , aktualizace 1. června. 2018

Bez zbytečného humbuku Microsoft uvolnil finální verzi ASP.NET Core 2.1.0 a Entity Framework Core 2.1. Oproti již propíraným RC verzím nepřináší nic nového a jedná se spíše jen o stabilizovaný patch. V tomto článku bych rád shrnul, co to znamená pro webové vývojáře vzhledem k různým verzím ASP.NET Core.

Přehled, co je nového

Z hlediska funkčnosti je potřeba podívat se na jednotlivé novinky z ptačí perspektivy. Nová verze .NET Core SDK ke stažení je zde a obsahuje:

.NET Core 2.1

Samotný .NET Core 2.1 je dostupný klasicky pro Win/macOS/Linux + další platformy a přináší především výkonnostní vylepšení.

ASP.NET Core 2.1

Nová verze webového frameworku ASP.NET Core přináší několik drobných funkčních vylepšení oproti verzi 2.0. Celkově vzato se nekoná žádná revoluce.

Podle oficiálních informací je ASP.NET Core 2.1 dostupný i v Azure App Service. I když tento blog v deploy režimu self-contained běží na ASP.NET Core 2.1, nemohu potvrdit, že bych již nové SDK / runtime viděl v App Services.

Azure Console

Update 31.5.2018 - už se na Azure App Service objevují nové ASP.NET Runtimes (All i App)

Entity Framework Core 2.1

Zde je novinek podstatně více a oproti EF 2.0 se stává nová verze EF Core 2.1 mnohem mocnější, především díky podpoře mnoha drobných užitečných funkcí. Dokonce i finální verze oproti RC doznala opravy na 20 různých chyb.

Jak updatovat na verzi 2.1

Pro přehlednost si rozdělme vývojáře na dvě skupiny, protože situace se zde liší:

Vyvíjíte nad .NET Core

Píšete-li aplikaci ASP.NET Core, která běží nad multiplatformním .NET Core, pak je situace celkem snadná. Buď máte v aplikaci smečku balíčků, které tvoří ASP.NET Core framework, nebo již používáte balíček Microsoft.AspNetCore.All. V obou případech doporučuji přejít na nový balíček

Tento metabalíček obsahuje odkazy na konkrétní verze balíčků, tvořířích ASP.NET Core framework a EF Core framework. Jedná se o stabilní balíček a zároveň i runtime. Pokud aplikace budete publikovat na server v režimu framework-dependent, získáte tím automatické opatchování s instalací každé nové minor verze .NET Core runtime. Po přechodu na tuto verzi balíčku vám budou možná některé balíčky chybět. Je to v pořádku - chybějící balíčky jsou vystrčeny mimo stabilní framework a musíte si je udržovat svépomocí.

Původní balíček Microsoft.AspNetCore.All můžete používat i nadále. Jedná se však o rizikovější cestu, protože zde závislosti nejsou dány na konkrétní verze ASP.NET Core balíčků a kromě toho tento balíček obsahuje závislosti na 3rd party knihovny mimo kontrolu Microsoftu.

V obou případech (.All / .App) se jedná zároveň i o runtimes. Na toto téma jsem napsal článek a měl jsem i přednášku, kterou si doporučuji poslechnout pro pochopení historie vývoje ASP.NET Core.

Vyvíjíte nad .NET Frameworkem

Zde je situace trochu horší, protože nemůžete používat výše zmíněné balíčky Microsoft.AspNetCore.All/.App. Tyto balíčky jsou totiž targetovány pouze na .NET Core 2.1. Tudíž aktualizace aplikace pro vás bude znamenat ruční update všech dosavadních balíčků na verzi 2.1. Máte-li aplikaci postavenou na ASP.NET Core 1.0. / 1.1., čeká vás hodně práce. Kromě změny NuGet balíčků bude vhodné i sáhnout do projektu, jelikož se od verzí 1.0 a 1.1 změnila konfigurace aplikace.

Update z verze 2.0 na 2.1 je obecně jednoduchá, protože mezi verzemi je zaručena úplná kompatibilita. Ostatně to nově bude platit i pro další minor updaty. Tím nejbližším bude .NET Core / ASP.NET Core 2.2, který bude uvolněn v posledním čtvrtletí roku 2018.

Závěr a zkušenosti

Update na novou verzi rozhodně doporučuji především vývojářům, kteří jedou na moderním stacku .NET Core + EF Core. Technologické změny budou pro vás znamenat lepší performance, mnoho nových užitečných funkcí v EF Core a lepší možnosti patchování aplikací.

ASP.NET Core ve verzi 2.1 a 2.1 RC aktuálně používám na 2 aplikacích bežících nad .NET Core a v jednom případě nad .NET Frameworkem. Jednou z nich je i tento blog, na kterém nyní řeším jednu anomálii: občas se nevyřeší celý request a stránka zemře na timeoutu. Momentálně se nicméně zdá, že chyba bude někde v Azure App Service.

Update 1.6.2018 - Chyba byla skutečně v App Service. Těžko říci kde. Každopádně problém jsem vyřešil deployem na zcela nový slot s úplně stejným nastavením.

A jaké jsou vaše zkušenosti s ASP.NET Core?


Zeptejte se