Novinky v .NET 7

.NET 7 je následník .NET 6 a zaměřuje se na jednotnou, moderní, jednoduchou a rychlou. .NET 7 se bude podporovat po dobu 18 měsíců jako verze standardní podpory (STS) (dříve označovaná jako aktuální verze).

Tento článek uvádí nové funkce rozhraní .NET 7 a obsahuje odkazy na podrobnější informace o jednotlivých funkcích.

Všechny články .NET, které byly aktualizovány pro .NET 7, najdete v dokumentaci k .NET: Co je nového pro verzi .NET 7.

Výkon

Výkon je klíčovým cílem rozhraní .NET 7 a všechny jeho funkce jsou navržené s ohledem na výkon. Kromě toho .NET 7 zahrnuje následující vylepšení zaměřená čistě na výkon:

  • Náhrada na zásobníku (OSR) je doplněk vrstvené kompilace. Umožňuje modulu runtime změnit kód spuštěný aktuálně spuštěnou metodou uprostřed jejího spuštění (to znamená, že je "na zásobníku"). Dlouhotrvající metody se můžou přepnout na optimalizovanější verze uprostřed spouštění.
  • Optimalizace s asistencí profilu (PGO) teď funguje s OSR a je jednodušší ji povolit (přidáním <TieredPGO>true</TieredPGO> do souboru projektu). PGO může také instrumentovat a optimalizovat další věci, jako jsou delegáti.
  • Vylepšené generování kódu pro Arm64
  • Nativní AOT vytvoří samostatný spustitelný soubor ve formátu souboru cílové platformy bez externích závislostí. Je zcela nativní bez IL nebo JIT a poskytuje rychlý čas spuštění a malé samostatné nasazení. Nativní AOT se v .NET 7 zaměřuje na konzolové aplikace a vyžaduje oříznutí aplikací.
  • Vylepšení výkonu mono modulu runtime, který využívá aplikace Blazor WebAssembly, Android a iOS.

Podrobný pohled na řadu funkcí zaměřených na výkon, díky kterým je .NET 7 tak rychlý, najdete v blogovém příspěvku .NET 7 vylepšení výkonu.

Serializace System.Text.Json

.NET 7 zahrnuje vylepšení serializace System.Text.Json v následujících oblastech:

Informace o těchto a dalších aktualizacích najdete v blogovém příspěvku System.Text.Json v .NET 7 .

Obecná matematika

.NET 7 a C# 11 zahrnují inovace, které umožňují provádět matematické operace obecně – to znamená, že nemusíte znát přesný typ, se kterým pracujete. Pokud byste například chtěli napsat metodu, která sečte dvě čísla, museli jste dříve přidat přetížení metody pro každý typ. Teď můžete napsat jednu obecnou metodu, kde je parametr typu omezený na typ podobný číslu. Další informace najdete v obecném matematickém článku a v blogovém příspěvku Obecné matematiky .

Regulární výrazy

. Knihovna regulárních výrazů technologie NET zaznamenala významná vylepšení funkčnosti a výkonu v .NET 7:

  • Nová možnost RegexOptions.NonBacktracking umožňuje porovnávání pomocí přístupu, který zabraňuje zpětnému navracení a zaručuje zpracování lineárního času v délce vstupu. Modul bez zpětného navracení se nedá použít ve vyhledávání zprava doleva a má několik dalších omezení, ale je rychlý pro všechny regulární výrazy a vstupy. Další informace naleznete v tématu Režim zpětného navracení.

  • Generátory zdrojů regulárních výrazů jsou nové. Generátory zdrojů vytvářejí modul, který je optimalizovaný pro váš vzor v době kompilace, a poskytuje tak výhody výkonu propustnosti. Zdroj, který se vygeneruje, je součástí projektu, takže ho můžete zobrazit a ladit. Kromě toho vás nová diagnostická SYSLIB1045 výstraha generátoru zdrojů upozorní na místa, která můžete použít Regex , která by se dala převést na generátor zdroje. Další informace najdete v tématu Generátory zdrojů regulárních výrazů .NET.

  • Pro vyhledávání bez rozlišování malých a velkých písmen zahrnuje .NET 7 velké zvýšení výkonu. Zisky se dají dosáhnout, protože určení RegexOptions.IgnoreCase už nebude volat ToLower každý znak ve vzoru a na každém znaku ve vstupu. Místo toho se při vytváření provádí Regex veškerá práce související s velikostí.

  • Regex nyní podporuje rozsahy pro některá rozhraní API. V rámci této podpory byly přidány následující nové metody:

Další informace o těchto a dalších vylepšeních najdete v blogovém příspěvku .NET 7 o vylepšení regulárních výrazů.

Knihovny .NET

V rozhraních API knihovny .NET bylo provedeno mnoho vylepšení. Některé jsou uvedeny v jiných vyhrazených částech tohoto článku. Některé další jsou shrnuté v následující tabulce.

Popis Rozhraní API Další informace
Podpora mikrosekund a nanosekund v TimeSpan, TimeOnly, DateTimea DateTimeOffset typech - DateTime.Microsecond
- DateTime.Nanosecond
- DateTime.AddMicroseconds(Double)
- Nové DateTime přetížení konstruktoru

- DateTimeOffset.Microsecond
- DateTimeOffset.Nanosecond
- DateTimeOffset.AddMicroseconds(Double)
- Nové DateTimeOffset přetížení konstruktoru

- TimeOnly.Microsecond
- TimeOnly.Nanosecond

- TimeSpan.Microseconds
- TimeSpan.Nanoseconds
- TimeSpan.FromMicroseconds(Double)
- A další...
Tato rozhraní API znamenají, že už nemusíte provádět výpočty s hodnotou "tick" k určení mikrosekundových a nanosekundových hodnot. Další informace najdete v blogovém příspěvku .NET 7 Preview 4 .
Rozhraní API pro čtení, zápis, archivaci a extrahování archivů Tar System.Formats.Tar Další informace najdete v blogových příspěvcích k .NET 7 Preview 4 a .NET 7 Preview 6 .
Omezování rychlosti rozhraní API pro ochranu prostředku udržováním provozu na bezpečné úrovni RateLimiter a další v balíčku System.Threading.RateLimiting NuGet Další informace naleznete v tématu Omezení rychlosti obslužné rutiny HTTP v .NET a Oznámení omezování rychlosti pro .NET.
Rozhraní API pro čtení všech dat z Stream - Stream.ReadExactly
- Stream.ReadAtLeast
Stream.Read může vrátit méně dat, než je v datovém proudu k dispozici. Nové ReadExactly metody čtou přesně požadovaný počet bajtů a nové ReadAtLeast metody čtou alespoň požadovaný počet bajtů. Další informace najdete v blogovém příspěvku .NET 7 Preview 5 .
Nové převaděče typů pro DateOnly, TimeOnly, Int128, UInt128, a Half System.ComponentModel V oboru názvů:

- DateOnlyConverter
- TimeOnlyConverter
- Int128Converter
- UInt128Converter
- HalfConverter
Převaděče typů se často používají k převodu hodnotových typů na řetězec a z řetězce. Tato nová rozhraní API přidávají převaděče typů pro typy, které byly přidány v poslední době.
Podpora metrik pro IMemoryCache - MemoryCacheStatistics
- MemoryCache.GetCurrentStatistics()
GetCurrentStatistics() umožňuje používat čítače událostí nebo rozhraní API metrik ke sledování statistik pro jednu nebo více mezipamětí paměti. Další informace najdete v blogovém příspěvku .NET 7 Preview 4 .
Rozhraní API pro získání a nastavení oprávnění k souborům unix - System.IO.UnixFileMode Výčtu
- File.GetUnixFileMode
- File.SetUnixFileMode
- FileSystemInfo.UnixFileMode
- Directory.CreateDirectory(String, UnixFileMode)
- FileStreamOptions.UnixCreateMode
Další informace najdete v blogovém příspěvku .NET 7 Preview 7 .
Atribut označující, jaký druh syntaxe se očekává v řetězci StringSyntaxAttribute Můžete například určit, že string parametr očekává regulární výraz zadáním parametru .[StringSyntax(StringSyntaxAttribute.Regex)]
Rozhraní API pro spolupráci s JavaScriptem při spuštění v prohlížeči nebo v jiných architekturách WebAssembly System.Runtime.InteropServices.JavaScript Aplikace v JavaScriptu můžou používat rozšířenou podporu WebAssembly v .NET 7 k opětovnému použití knihoven .NET z JavaScriptu. Další informace naleznete v tématu Použití .NET z libovolné javascriptové aplikace v .NET 7.

Pozorovatelnost

.NET 7 vylepšuje pozorovatelnost. Pozorovatelnost vám pomůže pochopit stav vaší aplikace, jak se škáluje, a jak se zvyšuje technická složitost. . Implementace pozorovatelnosti technologie NET je primárně postavená na OpenTelemetry. Mezi vylepšení patří:

Další informace najdete v blogovém příspěvku .NET 7 Preview 4 .

.NET SDK

Sada .NET 7 SDK vylepšuje prostředí šablon rozhraní příkazového řádku. Umožňuje také publikování do kontejnerů a centrální správu balíčků pomocí NuGetu.

Šablony

U příkazu a vytváření šablon došlo k dotnet new některým uvítacím vylepšením.

dotnet new

Příkaz dotnet new rozhraní příkazového řádku, který vytvoří nový projekt, konfigurační soubor nebo řešení založené na šabloně, teď podporuje dokončování tabulátoru pro zkoumání:

  • Dostupné názvy šablon
  • Možnosti šablony
  • Povolené hodnoty možností

Kromě toho, pro lepší shodu, install, , uninstallsearch, lista update dílčí příkazy již nemají předponu--.

Vytváření obsahu

Omezení šablon, nový koncept pro .NET 7, vám umožní definovat kontext, ve kterém jsou šablony povolené. Omezení pomáhají modulu šablon určit, které šablony by se měly zobrazovat v příkazech, jako je dotnet new list. Šablonu můžete omezit na operační systém, hostitele modulu šablon (například dialogové okno .NET CLI nebo Nový projekt v sadě Visual Studio) a nainstalovanou úlohu. Omezení definujete v konfiguračním souboru šablony.

V konfiguračním souboru šablony teď můžete přidat poznámky k parametru šablony, protože umožňuje více hodnot. Šablona například web umožňuje více forem ověřování.

Další informace najdete v blogovém příspěvku .NET 7 Preview 6 .

Publikování do kontejneru

Kontejnery představují jeden z nejjednodušších způsobů distribuce a provozování široké škály aplikací a služeb v cloudu. Image kontejneru jsou nyní podporovaným výstupním typem sady .NET SDK a můžete vytvářet kontejnerizované verze aplikací pomocí dotnet publish. Další informace o této funkci najdete v tématu Oznámení o podpoře integrovaného kontejneru pro sadu .NET SDK. Kurz najdete v tématu Kontejnerizace aplikace .NET s publikováním dotnet.

Centrální správa balíčků

Teď můžete spravovat běžné závislosti ve svých projektech z jednoho umístění pomocí funkce centrální správy balíčků NuGet (CPM). Pokud ho chcete povolit, přidejte do kořenového adresáře úložiště soubor Directory.Packages.props . V tomto souboru nastavte vlastnost ManagePackageVersionsCentrally MSBuild na true a přidejte verze pro běžnou závislost balíčku pomocí PackageVersion položek. V jednotlivých souborech projektu pak můžete vynechat Version atributy ze všech položek PackageReference , které odkazují na centrálně spravované balíčky.

Další informace najdete v tématu Správa centrálních balíčků.

Generování zdroje volání nespravovaného kódu

.NET 7 zavádí zdrojový generátor pro volání platformy (volání nespravovaného kódu) v jazyce C#. Generátor zdroje hledá LibraryImportAttribute , staticpartial metody pro aktivaci generování zdroje kompilace čas seřaďovací kód. Generováním zařazování kódu v době kompilace není nutné vygenerovat žádný zástupný kód IL za běhu, stejně jako při použití DllImportAttribute. Generátor zdrojů zlepšuje výkon aplikace a také umožňuje, aby aplikace byla předem zkompilována (AOT). Další informace najdete v tématu Generování zdroje pro vyvolání platformy a použití vlastních zařazovačů ve zdrojově generovaných voláních P/Invokes.

Tato část obsahuje informace o souvisejících produktech, které mají verze, které se shodují s verzí .NET 7.

Visual Studio 2022 verze 17.4

Další informace najdete v tématu Co je nového v sadě Visual Studio 2022.

C# 11

C# 11 obsahuje podporu obecných matematických, nezpracovaných řetězcových literálů, typů oborů souborů a dalších nových funkcí. Další informace najdete v tématu Co je nového v jazyce C# 11.

F# 7

F# 7 pokračuje v cestě k jednoduššímu jazyku a zlepšení výkonu a spolupráce s novými funkcemi jazyka C#. Další informace naleznete v tématu Oznámení F# 7.

.NET MAUI

.NET Multi-platform App UI (.NET MAUI) je multiplatformní rozhraní pro vytváření nativních mobilních a desktopových aplikací pomocí C# a XAML. Sjednocuje rozhraní API pro Android, iOS, macOS a Windows do jednoho rozhraní API. Informace o nejnovějších aktualizacích najdete v tématu Co je nového v .NET MAUI pro .NET 7.

ASP.NET Core

ASP.NET Core 7.0 zahrnuje middleware omezování rychlosti, vylepšení minimálních rozhraní API a transkódování json gRPC. Informace o všech aktualizacích najdete v tématu Co je nového v ASP.NET Core 7.

EF Core

Entity Framework Core 7.0 zahrnuje podporu sloupců JSON nezávislou na poskytovateli, vylepšený výkon pro ukládání změn a vlastní šablony zpětné analýzy. Informace o všech aktualizacích najdete v tématu Co je nového v EF Core 7.0.

Windows Forms

Mnoho práce přešlo do model Windows Forms pro .NET 7. Vylepšení byla provedena v následujících oblastech:

  • Usnadnění
  • Vysoká DPI a škálování
  • Datové vazby

Další informace najdete v tématu Co je nového v model Windows Forms v .NET 7.

WPF

WPF v .NET 7 obsahuje řadu oprav chyb a vylepšení výkonu a přístupnosti. Další informace najdete v blogovém příspěvku o novinkách WPF v .NET 7 .

Orleans

Orleans je multiplatformní architektura pro vytváření robustních a škálovatelných distribuovaných aplikací. Informace o nejnovějších aktualizacích Orleansnaleznete v tématu Migrace z Orleans verze 3.x na verzi 7.0.

Pomocník pro upgrade .NET a CoreWCF

Pomocník pro upgrade .NET teď podporuje upgrade aplikací WCF na straně serveru na CoreWCF, což je komunitní port WCF na .NET (Core). Další informace najdete v tématu Upgrade projektu na straně serveru WCF tak, aby používal CoreWCF.

ML.NET

ML.NET teď obsahuje rozhraní API pro klasifikaci textu, které usnadňuje trénování vlastních modelů klasifikace textu pomocí nejnovějších nejmodernějších technik hlubokého učení. Další informace najdete v tématech Co je nového v autoML a nástrojích a představujeme blogové příspěvky rozhraní API pro klasifikaci textu ML.NET.

Viz také