Technologie rozhraní .NET Framework nejsou k dispozici v .NET

Několik technologií dostupných pro knihovny rozhraní .NET Framework není k dispozici pro použití s .NET 6 nebo novějšími, 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 .NET.

Domény aplikací

Domény aplikací (AppDomains) navzájem izolují aplikace. AppDomains vyžaduje podporu modulu runtime a jsou nákladné. 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číst sestavení, použijte AssemblyLoadContext třídu.

Aby se migrace kódu z rozhraní .NET Framework usnadnila, zpřístupňuje rozhraní .NET 6 nebo novější část AppDomain rozhraní API. Některá z rozhraní API fungují normálně (například AppDomain.UnhandledException), někteří členové nedělají nic (například SetCachePath) a některé z nich hází PlatformNotSupportedException (například CreateDomain). Zkontrolujte typy, které používáte pro System.AppDomain referenční zdroj v úložišti GitHubu dotnet/runtime. Nezapomeňte vybrat větev, která odpovídá vaší implementované verzi.

Remoting

Vzdálené komunikace .NET se nepodporuje v .NET 6 nebo novějším. Komunikace .NET byla identifikována jako problematická architektura. 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 System.IO.Pipes je třída nebo MemoryMappedFile třída. Pro složitější scénáře poskytuje opensourcový projekt StreamJsonRpc multiplatformní rozhraní vzdálené komunikace .NET Standard, které funguje nad existujícími připojeními streamů 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. Tady je možnost webového serveru Kestrel, který používá ASP.NET Core. Zvažte také použití System.Net.Sockets pro scénáře napříč počítači založené na síti. 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 .NET Open Source Developer Projects: Messaging.

Vzhledem k tomu, že vzdálené komunikace není podporována, vyvolá se volání BeginInvoke() na objekty delegáta a EndInvoke() na objekty delegáta PlatformNotSupportedException. Další informace najdete v tématu Migrace volání BeginInvoke delegáta pro .NET Core.

Zabezpečení přístupu kódu (CAS)

Sandboxing, který spoléhá na modul runtime nebo architekturu k omezení prostředků, které spravovaná aplikace nebo knihovna používá nebo spouští, se v rozhraní .NET Framework nepodporuje, a proto se také nepodporuje v rozhraní .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 (sandbox) od kódu kritického pro zabezpečení deklarativním způsobem, ale už se 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 .NET 6 nebo novější nepodporuje (COM+).

Základy pracovního postupu

Windows Workflow Foundation (WF) se nepodporuje v .NET 6 nebo novějším. Alternativní řešení najdete v tématu CoreWF.

Tip

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 System.Reflection.Emit API a AssemblyBuilder.Save tato metoda není dostupná. Kromě toho nejsou k dispozici následující pole výčtu AssemblyBuilderAccess :

V .NET 9 byla PersistedAssemblyBuilder implementována a AssemblyBuilder.Save metoda byla přidána zpět do knihovny generování reflexe. Další informace o používání tohoto rozhraní API najdete v tématu System.ReflexeIon. Emit.AssemblyBuilder – třída.

Další informace najdete v tématu dotnet/runtime problém 15704.

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.

Viz také