Delen via


.NET Framework-technologieën zijn niet beschikbaar op .NET

Verschillende technologieën die beschikbaar zijn voor .NET Framework-bibliotheken zijn niet beschikbaar voor gebruik met .NET 6+, zoals app-domeinen, externe toegang en beveiliging van codetoegang (CAS). Als uw bibliotheken afhankelijk zijn van een of meer van de technologieën die op deze pagina worden vermeld, kunt u de vermelde alternatieve benaderingen overwegen.

Zie Belangrijke wijzigingen in .NETvoor meer informatie over API-compatibiliteit.

Toepassingsdomeinen

Toepassingsdomeinen (AppDomains) isoleren apps van elkaar. AppDomains vereisen runtime-ondersteuning en zijn duur voor resources. Het maken van meer app-domeinen wordt niet ondersteund en er zijn geen plannen om deze mogelijkheid in de toekomst toe te voegen. Gebruik voor code-isolatie afzonderlijke processen of containers als alternatief. Als u assembly's dynamisch wilt laden, gebruikt u de klasse AssemblyLoadContext.

Om codemigratie vanuit .NET Framework eenvoudiger te maken, maakt .NET 6+ een deel van het AppDomain API-oppervlak beschikbaar. Sommige API's werken normaal (bijvoorbeeld AppDomain.UnhandledException), sommige leden doen niets (bijvoorbeeld SetCachePath) en sommigen gooien PlatformNotSupportedException (bijvoorbeeld CreateDomain). Controleer de typen die u gebruikt voor de System.AppDomain referentiebron in de dotnet/runtime GitHub-opslagplaats. Zorg ervoor dat u de vertakking selecteert die overeenkomt met uw geïmplementeerde versie.

Afstandsbediening

.NET Remoting wordt niet ondersteund op .NET 6+. .NET remoting werd geïdentificeerd als een problematische architectuur. Het wordt gebruikt voor communicatie tussen toepassingsdomeinen, die niet meer worden ondersteund. Ook vereist remoting runtime-ondersteuning, wat duur is om te onderhouden.

Voor eenvoudige communicatie tussen processen kunt u inter-process communicatie (IPC) mechanismen overwegen als een alternatief voor remote communicatie, zoals de System.IO.Pipes-klasse of de MemoryMappedFile-klasse. Voor complexere scenario's biedt het open-sourceproject StreamJsonRpc een platformoverschrijdend .NET Standard-remoting framework dat werkt op basis van bestaande stream- of pijpverbindingen.

Gebruik op verschillende computers een netwerkoplossing als alternatief. Gebruik bij voorkeur een protocol voor tekst zonder opmaak met lage overhead, zoals HTTP. De Kestrel-webserver, de webserver die door ASP.NET Core wordt gebruikt, is hier een optie. Overweeg ook het gebruik van System.Net.Sockets voor scenario's voor meerdere computers op basis van netwerken. StreamJsonRpc, eerder vermeld, kan worden gebruikt voor JSON- of binaire communicatie (via MessagePack) via websockets.

Zie .NET Open Source Developer Projects: Messagingvoor meer berichtenopties.

Omdat externe communicatie niet wordt ondersteund, zullen oproepen naar BeginInvoke() en EndInvoke() op gedelegeerde objecten een PlatformNotSupportedException-geven. Voor meer informatie, zie Delegate BeginInvoke-aanroepen voor .NET Coremigreren.

Beveiliging van codetoegang (CAS)

Sandboxing, die afhankelijk is van de runtime of het framework om te beperken welke resources een beheerde toepassing of bibliotheek gebruikt of wordt uitgevoerd, wordt niet ondersteund op .NET Framework en wordt daarom ook niet ondersteund op .NET 6+. CAS wordt niet langer behandeld als een beveiligingsgrens, omdat er te veel gevallen zijn in .NET Framework en de runtime waarbij een uitbreiding van bevoegdheden plaatsvindt. Cas maakt de implementatie ook ingewikkelder en heeft vaak gevolgen voor de juistheid van de prestaties voor toepassingen die deze niet willen gebruiken.

Gebruik beveiligingsgrenzen die worden geleverd door het besturingssysteem, zoals virtualisatie, containers of gebruikersaccounts, voor het uitvoeren van processen met de minimale set bevoegdheden.

Transparantie van beveiliging

Net als bij CAS scheidt de beveiligingstransparantie code in de sandbox van kritieke code op declaratieve wijze, maar wordt niet meer ondersteund als een beveiligingsgrens. Deze functie wordt intensief gebruikt door Silverlight.

Als u processen met de minste set bevoegdheden wilt uitvoeren, gebruikt u beveiligingsgrenzen die worden geboden door het besturingssysteem, zoals virtualisatie, containers of gebruikersaccounts.

System.EnterpriseServices

System.EnterpriseServices (COM+) wordt niet ondersteund door .NET 6+.

Werkstroomplatform

Windows Workflow Foundation (WF) wordt niet ondersteund in .NET 6+. Zie CoreWFvoor een alternatief.

Fooi

De WCF-server (Windows Communication Foundation) kan worden gebruikt in .NET 6+ met behulp van de CoreWCF NuGet-pakketten. Zie CoreWCF 1.0 is uitgebrachtvoor meer informatie.

Sommige weerspiegelings-API's worden niet ondersteund

.NET 8 en eerdere versies van .NET (Core) bieden geen ondersteuning voor het opslaan van assembly's die worden gegenereerd door de System.Reflection.Emit API's en de AssemblyBuilder.Save methode is niet beschikbaar. Bovendien zijn de volgende velden van de opsomming AssemblyBuilderAccess niet beschikbaar:

In .NET 9 is een PersistedAssemblyBuilder geïmplementeerd en is de AssemblyBuilder.Save-methode opnieuw toegevoegd aan de reflectie-emit-bibliotheek. Zie System.Reflection.Emit.PersistedAssemblyBuilder-klassevoor meer informatie over het gebruik van deze API.

Zie System.Reflection.Emit.AssemblyBuilder-klassevoor meer informatie over de verschillende AssemblyBuilder-implementaties in .NET.

Assemblages met meerdere modules laden

Assembly's die bestaan uit meerdere modules (OutputType=Module in MSBuild) worden niet ondersteund in .NET 6+.

Als alternatief kunt u overwegen om de afzonderlijke modules samen te voegen in één assemblybestand.

XSLT-scriptblokken

XSLT scriptblokken worden alleen ondersteund in .NET Framework. Ze worden niet ondersteund op .NET 6 of hoger.

Zie ook