Megosztás a következőn keresztül:


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:

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:

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

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.

Lásd még