A .NET 5 újdonságai
A .NET 5 a .NET Core következő fő kiadása a 3.1 után. Ezt az új kiadást .NET 5-nek neveztük el a .NET Core 4 helyett két okból:
- Kihagytuk a 4.x verziószámokat, hogy elkerüljük a .NET-keretrendszer 4.x-es verzióval való összetévesztést.
- Elvetettük a "Core" szót a névből, hogy hangsúlyozzuk, hogy ez a .NET fő implementációja. A .NET 5 több alkalmazástípust és több platformot támogat, mint a .NET Core vagy a .NET-keretrendszer.
ASP.NET Core 5.0 a .NET 5-en alapul, de megtartja a "Core" nevet, hogy ne keverje össze ASP.NET MVC 5-tel. Hasonlóképpen az Entity Framework Core 5.0 megtartja a "Core" nevet, hogy elkerülje az Entity Framework 5 és 6 közötti összetévesztést.
A .NET 5 a .NET Core 3.1-hez képest a következő fejlesztéseket és új funkciókat tartalmazza:
- C#-frissítések
- F#-frissítések
- Visual Basic-frissítések
- System.Text.Json új funkciók
- Önálló fájlalkalmazások
- Alkalmazás vágása
- Windows Arm64 és Arm64 belső mechanika
- Eszköztámogatás a memóriakép-hibakereséshez
- A futtatókörnyezeti kódtárak 80%-ban vannak széljegyzetben null értékű referenciatípusokhoz
- Teljesítménybeli fejlesztések:
A .NET 5 nem helyettesíti .NET-keretrendszer
A .NET 5 és újabb verziói a .NET fő implementációi, de .NET-keretrendszer 4.x továbbra is támogatott. Nincsenek tervek a következő technológiák portálására a .NET-keretrendszer-ből a .NET 5-be, de a .NET-ben vannak alternatívák:
Technológia | Ajánlott alternatíva |
---|---|
Web Forms | ASP.NET Core Blazor vagy Razor Pages |
Windows-munkafolyamat (WF) | Elsa-Workflows |
Windows Communication Foundation
A Windows Communication Foundation (WCF) eredeti implementációja csak Windows rendszeren támogatott. A .NET Foundationben azonban elérhető egy ügyfélport. Teljes mértékben nyílt forráskód, platformfüggetlen, és a Microsoft támogatja. Az alapvető NuGet-csomagok az alábbiakban találhatók:
- System.ServiceModel.Duplex
- System.ServiceModel.Federation
- System.ServiceModel.Http
- System.ServiceModel.NetTcp
- System.ServiceModel.Primitives
- System.ServiceModel.Security
A fent említett ügyfélkódtárakat kiegészítő kiszolgálóösszetevők a CoreWCF-n keresztül érhetők el. 2022 áprilisától a Microsoft hivatalosan is támogatja a CoreWCF-et. A WCF alternatív megoldásához azonban fontolja meg a gRPC-t.
A .NET 5 nem helyettesíti a .NET Standardot
Az új alkalmazásfejlesztés minden projekttípushoz megadhatja a net5.0
Target Framework Moniker (TFM) elemet, beleértve az osztálytárakat is. A .NET 5 számítási feladatok közötti kódmegosztás egyszerűbb: mindössze a net5.0
TFM-re van szüksége.
A .NET 5-alkalmazások és -kódtárak esetében a net5.0
TFM egyesíti és lecseréli a netcoreapp
TFM-eket netstandard
. Ha azonban kódot szeretne megosztani .NET-keretrendszer, .NET Core és .NET 5 számítási feladatok között, ezt TFM-ként megadva netstandard2.0
teheti meg. További információ: .NET Standard.
C#-frissítések
A .NET 5-alkalmazásokat író fejlesztők hozzáférhetnek a legújabb C# verzióhoz és funkciókhoz. A .NET 5 a C# 9-tel van párosítva, amely számos új funkciót kínál a nyelvhez. Íme néhány fontos elem:
Rekordok: Referenciatípusok értékalapú egyenlőségi szemantikával és nem destruktív mutációval, amelyeket egy új
with
kifejezés támogat.Relációs mintaegyezés: Kiterjeszti a mintaegyeztetési képességeket a relációs operátorokra összehasonlító értékelésekhez és kifejezésekhez, beleértve a logikai mintákat – új kulcsszavakat
and
or
ésnot
.Legfelső szintű utasítások: A C#
Main
bevezetésének és tanulásának felgyorsítására szolgáló eszközként a módszer kihagyható, és az alkalmazás olyan egyszerű, mint az alábbi példa:System.Console.Write("Hello world!");
Függvénymutatók: Olyan nyelvi szerkezetek, amelyek a következő köztes nyelv (IL) opcode-jait teszik elérhetővé:
ldftn
éscalli
.
A C# 9 elérhető funkcióiról további információt a C# 9 újdonságai című témakörben talál.
Forrásgenerátorok
A kiemelt új C#-funkciók mellett a forrásgenerátorok is bevetik magukat a fejlesztői projektekbe. A forrásgenerátorok lehetővé teszik, hogy a fordítás során futó kód megvizsgálja a programot, és további fájlokat állítson elő, amelyek a kód többi részével együtt vannak lefordítva.
A forrásgenerátorokról további információt a C#-forrásgenerátorok és a C# forrásgenerátorminták bemutatása című témakörben talál.
F#-frissítések
Az F# a .NET funkcionális programozási nyelv, és a .NET 5 használatával a fejlesztők hozzáférhetnek az F# 5-höz. Az új funkciók egyike az interpolált sztringek, hasonlóan a C#-ban lévő interpolált sztringekhez, és még a JavaScripthez is.
let name = "David"
let age = 36
let message = $"{name} is {age} years old."
Az alapszintű sztringinterpoláció mellett van begépelt interpoláció is. A beírt interpolációval egy adott típusnak meg kell egyeznie a formátumkijelölővel.
let name = "David"
let age = 36
let message = $"%s{name} is %d{age} years old."
Ez a formátum hasonló ahhoz a sprintf
függvényhez, amely típusbiztos bemenetek alapján formáz egy sztringet.
További információ: Az F# 5 újdonságai.
Visual Basic-frissítések
A Visual Basic nem tartalmaz új nyelvi funkciókat a .NET 5-ben. A .NET 5 esetén azonban a Visual Basic támogatása a következőre terjed ki:
Leírás | dotnet new Paraméter |
---|---|
Konzolalkalmazás | console |
Osztálytár | classlib |
WPF-alkalmazás | wpf |
WPF-osztálykódtár | wpflib |
WPF egyéni vezérlőtár | wpfcustomcontrollib |
WPF felhasználói vezérlőtár | wpfusercontrollib |
Windows Forms (WinForms) alkalmazás | winforms |
Windows Forms (WinForms) osztálytár | winformslib |
Egységteszt projekt | mstest |
NUnit 3 tesztprojekt | nunit |
NUnit 3 tesztelem | nunit-test |
xUnit tesztprojekt | xunit |
A .NET CLI-ből származó projektsablonokkal kapcsolatos további információkért lásd: dotnet new
.
System.Text.Json új funkciók
A System.Text.Json és a következő új funkciókkal rendelkezik:
- Hivatkozások megőrzése és körkörös hivatkozások kezelése
- HttpClient és HttpContent kiterjesztési módszerek
- Számok engedélyezése vagy írása idézőjelekben
- Nem módosítható típusok és C# 9 rekordok támogatása
- Nem nyilvános tulajdonú tartozékok támogatása
- Támogatási mezők
- Tulajdonságok feltételes figyelmen kívül hagyása
- Nem sztringkulcsú szótárak támogatása
- Az egyéni konverterek számára a null érték kezelése
- JsonSerializerOptions másolása
- JsonSerializerOptions létrehozása webes alapértelmezett beállításokkal