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.
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...