A felhőalapú technológiákra váltás egy izgalmas kihívás - ha tudod miként kezdj neki! Ebben a cikkben szeretném megosztani...
.NET 5 = .NET Core vNext
Gulyás GáborA 2016-os indulása óta folyamatosan használom és nyomon követem a .NET Core fejlődését, rengeteg projektben használtam már – legyen szó konzolos alkalmazásról, egy ASP.NET Core Web App-ról, egy Azure Function, bármi. A kezdeti nehézségeken túllépve már sokkal nagyobb az átjárhatóság a klasszikus .NET Framework és a .NET Core között, a .NET Core 3.0 pedig újabb technológiákat húz be a sorba: WPF, Windows Forms, na meg persze az Entity Framework 6.
Adódik hát a kérdés: most, hogy már – enyhe túlzással – minden támogat a .NET Core amit a .NET Framework, mi lesz a következő lépés?
Mi van a motorháztető alatt?
Mintha a Windows 10 bejelentését hallanám, miszerint minden eszközön, legyen az telefon, laptop, tablet, számítógép, vagy éppen az Xbox, mindenen az fog futni. Nincs ez másképp a .NET (Framework) esetében sem.
Ahhoz, hogy megértsük a .NET keretrendszer jövőjének vízióját, először is érdemes áttekintenünk, hogy jelenleg – a cikk írásának pillanatában – milyen eszközökön milyen formában érhető el számunkra a .NET Framework.
Az első és legfontosabb maga a .NET Core. A CoreCLR futtatókörnyezetre épülő keretrendszer legfőbb előnyeit elődjéhez képest a következőkben határozták meg:
- Keresztplatformos működés: Futtatható legyen Windows, Linux és MacOS rendszereken egyaránt.
- Minden architektúra támogatása: Ugyanaz a kód ugyanúgy működjön x64, x86 és ARM architektúrákon.
- Parancssoros eszközök: Mivel ez a nyelv már az UNIX alapú rendszereket is támogatja, ott pedig inkább a konzol az elterjedt, adott volt az igény, hogy a kód parancssorból is fordítható, tesztelhető legyen.
- Új kitelepítési lehetőségek: Flexibilisebb kitelepítési lehetőségek, konténerizálás – micsoda szép szó -, sokkal egyszerűbb átjárás a különböző SDK verziók között.
- Nyílt forráskód: Bizony, mindent megtalálsz a GitHub-on!
A .NET Core tökéletes megoldásnak bizonyult skálázható, felhő alapú megoldások esetében, microservice alapú alkalmazásoknál, vagy éppen API-k, konzolos alkalmazások fejlesztésekor. A teljesen újraírt keretrendszernek köszönhetően jóval kisebb és egyben jóval nagyobb áteresztő képességgel bíró alkalmazásokat fejleszthetünk az új platformon.
Ennek a megoldásnak az alapja a CoreCLR futtatókörnyezet, mely Just-in-Time (JIT), azaz futásidejű fordítást alkalmaz. Nagy előnyei az architektúrák közötti mozgatás – ellenben a C++-szal, ahol a kódot adott architektúrára fordítjuk le és úgy kapjuk meg a futtatható gépi kódot -, a nagy áteresztőképesség és a könnyebb fejleszthetőség. A .NET Core és .NET Framework is JIT fordítót alkalmaz, ez a jövőben sem lesz másképp.
Ez alól kivételt képeznek a mobilos (Xamarin) iOS alkalmazások, illetve a Blazor (web assembly), ahol is natív kód futtatására van csak lehetőség. Ekkor van szükség egy Ahead-of-Time (AOT) fordítóra, másnéven előfordítóra, mely lehetővé teszi kódunk natív gépi kódra történő fordítását, mely már futtatható az adott eszközön.
Mindkét futtatókörnyezetnek és fordítási módnak megvan az előnye és hátránya, a JIT esetében ez a magas áteresztőképesség és könnyebb fejleszthetőség, míg az AOT esetében ez a gyorsabb indulás, kisebb méret, alacsonyabb memória használat.
.NET 5, 6, 7, 8 …
A .NET Core elindított egy folyamatot, melynek következtében a hagyományos .NET Framework-re alapuló technológiákat szépen lassan átültették egy új, keresztplatformos működést kínáló keretrendszerre. Kezdődött ez a tradicionális konzolos alkalmazásokkal és webes alkalmazásokkal, átírták az Entity Framework ORM-et, majd jöttek a grafikus megjelenítést biztosító Windows Forms, illetve WPF alkalmazások is.
Végső lépésként pedig a .NET Core és .NET Framework teljes egységesítése következik, melynek köszönhetően:
- Egyetlen .NET futtatókörnyezet és keretrendszert használhatunk mindenhol.
- A korábban leírt fordítási lehetőségek és működések biztosításához a .NET Core, .NET Framework, Xamarin és Mono egyvelegéből fogjuk kapni.
- A Microsoft és a közösség egyetlen, egységes kódbázison dolgozhat.
A fejlesztők számára is ez egy nagy könnyítés lesz, ugyanis az egységes keretrendszernek köszönhetően mindenhol ugyanazt a projekt struktúrát láthatjuk viszont, ugyanazokat a függvénykönyvtárakat használhatjuk, egységes fejlesztői élményt kapunk.
A .NET 5 megjelenésére 2020 novemberében számíthatunk, azt követően pedig a jelenlegi tervek szerint évente kapunk egy újabb, major kiadást. A Microsoft szeret számokat kihagyni (Windows 8 -> 10), a .NET esetében is a 3.1 után az 5.0 fog következni, ez nem véletlen. A .NET Framework jelenleg legfrissebb kiadása a 4.8-cas, így egy .NET 4.0 név és verziószám bevezetése nagyon megtévesztő lenne a közösség számára – ugyanígy a mai napig nehezen értelmezhető az is, hogy mi az a .NET Core és mi a .NET Standard.
Végszó
Nagyon sok dolog van még ami egyáltalán nem tisztázott a .NET 5 kapcsán, kezdve a NuGet csomagok kompatibilitásának kérdésével az architektúra specifikus kódok támogatásán át egészen a .NET Standard létjogosultságáig.
A 2020 novemberi kiadásig nagyon sok víz folyik még le a Dunán, vélhetően addig még nagyon sokat fog változni a végső specifikáció, de nyílt forráskódú projekt lévén az új verzió fejlesztésébe és alakításába is beleszólhat a fejlesztői közösség!