A .NET 6 újdonságai
A .NET 6 a .NET 5 . A .NET 6 egyesíti az SDK-t, az alaptárakat és a futtatókörnyezetet mobil, asztali, IoT- és felhőalkalmazásokban. Az egyesítés mellett a .NET 6 ökoszisztéma a következő lehetőségeket kínálja:
Egyszerűsített fejlesztés: Az indulás egyszerű. A C# 10 új nyelvi funkciói csökkentik az íráshoz szükséges kód mennyiségét. A webes verembe és a minimális API-kba történő befektetésekkel egyszerűen írhat kisebb, gyorsabb mikroszolgáltatásokat.
Jobb teljesítmény: A .NET 6 a leggyorsabb teljes körű webes keretrendszer, amely csökkenti a számítási költségeket, ha a felhőben fut.
Végső hatékonysági: .NET 6 és Visual Studio 2022 gyors újratöltést, új git-eszközt, intelligens kódszerkesztést, robusztus diagnosztikai és tesztelési eszközöket, valamint jobb csapatmunkát biztosít.
A .NET 6 három évig támogatott, hosszú távú támogatás (LTS) kiadásként.
előzetes verziójú funkciók alapértelmezés szerint le vannak tiltva. Az éles környezetben való használatuk szintén nem támogatott, és egy későbbi verzióban is eltávolíthatók. Az új RequiresPreviewFeaturesAttribute az előzetes verziójú API-k megjegyzésére szolgál, és egy megfelelő elemző riasztást küld, ha ezeket az előzetes verziójú API-kat használja.
A .NET 6-ot a Visual Studio 2022 és újabb verziói támogatják.
Ez a cikk nem tartalmazza a .NET 6 összes új funkcióját. Az összes új funkció megtekintéséhez és a cikkben felsorolt funkciókkal kapcsolatos további információkért tekintse meg a .NET 6 bejelentéséről szóló
Teljesítmény
A .NET 6 számos teljesítménybeli fejlesztést tartalmaz. Ez a szakasz felsorol néhány fejlesztést – FileStream, profilalapú optimalizálásés AOT-fordítás. Részletes információkért tekintse meg a .NET 6 blogbejegyzésének
FileStream
A System.IO.FileStream típus újra lett írva a .NET 6-hoz, hogy jobb teljesítményt és megbízhatóságot biztosítson Windows rendszeren. Most FileStream soha nem blokkolja a windowsos aszinkron I/O-hoz való létrehozást. További információt a .NET 6 blogbejegyzésében
Profilvezérelt optimalizálás
A profilalapú optimalizálás (PGO) segítségével a JIT-fordító optimalizált kódot hoz létre a leggyakrabban használt típusok és kódelérési utak alapján. A .NET 6 dinamikus PGO-t vezet be. A dinamikus PGO együttműködik a rétegzett fordítással, hogy tovább optimalizálja a kódot a 0. rétegben üzembe helyezett további rendszerezések alapján. A dinamikus PGO alapértelmezés szerint le van tiltva, de a DOTNET_TieredPGO
környezeti változóval engedélyezheti. További információ: JIT teljesítménybeli fejlesztések.
Crossgen2
A .NET 6 bevezeti a Crossgen2-t, a Crossgen utódját, amely el lett távolítva. A Crossgen és a Crossgen2 olyan eszközök, amelyek előre összeállított (AOT) összeállítást biztosítanak az alkalmazások indítási idejének javítása érdekében. A Crossgen2 C++ helyett C#-ban van megírva, és olyan elemzéseket és optimalizálásokat hajthat végre, amelyek az előző verzióval nem voltak lehetségesek. További információ: Beszélgetés a Crossgen2-ről.
Arm64-támogatás
A .NET 6 kiadás támogatja a macOS Arm64 (vagy "Apple Silicon") és a Windows Arm64 operációs rendszereket natív Arm64-végrehajtáshoz és x64-emulációhoz. Emellett az x64- és Arm64 .NET-telepítők egymás mellett telepítenek. További információért lásd: .NET-támogatás macOS 11 és Windows 11 rendszerekhez, Arm64 és x64 számára.
Azonnali újratöltés
Hot reload egy olyan funkció, amely lehetővé teszi, hogy módosítsa az alkalmazás forráskódját, és azonnal alkalmazza ezeket a módosításokat a futó alkalmazásra. A funkció célja a hatékonyság növelése azáltal, hogy elkerüli az alkalmazások szerkesztések közötti újraindítását. A gyakori újratöltés a Visual Studio 2022-ben és a dotnet watch
parancssori eszközben érhető el. A gyakori újratöltés a .NET-alkalmazások legtöbb típusával, valamint a C#, a Visual Basic és a C++ forráskóddal működik. További információ: Gyakori elérésű újratöltés blogbejegyzés.
.NET MAUI
A .NET MAUI (többplatformos alkalmazás felület) még mindig előzetes állapotban van, egy kiadási jelölt verzió a 2022-es első negyedévben várható, míg az általános rendelkezésre állás (GA) a 2022-es második negyedévben válik elérhetővé. A .NET MAUI lehetővé teszi natív ügyfélalkalmazások létrehozását asztali és mobil operációs rendszerekhez egyetlen kódbázissal. További információkért tekintse meg a .NET többplatformos alkalmazás UI frissítési blogbejegyzését.
C# 10 és sablonok
A C# 10 olyan újításokat tartalmaz, mint global using
irányelvek, fájlhatókörű névtérdeklarációk és rekordstruktúra. További információ: C# nyelvi verzióelőzmények.
Ezzel a munkával összhangban a C# .NET SDK-projektsablonjait modernizáltuk az új nyelvi funkciók használatára:
-
async Main
módszer - Felső szintű kifejezések
- Cél típusú új kifejezések
-
implicit
global using
irányelvek - Fájlhatókörű névterek
- Null értékű hivatkozástípusok
Ha hozzáadja ezeket az új nyelvi funkciókat a projektsablonokhoz, az új kód az engedélyezett funkciókkal kezdődik. A .NET 6-ra való frissítés azonban nem érinti a meglévő kódot. A sablonmódosításokról további információt a .NET SDK: C# projektsablonok modernizált blogbejegyzésben talál.
F# és Visual Basic
Az F# 6 számos fejlesztést tartalmaz az F# nyelvhez és az F# Interactivehoz. További információkat az F# 6újdonságairól a
A Visual Basic továbbfejlesztette a Visual Studio és a Windows Forms projektindítási funkciójának előnyeit.
SDK-számítási feladatok
A .NET SDK méretének csökkentése érdekében egyes összetevők új, opcionális SDK-számítási feladatokba kerültek. Ezek az összetevők közé tartozik a .NET MAUI és a Blazor WebAssembly AOT. Ha a Visual Studiót használja, az gondoskodik a szükséges SDK-számítási feladatok telepítéséről. Ha a .NET CLIhasználja, az új dotnet workload
parancsokkal kezelheti a számítási feladatokat:
Parancs | Leírás |
---|---|
dotnet munkaterhelés keresés | Megkeresi az elérhető számítási feladatokat. |
dotnet számítási feladat telepítése | Egy megadott számítási feladatot telepít. |
dotnet számítási feladat eltávolítása | Eltávolít egy megadott számítási feladatot. |
dotnet számítási feladat frissítési | Frissíti a telepített számítási feladatokat. |
dotnet számítási feladatok javítása | Újratelepíti az összes telepített számítási feladatot, hogy kijavítsa a hibás telepítést. |
dotnet számítási feladatlista | A telepített számítási feladatok listája. |
További információ: Választható SDK-számítási feladatok.
System.Text.Json API-k
A .NET 6-ban számos fejlesztést hajtottak végre a System.Text.Json-ban, így most már ipari szinten alkalmazható szerializálási megoldás.
Forrásgenerátor
A .NET 6 egy új forrásgenerátort ad hozzá System.Text.Json-hoz. A JsonSerializer használatával történő forráslétrehozás működik, és több módon is konfigurálható. Javíthatja a teljesítményt, csökkentheti a memóriahasználatot, és megkönnyítheti az összeállítások optimalizálását. További információért lásd: A tükröződés vagy a forrásgenerálás kiválasztása a System.Text.Json, és A forrásgenerálás használata a System.Text.Json.
Írható DOM
Új, írható dokumentumobjektum-modell (DOM) lett hozzáadva, amely kiegészíti a már meglévő írásvédett DOM-et. Az új API egyszerűsített szerializálási alternatívát kínál olyan esetekben, amikor egyszerű régi CLR-objektumtípusok (POCO) használata nem lehetséges. Emellett hatékonyan navigálhat egy nagy JSON-fa alszakaszára, és beolvashat egy tömböt, vagy deszerializálhat egy POCO-t az alszakaszból. A következő új típusok lettek hozzáadva az írható DOM támogatásához:
További információ: JSON DOM-választási lehetőségek.
IAsyncEnumerable szerializálás
System.Text.Json mostantól támogatja a szerializálást és a deszerializálást IAsyncEnumerable<T> példányokkal. Az aszinkron szerializálási módszerek számba veszik a IAsyncEnumerable<T> példányokat egy objektumgráfban, majd JSON tömbökké szerializálják őket. A deszerializáláshoz hozzáadták az új JsonSerializer.DeserializeAsyncEnumerable<TValue>(Stream, JsonSerializerOptions, CancellationToken) metódust. További információkért lásd: IAsyncEnumerable szerializálása.
Egyéb új API-k
Új szerializálási felületek az érvényesítéshez és az alapértelmezett értékekhez:
További információ: Visszahívások.
Új tulajdonságrendezési attribútum:
-
További információ: Szerializált tulajdonságok sorrendjének konfigurálása.
Új módszer a "nyers" JSON írására:
-
További információ: Write Raw JSON.
Szinkron szerializálás és deszerializálás egy streambe:
- JsonSerializer.Deserialize(Stream, Type, JsonSerializerOptions)
- JsonSerializer.Deserialize(Stream, Type, JsonSerializerContext)
- JsonSerializer.Deserialize<TValue>(Stream, JsonSerializerOptions)
- JsonSerializer.Deserialize<TValue>(Stream, JsonTypeInfo<TValue>)
- JsonSerializer.Serialize(Stream, Object, Type, JsonSerializerOptions)
- JsonSerializer.Serialize(Stream, Object, Type, JsonSerializerContext)
- JsonSerializer.Serialize<TValue>(Stream, TValue, JsonSerializerOptions)
- JsonSerializer.Serialize<TValue>(Stream, TValue, JsonTypeInfo<TValue>)
Új lehetőség, amely figyelmen kívül hagy egy objektumot, ha a szerializálás során referenciaciklust észlel:
-
További információ: Körkörös hivatkozások figyelmen kívül hagyása.
Az System.Text.Json
szerializálásáról és deszerializálásáról szóló további információkért, kérjük, tekintse meg a JSON-szerializálást és -deszerializálást a .NET-ben.
HTTP/3
A .NET 6 tartalmazza a HTTP/3 előzetes verzióját, a HTTP új verzióját. A HTTP/3 a QUIC nevű új mögöttes kapcsolati protokoll használatával old meg néhány meglévő funkcionális és teljesítménybeli problémát. A QUIC gyorsabban létesít kapcsolatokat, és a kapcsolatok függetlenek az IP-címétől, lehetővé téve a mobil ügyfelek számára, hogy a Wi-fi és a mobilhálózatok között barangoljanak. További információkért lásd: HTTP/3 használata a HttpClienttel.
ASP.NET Core
ASP.NET Core tartalmazza a minimális API-k fejlesztését, a Blazor WebAssembly-alkalmazásokhoz készült idő előtti (AOT) fordítást és az egyoldalas alkalmazásokat. Emellett a Blazor-összetevők mostantól renderelhetők a JavaScriptből, és integrálhatók a meglévő JavaScript-alapú alkalmazásokkal. További információért lásd: Az újdonságok az ASP.NET Core 6-ban.
OpenTelemetria
A .NET 6 továbbfejlesztett támogatást nyújt OpenTelemetryszámára, amely olyan eszközök, API-k és SDK-k gyűjteménye, amelyek segítenek elemezni a szoftver teljesítményét és viselkedését. A System.Diagnostics.Metrics névtér API-k implementálják az OpenTelemetry Metrics API specifikációját. Például négy eszközosztály támogatja a különböző metrikák forgatókönyveit. A műszerosztályok a következők:
Biztonság
A .NET 6 előzetes verziójú támogatást biztosít két kulcsfontosságú biztonsági megoldáshoz: a Control-Flow Enforcement Technology (CET) és a "kizárólagos írási végrehajtás" (W^X).
A CET egy Intel-technológia, amely néhány újabb Intel- és AMD-processzorban érhető el. Olyan képességeket ad hozzá a hardverhez, amelyek védelmet nyújtanak a vezérlőfolyamat-eltérítési támadások ellen. A .NET 6 támogatja a CET-et Windows x64-alkalmazásokhoz, és kifejezetten engedélyeznie kell. További információ a .NET 6 Intel CET árnyék veremekkel való kompatibilitásáról: .
A W^X minden .NET 6-os operációs rendszerrel elérhető, de alapértelmezés szerint csak az Apple Silicon esetében engedélyezett. A W^X blokkolja a legegyszerűbb támadási útvonalat azzal, hogy nem engedélyezi a memóriaoldalak egyszerre írhatóságát és végrehajthatóságát.
IL-vágás
Az önálló telepítések finomítása javult. A .NET 5-ben csak a fel nem használt szerelvények lettek levágva. A .NET 6 a nem használt típusok és tagok levágását is hozzáadja. Emellett a vágási figyelmeztetések, amelyek olyan helyekre figyelmeztetnek, ahol a vágás eltávolíthatja a futtatáskor használt kódot, alapértelmezés szerint engedélyezettek. További információ: Önálló telepítések és végrehajtható fájlok vágása.
Kódelemzés
A .NET 6 SDK néhány új kódelemzőt tartalmaz, amelyek az API-kompatibilitással, a platformkompatibilitással, a csonkolásbiztonsággal, a span felhasználásával a sztringek összefűzésében és felosztásában, gyorsabb sztring API-kkal és gyorsabb gyűjtemény API-kkal kapcsolatosak. Az új (és eltávolított) elemzők teljes listáját a .NET 6
Egyéni platformvédők
A platformkompatibilitás-elemző eszköz a OperatingSystem osztály Is<Platform>
metódusait ismeri fel, például OperatingSystem.IsWindows(), mint platformvédőket. Az egyéni platformvédők engedélyezéséhez a .NET 6 két új attribútumot vezet be, amelyekkel a támogatott vagy nem támogatott platformnévvel jegyzetelhet mezőket, tulajdonságokat vagy metódusokat:
Windows Forms
Application.SetDefaultFont(Font) egy új metódus a .NET 6-ban, amely az alapértelmezett betűtípust állítja be az alkalmazáson belül.
A C# Windows Forms-alkalmazások sablonjai frissültek global using
irányelvek, fájlható névterek és null értékű hivatkozástípusok támogatásához. Emellett az alkalmazás bootstrap-kódját is tartalmazzák, amely csökkenti a sablonkódot, és lehetővé teszi a Windows Forms tervezőjének, hogy a tervezőfelületet az előnyben részesített betűtípusban jelenítse meg. A bootstrap-kód a ApplicationConfiguration.Initialize()
hívása, amely egy forrás által generált metódus, amely hívásokat bocsát ki más konfigurációs módszerekre, például Application.EnableVisualStyles(). Ezenkívül ha nem alapértelmezett betűtípust állít be az ApplicationDefaultFont MSBuild tulajdonságon keresztül, ApplicationConfiguration.Initialize()
hívást indít SetDefaultFont(Font).
További információért olvassa el a Mi újdonságok vannak a Windows Forms alkalmazásban című blogbejegyzést.
Forrás összeállítása
A forrás tarball, amely a .NET SDK összes forrását tartalmazza, mostantól a .NET SDK-build terméke. Más szervezetek, például a Red Hat, létrehozhatják az SDK saját verzióját ezzel a forrásoldali tarball használatával.
Célszoftver keretrendszer jelzők
További operációsrendszer-specifikus célkeret-monikerek (TFM-ek) lettek hozzáadva a .NET 6-hoz, például net6.0-android
, net6.0-ios
és net6.0-macos
. További információért lásd a .NET 5+ operációsrendszer-specifikus TFM-k.
Általános matematika
Az előzetes verzióban a .NET 6 általános típusain használható operátorok. A .NET 6 számos felületet vezet be, amelyek a C# 10 új előzetes verzióját használják, static abstract
felülettagokat. Ezek az interfészek különböző operátoroknak felelnek meg, például IAdditionOperators
a +
operátort jelölik. Az interfészek a System.Runtime.Experimental NuGet csomagban érhetők el. További információ: Általános matematikai blogbejegyzés.
NuGet-csomag érvényesítése
Ha Ön NuGet-kódtár fejlesztője, az új csomagérvényesítési eszköz lehetővé teszi annak ellenőrzését, hogy a csomagok konzisztensek és jól formázottak-e. Meghatározhatja, hogy:
- A csomagverziókban vannak kompatibilitástörő változások.
- A csomag minden futtatókörnyezet-specifikus implementációhoz ugyanazokat a nyilvános API-kat tartalmazza.
- A cél-keretrendszer vagy a futtatókörnyezet alkalmazhatósága terén vannak hiányosságok.
További információkért lásd a csomag érvényesítési folyamatával foglalkozó blogbejegyzést.
Tükröződési API-k
A .NET 6 a következő új API-kat vezeti be, amelyek ellenőrzik a kódot, és nullability-információkat nyújtanak:
- System.Reflection.NullabilityInfo
- System.Reflection.NullabilityInfoContext
- System.Reflection.NullabilityState
Ezek az API-k tükröződésalapú eszközök és szerializálók esetén hasznosak.
Microsoft.Extensions API-k
A .NET 6-ban számos bővítménynévtér fejlesztései vannak, ahogy az alábbi táblázat is mutatja.
Namespace | Fejlesztések |
---|---|
Microsoft.Extensions.DependencyInjection |
CreateAsyncScope lehetővé teszi egy using utasítás biztonságos használatát egy IAsyncDisposable szolgáltatást regisztráló szolgáltató számára. |
Microsoft.Extensions.Hosting | Az új ConfigureHostOptions metódusok leegyszerűsítik az alkalmazásbeállítást. |
Microsoft.Extensions.Logging |
Microsoft.Extensions.Logging rendelkezik egy új forrásgenerátorsal a teljesítménynaplózási API-khoz. A forrásgenerátor akkor aktiválódik, ha az új LoggerMessageAttribute-t hozzáadja egy partial naplózási módszerhez. Fordításkor a generátor létrehozza a partial metódus implementálását, amely általában futásidőben gyorsabb, mint a meglévő naplózási megoldások. A részletes információért lásd: fordítási időben naplózási forrás generálása. |
Új LINQ API-k
A .NET 6-ban számos LINQ-metódus lett hozzáadva. Az alábbi táblázatban felsorolt új metódusok többsége egyenértékű metódusokat tartalmaz System.Linq.Queryable típusban.
Dátum-, idő- és időzóna-fejlesztések
A .NET 6-ban a következő két szerkezet lett hozzáadva: System.DateOnly és System.TimeOnly. Ezek egy DateTimedátum- és időrészét jelölik. DateOnly születésnapok és évfordulók esetén hasznos, TimeOnly pedig a napi riasztásokhoz és a heti munkaidőhöz.
Mostantól használhatja az Internet Assigned Numbers Authority (IANA) vagy a Windows időzóna-azonosítóit bármely olyan operációs rendszeren, amelyen telepítve vannak az időzóna adatai. A TimeZoneInfo.FindSystemTimeZoneById(String) metódus frissült, hogy automatikusan átalakítsa a bemenetét egy Windows-időzónából IANA-időzónává (vagy fordítva), ha a kért időzóna nem található a rendszeren. Emellett az új metódusok TryConvertIanaIdToWindowsId(String, String) és TryConvertWindowsIdToIanaId lettek hozzáadva olyan helyzetekhez, amikor továbbra is manuálisan kell átalakítania az időzóna formátumát egy másikra.
Van még néhány más időzóna-fejlesztés is. További információ: .NET 6dátum-, idő- és időzóna-fejlesztései.
PriorityQueue osztály
Az új PriorityQueue<TElement,TPriority> osztály olyan elemek gyűjteményét jelöli, amelyeknek értéke és prioritása is van. Az elemeket növekvő prioritási sorrendben veszik ki, azaz a legalacsonyabb prioritású elemet veszik ki először. Ez az osztály minimálhalom adatstruktúrát valósít meg.
Lásd még:
- Az F# 6 újdonságai
- Az EF Core 6 újdonságai
- Mi újdonság az ASP.NET Core 6-ban
- .NET 6 kibocsátási megjegyzései
- Visual Studio 2022 kibocsátási megjegyzései
- Blog: A .NET 6 bejelentése
- Blog: Próbálja ki az új System.Text.Json forrásgenerátor