A .NET 7 újdonságai
A .NET 7 a .NET 6 utódja, és az egységes, modern, egyszerű és gyors megoldásokra összpontosít. A .NET 7 18 hónapig támogatott lesz standard szintű (STS) kiadásként (korábbi nevén aktuális kiadásként).
Ez a cikk a .NET 7 új funkcióit sorolja fel, és az egyes szolgáltatásokra mutató részletesebb információkra mutató hivatkozásokat tartalmaz.
A .NET 7-re frissített összes .NET-cikket a .NET-dokumentumokban találja : A .NET 7 kiadás újdonságai.
Teljesítmény
A teljesítmény a .NET 7 fő fókusza, és minden funkcióját a teljesítmény szem előtt tartásával tervezték. A .NET 7 emellett a következő fejlesztéseket tartalmazza, amelyek kizárólag a teljesítményre irányulnak:
- A halmozott csere (OSR) a rétegzett fordítás kiegészítése. Lehetővé teszi, hogy a futtatókörnyezet módosítsa a végrehajtás közepén egy jelenleg futó metódus által végrehajtott kódot (vagyis amíg az "veremen van"). A hosszú ideig futó metódusok a végrehajtás közepén optimalizáltabb verziókra válthatnak.
- A profilalapú optimalizálás (PGO) mostantól együttműködik az OSR-vel, és könnyebben engedélyezhető (a projektfájlhoz való hozzáadással
<TieredPGO>true</TieredPGO>
). A PGO további műveleteket is képes eszközzé tenni és optimalizálni, például a meghatalmazottakat. - Továbbfejlesztett kódlétrehozás az Arm64-hez.
- A natív AOT egy különálló végrehajtható fájlt hoz létre a célplatform fájlformátumában, külső függőségek nélkül. Teljesen natív, il vagy JIT nélkül, és gyors indítási időt és kis, önálló üzembe helyezést biztosít. A .NET 7-ben a natív AOT a konzolalkalmazásokra összpontosít, és az alkalmazásokat le kell vágni.
- A Mono futtatókörnyezet teljesítménybeli fejlesztései, amelyek a Blazor WebAssembly, az Android és az iOS-alkalmazásokat működtetik.
A .NET 7-et ennyire gyorssá tevő teljesítményközpontú funkciók részletes megtekintéséhez tekintse meg a .NET 7 blogbejegyzés teljesítménybeli fejlesztéseit.
System.Text.Json szerializálás
A .NET 7 a System.Text.Json szerializálás fejlesztéseit tartalmazza a következő területeken:
- A szerződés testreszabása nagyobb mértékben szabályozza a típusok szerializálásának és deszerializálásának módját. További információ: JSON-szerződés testreszabása.
- Felhasználó által definiált típushierarchiák polimorfikus szerializálása . További információ: Származtatott osztályok tulajdonságainak szerializálása.
- A szükséges tagok támogatása, amelyek olyan tulajdonságok, amelyeknek jelen kell lenniük a JSON hasznos adataiban a deszerializálás sikerességéhez. További információ: Kötelező tulajdonságok.
Ezekről és más frissítésekről a System.Text.Json újdonságai a .NET 7 blogbejegyzésében olvashat.
Általános matematika
A .NET 7 és a C# 11 olyan újításokat tartalmaz, amelyek lehetővé teszik a matematikai műveletek általános végrehajtását, vagyis anélkül, hogy pontosan ismernie kellene a pontosan alkalmazott típust. Ha például olyan metódust szeretne írni, amely két számot ad hozzá, korábban minden típushoz túlterhelte a metódust. Most már írhat egyetlen általános metódust, amelyben a típusparaméter számszerű típusra van korlátozva. További információkért lásd az általános matematikai cikket és az általános matematikai blogbejegyzést.
Reguláris kifejezések
. A NET reguláris kifejezéstárában jelentős funkcionális és teljesítménybeli fejlesztések történtek a .NET 7-ben:
Az új lehetőség RegexOptions.NonBacktracking lehetővé teszi az egyeztetést olyan megközelítéssel, amely elkerüli a visszakövetést, és garantálja a lineáris idejű feldolgozást a bemenet hosszában. A vissza nem vonási motor nem használható jobbról balra történő kereséshez, és néhány egyéb korlátozással is rendelkezik, de gyors az összes normál kifejezéshez és bemenethez. További információ: Visszalépési mód.
A reguláris kifejezésforrás-generátorok újak. A forrásgenerátorok fordításkor a mintához optimalizált motort építenek ki, amely teljesítménybeli előnyöket biztosít. A kibocsátott forrás a projekt része, így megtekintheti és hibakeresésre használhatja. Emellett egy új forrásgenerátor diagnosztikai
SYSLIB1045
riasztást is küld a használt Regex helyekre, amelyek átalakíthatók a forrásgenerátorra. További információ: .NET reguláris kifejezésforrás-generátorok.A kis- és nagybetűket érzéketlen keresésekhez a .NET 7 nagy teljesítménynövekedést tartalmaz. A nyereség azért származik, mert a beállítás már RegexOptions.IgnoreCase nem hívja ToLower meg a mintában szereplő karaktereket és a bemenet minden egyes karakterét. Ehelyett az összes burkolattal kapcsolatos munka a kialakításkor Regex történik.
Regex Mostantól támogatja a spanokat egyes API-k esetében. A támogatás részeként a következő új metódusok lettek hozzáadva:
- Regex.EnumerateMatches
- Regex.Count
- Regex.IsMatch(ReadOnlySpan<Char>) (és néhány egyéb túlterhelés)
Ezekről és egyéb fejlesztésekről további információt a .NET 7 blogbejegyzésében, a Reguláris kifejezés fejlesztései című blogbejegyzésben talál.
.NET-kódtárak
Számos fejlesztés történt a .NET-kódtár API-kban. Néhányat a cikk más, dedikált szakaszai is megemlítenek. Néhányat az alábbi táblázat foglal össze.
Leírás | API-k | További információk |
---|---|---|
Mikroszekundumok és nanoszekundumok támogatása , TimeOnly, DateTimeés DateTimeOffset típusok esetén TimeSpan | - DateTime.Microsecond - DateTime.Nanosecond - DateTime.AddMicroseconds(Double) - Új DateTime konstruktor túlterhelése - DateTimeOffset.Microsecond - DateTimeOffset.Nanosecond - DateTimeOffset.AddMicroseconds(Double) - Új DateTimeOffset konstruktor túlterhelése - TimeOnly.Microsecond - TimeOnly.Nanosecond - TimeSpan.Microseconds - TimeSpan.Nanoseconds - TimeSpan.FromMicroseconds(Double) - És mások... |
Ezek az API-k azt jelentik, hogy már nem kell számításokat végeznie a "tick" értéken a mikroszekundumos és nanoszekundumos értékek meghatározásához. További információ: .NET 7 Preview 4 blogbejegyzés. |
API-k a Tar-archívumok olvasásához, írásához, archiváláshoz és kinyeréshez | System.Formats.Tar | További információ: .NET 7 Preview 4 és .NET 7 Preview 6 blogbejegyzések. |
Sebességkorlátozó API-k az erőforrások védelméhez a forgalom biztonságos szinten tartásával | RateLimiter és mások a System.Threading.RateLimiting NuGet-csomagban | További információ: HTTP-kezelő sebességkorlátozása a .NET-ben és a .NET sebességkorlátozásának bejelentése. |
API-k az összes adat beolvasásához Stream | - Stream.ReadExactly - Stream.ReadAtLeast |
Stream.Read kevesebb adatot ad vissza, mint ami a streamben elérhető. Az új ReadExactly metódusok pontosan a kért bájtok számát olvassák, az új ReadAtLeast metódusok pedig legalább a kért bájtok számát. További információ: .NET 7 Preview 5 blogbejegyzés. |
Új típuskonverterek a DateOnly , TimeOnly , Int128 , UInt128 és Half |
A névtérben System.ComponentModel : - DateOnlyConverter - TimeOnlyConverter - Int128Converter - UInt128Converter - HalfConverter |
A típuskonvertereket gyakran használják az értéktípusok sztringgé alakításához. Ezek az új API-k típuskonvertereket adnak hozzá a legutóbb hozzáadott típusokhoz. |
Metrikák támogatása a következőhöz: IMemoryCache | - MemoryCacheStatistics - MemoryCache.GetCurrentStatistics() |
GetCurrentStatistics() Lehetővé teszi eseményszámlálók vagy metrikák API-k használatát egy vagy több memória-gyorsítótár statisztikáinak nyomon követéséhez. További információ: .NET 7 Preview 4 blogbejegyzés. |
Unix-fájlengedélyek lekéréséhez és beállításához szükséges API-k | - System.IO.UnixFileMode Enum - File.GetUnixFileMode - File.SetUnixFileMode - FileSystemInfo.UnixFileMode - Directory.CreateDirectory(String, UnixFileMode) - FileStreamOptions.UnixCreateMode |
További információ: .NET 7 Preview 7 blogbejegyzés. |
Attribútum, amely jelzi, hogy milyen szintaxis várható egy sztringben | StringSyntaxAttribute | Megadhatja például, hogy egy string paraméter normál kifejezést várjon, ha a paramétert a következőhöz [StringSyntax(StringSyntaxAttribute.Regex)] rendeli: . |
Api-k a JavaScripttel való együttműködéshez a böngészőben vagy más WebAssembly-architektúrákban való futtatáskor | System.Runtime.InteropServices.JavaScript | A JavaScript-alkalmazások a .NET 7 kibővített WebAssembly-támogatásával újra felhasználhatják a JavaScriptből származó .NET-kódtárakat. További információ: A .NET használata bármely JavaScript-alkalmazásból a .NET 7-ben. |
Megfigyelhetőség
A .NET 7 továbbfejleszti a megfigyelhetőséget. A megfigyelhetőség segít megérteni az alkalmazás skálázáskor és a technikai összetettség növekedésével kapcsolatos állapotát. . A NET megfigyelhetőségi implementációja elsősorban az OpenTelemetria köré épül. A fejlesztések közé tartoznak a következők:
- Az új Activity.CurrentChanged esemény, amellyel észlelheti, hogy mikor változik egy felügyelt szál span környezete.
- Új, performans enumerator metódusok a tulajdonságokhoz Activity : EnumerateTagObjects(), EnumerateLinks()és EnumerateEvents().
További információ: .NET 7 Preview 4 blogbejegyzés.
.NET SDK
A .NET 7 SDK javítja a CLI-sablon használatát. Emellett lehetővé teszi a tárolókban való közzétételt és a központi csomagkezelést a NuGettel.
Sablonok
A parancs és a dotnet new
sablonkészítés terén néhány üdvözlendő fejlesztés történt.
dotnet new
A dotnet new
cli parancs, amely sablon alapján hoz létre új projektet, konfigurációs fájlt vagy megoldást, mostantól támogatja a lapkitöltést a feltáráshoz:
- Elérhető sablonnevek
- Sablonbeállítások
- Engedélyezett beállításértékek
Emellett a jobb megfelelőség érdekében az install
, uninstall
, search
, , list
és update
alparancsok már nem rendelkeznek az --
előtaggal.
Tartalomkészítés
A .NET 7 új koncepciója, a sablonkorlátozások segítségével meghatározhatja, hogy a sablonok milyen környezetben legyenek engedélyezve. A korlátozások segítenek a sablonmotornak meghatározni, hogy mely sablonokat kell megjelenítenie a parancsokban, például dotnet new list
. A sablont egy operációs rendszerre, egy sablonmotor gazdagépére (például a .NET CLI-re vagy a Visual Studióban a New Project párbeszédpanelre) és egy telepített számítási feladatra korlátozhatja. A sablon konfigurációs fájljában korlátozásokat határozhat meg.
A sablonkonfigurációs fájlban mostantól több értéket is engedélyező sablonparamétert jegyzetelhet. A sablon például web
több hitelesítési formát is lehetővé tesz.
További információ: .NET 7 Preview 6 blogbejegyzés.
Közzététel tárolóban
A tárolók az egyik legegyszerűbb módja az alkalmazások és szolgáltatások széles körének terjesztésének és futtatásának a felhőben. A tárolólemezképek mostantól a .NET SDK támogatott kimeneti típusai, és az alkalmazások tárolóalapú verzióit is létrehozhatja a .NET SDK használatával dotnet publish
. A funkcióval kapcsolatos további információkért lásd : A .NET SDK beépített tárolótámogatásának bejelentése. Az oktatóanyagért lásd : .NET-alkalmazások tárolóba helyezése dotnet-közzététellel.
Központi csomagkezelés
A NuGet központi csomagkezelési (CPM) funkciójával mostantól egyetlen helyről kezelheti a projektek gyakori függőségeit. Az engedélyezéshez hozzáad egy Directory.Packages.props fájlt az adattár gyökeréhez. Ebben a fájlban állítsa be az MSBuild tulajdonságot ManagePackageVersionsCentrally
a gyakori csomagfüggőség verzióiratrue
, és adja hozzá az elemeket.PackageVersion
Ezután az egyes projektfájlokban kihagyhatja Version
az attribútumokat a központilag felügyelt csomagokra hivatkozó PackageReference-elemekből.
További információ: Központi csomagkezelés.
P/Forráslétrehozás meghívása
A .NET 7 egy forrásgenerátort vezet be a platformhívásokhoz (P/Invokes) a C#-ban. A forrásgenerátor a következő metódusokat keresi LibraryImportAttributestatic
a partial
rendezési kód fordítási idejének forrásának aktiválásához. A fordítási kód fordításkor történő generálásával nem kell il-csonkot létrehozni futásidőben, ahogy a használat során DllImportAttributeis. A forrásgenerátor javítja az alkalmazás teljesítményét, és lehetővé teszi az alkalmazás idő előtti (AOT) fordítását is. További információ: Forrásgenerálás platformhívásokhoz és Egyéni rendezők használata a forrás által generált P/Invokes szolgáltatásban.
Kapcsolódó kiadások
Ez a szakasz a .NET 7 kiadással egybeeső kiadásokkal rendelkező kapcsolódó termékekre vonatkozó információkat tartalmaz.
Visual Studio 2022 17.4-es verzió
További információ: A Visual Studio 2022 újdonságai.
C# 11
A C# 11 támogatja az általános matematikai, nyers sztringkonstansokat, fájlhatókörű típusokat és egyéb új funkciókat. További információ: A C# 11 újdonságai.
F# 7
Az F# 7 folytatja a nyelv egyszerűbbé tételének és a teljesítmény javításának és az új C# funkciókkal való együttműködésnek az útját. További információ: Az F# 7 bejelentése.
.NET MAUI
A .NET többplatformos alkalmazás felhasználói felülete (.NET MAUI) egy platformfüggetlen keretrendszer natív mobil- és asztali alkalmazások C# és XAML használatával történő létrehozásához. Egyetlen API-vá egyesíti az Android, az iOS, a macOS és a Windows API-kat. A legújabb frissítésekről a .NET 7.NET MAUI újdonságai című témakörben olvashat.
ASP.NET Core
ASP.NET Core 7.0 tartalmazza a sebességkorlátozó köztes szoftvereket, a minimális API-k továbbfejlesztését és a gRPC JSON-átkódolást. Az összes frissítésről további információt a ASP.NET Core 7 újdonságai című témakörben talál.
EF Core
Az Entity Framework Core 7.0 tartalmazza a JSON-oszlopok szolgáltatói támogatását, a módosítások mentésének jobb teljesítményét és az egyéni fordított mérnöki sablonokat. Az összes frissítésről további információt az EF Core 7.0 újdonságai című témakörben talál.
Windows Forms
A .NET 7-hez készült Windows Formsban sok munka történt. A fejlesztések a következő területeken történtek:
- Akadálymentesség
- Magas DPI és skálázás
- Adatkötés
További információ: A Windows Forms újdonságai a .NET 7-ben.
WPF
A .NET 7 WPF számos hibajavítást, valamint teljesítménybeli és akadálymentességi fejlesztést tartalmaz. További információ: A WPF újdonságai a .NET 7 blogbejegyzésében.
Orleans
Orleans platformfüggetlen keretrendszer robusztus, skálázható elosztott alkalmazások létrehozásához. További információ a legújabb frissítésekről Orleans: Migrálás 3.x-ről Orleans 7.0-ra.
.NET Upgrade Assistant és CoreWCF
A .NET frissítési segéd mostantól támogatja a kiszolgálóoldali WCF-alkalmazások CoreWCF-re való frissítését, amely a WCF közösség által létrehozott portja a .NET -re (Core). További információ: WCF kiszolgálóoldali projekt frissítése a CoreWCF használatára.
ML.NET
ML.NET mostantól tartalmaz egy szövegbesorolási API-t, amely megkönnyíti az egyéni szövegbesorolási modellek betanítása a legújabb korszerű mélytanulási technikákkal. További információ: Az AutoML és az eszközhasználat újdonságai, valamint a ML.NET Text Classification API blogbejegyzéseinek bemutatása.