Programování

Co je nového v Microsoft .NET 5

Druhé vydání Microsoftu pro .NET 5 dorazilo 13. října a sloučení .NET Framework a .NET Core bylo o krok blíže k dokončení. Nová jednotná platforma .NET má být obecně dostupná 10. listopadu 2020.

Microsoft popisuje Release Candidate 2 jako téměř konečné vydání a poslední ze dvou RC. Počáteční RC byl publikován 13. září. Kandidát na verzi .NET 5.0 lze stáhnout z dotnet.microsoft.com.

Cíle na vysoké úrovni pro .NET 5 zahrnují poskytování jednotného prostředí .NET SDK, s jediným BCL (knihovna základních tříd) napříč všemi aplikacemi .NET 5 a s podporou nativních i webových aplikací napříč více operačními systémy. Jeden projekt nativní aplikace .NET 5 by podporoval cíle jako Windows, Microsoft Duo (Android) a Apple iOS pomocí nativních ovládacích prvků na těchto platformách.

Mezi další cíle .NET 5 patří podpora pro vytváření vysoce výkonných cloudových aplikací, rychlejší algoritmy v BCL, lepší podpora pro kontejnery za běhu a podpora pro HTTP3. .NET 5.0 zahrnuje podporu pro binární formát WebAssembly prostřednictvím prostředí Mono runtime a knihoven .NET. Je také uvedena sada anotací referenčního typu s možnou hodnotou Null.

.NET 5 také slibuje, že umožní vývojářům automaticky najít latentní chyby v kódu. Mezi další nové funkce patří Polovina typ, binární plovoucí desetinná čárka, která zabírá 16 bitů, a oříznutí sestavy, které ořízne nepoužívané sestavy, aby se zmenšila velikost aplikací. Zvýrazněno je také přizpůsobené ořezávání. Nové porovnávání vzorů v C # 9 pokrývá relační, logické a jednoduché typy vzorů. Možnost nasazení ClickOnce je nyní podporována pro aplikace .NET 5.0 pro Windows a aplikace .NET Core 3.1.

Nová platforma .NET také slibuje vylepšení výkonu. Bulletin týkající se Preview 7, který dorazil 21. července, potvrzuje přibližně 250 požadavků na vyžádání orientovaných na výkon v .NET 5 a konstatuje, že pro ty, kteří sledovali výkon .NET Core, je připraveno příjemné překvapení.

Další doplňky a vylepšení uvedené v bulletinu .NET 5 Preview 7:

  • Nové rozhraní JSON API System.text.json poskytuje možnost ignorovat výchozí hodnoty vlastností typu hodnoty při serializaci, což je užitečné pro snížení serializace a nákladů na připojení. Toto je zásadní změna. Pro System.text.json byla přidána také schopnost vypořádat se s kruhovými odkazy při serializaci, přičemž nyní se očekává, že tvar API bude konečný.
  • Garbage collection nyní zpřístupňuje podrobná data o nejnovější kolekci pomocí GetGCMemoryInfo metoda, která vrací a GCMemoryInfo struktur. GCMemoryInfo slouží informace o paměti stroje a haldy a nejnovější kolekci nebo nejnovější kolekci specifikovaného druhu GC - pomíjivý, plný blok nebo pozadí. Nejpravděpodobnějšími případy použití pro toto rozhraní API jsou protokolování / monitorování nebo indikace nástroji pro vyrovnávání zatížení, že stroj by měl být vyřazen z rotace a požadovat úplnou GC. Mezitím byla provedena další změna GC, aby se nákladná operace resetování paměti odložila na situace s nízkou pamětí.
  • Ryujit, generátor kódu sestavy pro .NET, získává vylepšení od povolení eliding některých hraničních kontrol až po zdvojení ocasu duplikování a vylepšení pro odstranění nadbytečných nulových inits. V Ryujit jsou také hardwarové vnitřní vlastnosti ARM64 a optimalizace API.

.NET 5 Preview 6, vydaný 25. června, odstranila integrovanou podporu pro WinRT (Windows Runtime), kolekci API pro vytváření aplikací univerzální platformy Windows. Toto je zásadní změna; Je nutné překompilovat aplikace .NET Core 3.x pomocí WinRT. Týmy .NET a Windows pracují na změně způsobu, jakým WinRT pracuje s Windows, nahrazením podpory WinRT nástrojovým řetězcem C # / WinRT v .NET 5. C # / WinRT je sada nástrojů NuGet nabízející podporu projekce WinRT pro C #.

Další změny v .NET 5 Preview 6:

  • Sada .NET 5 Preview 6 SDK obsahuje podporu pro Windows Forms na zařízeních Windows ARM64. Pokračují práce na přidávání podpory pro Windows Presentation Foundation na Windows ARM64.
  • Vylepšení kvality kódu RyuJIT pokrývají zpracování struktury a optimalizaci, aby se odstranily redundantní nulové inicializace. Rovněž byl učiněn pokrok v optimalizaci vnitřní architektury ARM64 a ve zlepšování generovaného kódu pro ARM64 se zmenšenou velikostí kódu.
  • Plány podpory platformy byly aktualizovány.

.NET 5 Preview 5, vydaný 10. června, obsahuje následující nové funkce:

  • Kompilátor RyuJIT JIT má rychlejší a přenosnější implementaci pomocníků tailcall. JIT požádá modul runtime o pomoc, kdykoli si uvědomí, že bude potřebovat pomocníka, aby provedl tailcall. Také u RyuJIT došlo k neustálému pokroku v implementaci hardwarové vnitřní architektury ARM64. Další vylepšení v RyuJIT zahrnují vyšší rychlost v případě, který ovlivňoval kompilaci regulárního výrazu a zlepšil výkon architektury Intel.
  • Export pro nativní binární soubory s voláním do kódu .NET byl povolen. Základním kamenem této funkce je podpora API pro UnManagedCallersOnlyAttribute. Projekt nativního exportu umožňuje vystavení vlastních nativních exportů. Nevyžaduje technologii interoperability na vyšší úrovni, jako je COM, a je multiplatformní.
  • DirectoryServices.Protokoly podpora se rozšiřuje na Linux a MacOS.
  • Nyní je podporována distribuce Alpine 3.12 Linux.

Kandidát na verzi .NET 5.0 lze stáhnout z dot.net.microsoft.com.

.NET 5 Preview 4, vydaný 19. května, představil následující nové funkce:

  • Podpora jazyků C # 9 a F # 5.
  • Vylepšený výkon koncových volání používaných F #.
  • Vylepšený výkon ToUpperInvariant, string.ToLowerInvarianta související vzory.
  • Vylepšený výkon HTTP 1.1 a HTTP 2.
  • Vylepšený mechanismus počítání hovorů.
  • Dynamické rozšiřování interního obecného slovníku k eliminaci výkonových útesů zasažených obecným kódem.
  • Halda připnutého objektu ke snížení fragmentace haldy.
  • Aplikace s jedním souborem založené na novém typu publikování jednoho souboru, který spouští aplikaci z jednoho binárního souboru.

Vylepšení v .NET 5 Preview 3, představeném 23. dubna, zahrnují následující:

  • Třída BitArray pro správu pole bitových hodnot byla aktualizována, aby zahrnovala hardwarově akcelerovanou implementaci pro ARM64 pomocí vnitřních ARM64. Vylepšení výkonu BitArray je významné, uvedla společnost Microsoft. Kromě toho byla v CLR implementována náhrada On Stack (OSR), která umožňuje změnit kód prováděný aktuálně spuštěnými metodami uprostřed provádění metody, zatímco tyto metody jsou aktivní „na zásobníku“. Tato schopnost pro zlepšení výkonových charakteristik odstupňované kompilace je nyní experimentální funkcí pro přihlášení na x64. Další vylepšení pro RyuJIT zlepšuje kvalitu kódu struktur jako argumentů při volání pozice „tail call“. RyuJIT se také očekává, že nabídne lepší výkon generik.
  • Přidání podpory pro zachování odkazů bylo přidáno do System.Txt.Json, což umožňuje zpracování smyčky referencí pro serializaci JSON. Pro JsonSerializer jsou nyní podporovány také neměnné třídy a struktury. Nyní je také podporováno zpracování hodnot null.
  • Sada .NET SDK nyní automaticky odkazuje na balíček NuFet NETFramework.ReferenceAssemblies daný cílovým rozhraním .NET Framework v souboru projektu. Tato změna umožňuje sestavování projektů .NET Framework na počítači bez nainstalovaného balíčku cílení .NET Framework. Toto vylepšení je specifické pro cílení balíčků a nezohledňuje další možné závislosti projektu.

Specifická vylepšení v .NET 5 Preview 2, vydané 2. dubna, zahrnovaly:

  • Aby se zlepšila kvalita generovaného strojového kódu, byla v RyuJIT provedena řada změn, včetně duplicitních nulových inicializací, které jsou eliminovány agresivněji, a dříve vyvolaných optimalizací pole s povolenou hodnotou null.
  • Odpadky serveru na různých podprocesech nyní mohou ukrást práci při označování objektů gen0 / 1, které jsou živě uchovávány objekty starší generace. Práce s krádeží napříč vlákny zkracuje pomíjivé pauzy GC pro scénáře, kdy označení některých vláken GC trvalo mnohem déle než ostatním. Kromě toho byla implementována část funkce haldy přidržených objektů (POH), část interní v uvolňování paměti, aby umožnila kolektoru samostatně spravovat připnuté objekty. Tím se zabrání negativním účinkům připnutých objektů na generační hromady.

Preview 1, vydaný 16. března, zahrnoval vylepšení výkonu regulárních výrazů i vylepšení kvality kódu v RyuJIT.

Vzhledem k tomu, že jde o produkční vydání v listopadu 2020, má .NET 5 obsahovat:

  • ASP.NET Core, otevřený zdrojový rámec pro webové aplikace.
  • Technologie přístupu k datům Entity Framework Core.
  • WinForms.
  • WPF (Windows Presentation Foundation).
  • Model zařízení mobilní aplikace Xamarin.
  • ML.NET.

Microsoft uvedl, že .NET 5 bude poskytovat jednotnou jednotnou platformu pro vytváření jakéhokoli typu aplikace. Společnost jako testovací případ nasměruje polovinu provozu na provoz svých webových stránek .NET na verzi .NET 5 pomocí Azure Load-Balancing.

Společnost Microsoft doporučuje, aby vývojáři vytvářeli nové aplikace s .NET Core 3.1 a poté je migrovali do .NET 5. Společnost poznamenala, že aplikace .NET Framework lze ponechat v .NET Framework, které zůstanou podporovány, dokud bude podporován samotný Windows.