Miroslav Holec
Premium

Podpora .NET Core 2.2. skončí v prosinci, čeká nás migrace na NET Core 3.x

Miroslav Holec   31. října 2019

Článek se vztahuje k verzi produktu .NET Core 2.2

Tento článek je již velmi zastaralý. Článek nemusí popisovat aktuální stav technologie, ideální řešení a můj současný pohled na dané téma.

Během vývoje aplikací na .NET Core je nutné hlídat verze frameworku, které používáte. Microsoft rozlišuje několik větví vývoje, jejichž podpora se liší. Mnoho vývojářů tak dost možná bude překvapeno, že zatímco .NET Core 3.0 se objevil teprve před měsícem, verze .NET Core 2.2 již od 24. prosince 2019 nebude podporována.

Current / LTS

Doposud platilo pravidlo, že s každou novou major verzí frameworku (1.0, 2.0, 3.0) přichází určité breaking changes a daná verze se na světě příliš dlouho neohřeje. Vždy se jedná o verzi, která se krátce po vydání záplatuje a nezřídka i mění v závislosti na zpětné vazbě od vývojářů nebo na základě analýzy využití. Taková verze je při svém vzniku označována jako current a velmi brzy ji nahrazuje nová minor verze. U té se počítá s delší životností a najdete ji zpravidla s tagem LTS. Klíčový rozdíl je v tom, že zatímco current verze (např.: 2.0.x) přechází do maintenance módu po dobu 3 měsíců, LTS verze jsou záplatovány a supportovány další 3 roky od prohlášení, že jsou LTS.

NET Core 2.2

Zrovna .NET Core 2.2 navázal na verzi 2.1 LTS a přinesl drobná vylepšení. Pokud jste aplikaci zmigrovali nebo postavili na verzi 2.2, jste právě na maintenance větvi a podpora vaší verze bude ukončena v prosinci tohoto roku. Předpokládá se, že vaše nadšení z migrování na nové verze bude i nadále pokračovat a přejdete na .NET Core 3.x.

V budoucnu by měly být LTS vždy sudé major verze frameworku (.NET 6, .NET 8, .NET 10). Verze .NET 5, která vyjde příští rok v listopadu nebude tedy LTS verze. To jsou ale vzdušné zámky Microsoftu a z mého pohledu to dopadne jinak.

Co mám tedy dělat?

Záleží, jak moc vám vadí, že vaše verze frameworku nebude od 24. prosince záplatována. Máte-li aplikaci, která neběží produkčně, nemusíte s migrací nijak spěchat. V případě produkčně nasazených aplikací a zejména těch, které jste předali klientům a teď jen tak běží bez povšimnutí bych se přimluvil za upgrade (nebo downgrade).

Downgrade na 2.1

Verze 2.1 a 2.2 se od sebe tolik neliší a downgrade vás na rozdíl od upgrade nebude stát téměř žádné úsilí. Pokud jste postavili nevědomě aplikaci na verzi 2.2, teď ji máte někde zahostovanou a nechcete ji nijak rozvíjet, pak bych šel cestou nejmenšího odporu a přešel na verzi 2.1. Ovšem pozor u REST API. Chování verzí 2.0/2.1/2.2 se v určitých ohledech liší a pokud využíváte naplno například Problem Details, šel bych raději cestou upgrade na 3.x.

Upgrade na 3.x (doporučeno)

V ostatních případech bude vhodné (a mohu doporučit) migrovat na verzi 3.0 nebo si počkat na verzi 3.1, která vyjde teď v listopadu a bude LTS. Mezi verzemi 3.0 a 3.1 nebude žádný zásadní rozdíl, takže případný swap z 3.0 na 3.1 bude formalita v podobě změny target frameworku a možná pár drobností.

Je migrace z 2.2 na 3.x složitá?

Samotná migrace technicky složitá není a vyžaduje jen několik kroků. Trochu složitější to může být v případě, že mixujete různé technologie (např.: REST API + MVC / Razor Pages / Endpoints) a každý mechanismus používá odlišné přístupy co do autorizace, CORS nebo cachování. Potíže se mohou objevit i pokud používáte vlastní serializaci pomocí Newtonsoft.Json či jiného serializeru. Dále jsem pozoroval potíže s generováním dokumentace Swagger + dodatečnými NuGet balíčky. Samotnou kapitolou je EF Core, který už není součástí frameworku a jehož verze 3.0 vyžaduje targetování na NET Standard 2.1.

Verze 3.0 přináší revoluční změny v podobě generic hosta a především v novém endpoint routingu. Společně s novým serializerem se jedná o změny, které vyžadují nejen přepis pár řádků kódu, ale zejména pochopení celé myšlenky a upraveného mechanismu.

Půldenní školení: Novinky a změny v ASP.NET Core 3.x

Nehcete-li se prokousávat dokumentací, přijďte na mé půldenní školení v Praze v PwC. Vysvětlím, jaké změny přináší nová verze frameworku a co musíte udělat pro update. Kromě praktických ukázek především vysvětlím, proč Microsoft dané změny udělal a proč jsou pro vývoj aplikací v .NET Core tolik důležité.

Osnova

  • změny v target frameworks
  • změny v modelech hostování
  • generic host a konfigurace aplikace
  • změny v registraci webových služeb do DI
  • endpoint routing a související změny
  • evoluce v používání dotnet tools
  • diagnostické nástroje
  • nový JSON serializer
  • další vylepšení frameworku

Informace o školení a registrace je možná na mém webu zde...