Technologie rozhraní .NET Framework nejsou k dispozici v .NET
Některé technologie dostupné pro knihovny .NET Framework nejsou použitelné v .NET 6 a vyšších verzích, jako jsou domény aplikací, vzdálená komunikace a zabezpečení přístupu kódu (CAS). Pokud vaše knihovny spoléhají na jednu nebo více technologií uvedených na této stránce, zvažte alternativní přístupy uvedené.
Další informace o kompatibilitě rozhraní API najdete v tématu Zásadní změny v rozhraní .NET.
Domény aplikací
Domény aplikací (AppDomains) navzájem izolují aplikace. AppDomains vyžadují podporu modulu runtime a jsou nákladné na zdroje. Vytváření dalších domén aplikací se nepodporuje a v budoucnu nemáme žádné plány na přidání této funkce. Pro izolaci kódu použijte jako alternativu samostatné procesy nebo kontejnery. Chcete-li dynamicky načítat sestavení, použijte třídu AssemblyLoadContext.
Aby se migrace kódu z rozhraní .NET Framework usnadnila, zpřístupňuje rozhraní .NET 6+ některé z rozhraní API AppDomain. Některá rozhraní API fungují normálně (například AppDomain.UnhandledException), někteří členové nedělají nic (například SetCachePath) a některé z nich můžou vyvolat PlatformNotSupportedException (například CreateDomain). Zkontrolujte typy, které používáte pro referenční zdroj System.AppDomain
v úložišti GitHub dotnet/runtime. Nezapomeňte vybrat větev, která odpovídá vaší implementované verzi.
Vzdálený přístup
.NET Remoting není podporováno v .NET 6 a vyšších. .NET remoting byla označena za problematickou architekturou. Používá se ke komunikaci mezi doménami aplikací, které se už nepodporují. Vzdálené komunikace také vyžaduje podporu modulu runtime, která je náročná na údržbu.
Pro jednoduchou komunikaci mezi procesy zvažte mechanismy komunikace mezi procesy (IPC) jako alternativu ke vzdálené komunikaci, jako je třída System.IO.Pipes nebo třída MemoryMappedFile. V případě složitějších scénářů poskytuje opensourcový projekt StreamJsonRpc multiplatformní rozhraní vzdálené komunikace .NET Standard, které funguje nad existujícími připojeními datových proudů nebo kanálů.
V různých počítačích použijte jako alternativu síťové řešení. Pokud možno použijte protokol prostého textu s nízkou režií, například HTTP. webový server Kestrel, což je webový server používaný ASP.NET Core, je zde možnost. Zvažte také použití System.Net.Sockets pro síťové scénáře napříč počítači. StreamJsonRpc, zmíněn dříve, lze použít pro komunikaci JSON nebo binární (prostřednictvím MessagePacku) přes webové sokety.
Další možnosti zasílání zpráv najdete v tématu opensourcových vývojářských projektů .NET: Zasílání zpráv.
Vzhledem k tomu, že vzdálená komunikace není podporována, volání BeginInvoke()
a EndInvoke()
u objektů delegátů vyvolají PlatformNotSupportedException
. Další informace najdete v tématu Migrace volání delegáta BeginInvoke pro .NET Core.
Zabezpečení přístupu kódu (CAS)
Sandboxing, což je bezpečnostní mechanismus závislý na modulu runtime nebo rámci pro omezení prostředků, které spravovaná aplikace nebo knihovna používá nebo běží, není podporován v rozhraní .NET Framework, a proto také není podporován v .NET 6+ nebo novější. Cas už není považován za hranice zabezpečení, protože v rozhraní .NET Framework existuje příliš mnoho případů a modulu runtime, ve kterém dochází ke zvýšení oprávnění. Cas také zkomplikuje implementaci a často má vliv na výkon aplikací, které ji nemají v úmyslu používat.
Pro spouštění procesů s minimální sadou oprávnění použijte hranice zabezpečení poskytované operačním systémem, jako jsou virtualizace, kontejnery nebo uživatelské účty.
Transparentnost zabezpečení
Podobně jako CAS odděluje transparentnost zabezpečení kód v izolovaném prostoru od kritického kódu zabezpečení deklarativním způsobem, ale se už nepodporuje jako hranice zabezpečení. Tato funkce je silně používána silverlightem.
Pokud chcete spouštět procesy s nejnižší sadou oprávnění, použijte hranice zabezpečení poskytované operačním systémem, jako jsou virtualizace, kontejnery nebo uživatelské účty.
System.EnterpriseServices
System.EnterpriseServices (COM+) není podporováno rozhraním .NET 6 nebo novějším.
Platforma pracovního postupu
Windows Workflow Foundation (WF) se nepodporuje v .NET 6 nebo novějším. Podívejte se na alternativu v CoreWF.
Spropitné
Server Wcf (Windows Communication Foundation) lze použít v .NET 6 nebo novější pomocí balíčků NuGet CoreWCF. Další informace naleznete v tématu CoreWCF 1.0 byl vydán.
Některá rozhraní API pro generování reflexe nejsou podporována.
.NET 8 a starší verze .NET (Core) nepodporují ukládání sestavení generovaných rozhraními API System.Reflection.Emit a metoda AssemblyBuilder.Save není dostupná. Kromě toho nejsou k dispozici následující pole výčtu AssemblyBuilderAccess:
V rozhraní .NET 9 byla implementována PersistedAssemblyBuilder
a metoda AssemblyBuilder.Save byla přidána zpět do knihovny emitování reflexe. Další informace o použití tohoto rozhraní API najdete v tématu System.Reflection.Emit.PersistedAssemblyBuilder třídy.
Další informace o různých implementacích AssemblyBuilder v .NET naleznete v tématu System.Reflection.Emit.AssemblyBuilder třídy.
Načítání sestavení s více moduly
Sestavení, která se skládají z více modulů (OutputType=Module
v MSBuildu), nejsou podporována v .NET 6 nebo novější.
Jako alternativu zvažte sloučení jednotlivých modulů do jednoho souboru sestavení.
Bloky skriptů XSLT
Bloky skriptů XSLT jsou podporovány pouze v rozhraní .NET Framework. Nejsou podporované v .NET 6 nebo novějším.