.NET-keretrendszer technológiák nem érhetők el a .NET-en
Az .NET-keretrendszer kódtárakhoz elérhető számos technológia nem érhető el a .NET 6+-hoz, például az alkalmazástartományokhoz, az újraíráshoz és a kódhozzáférési biztonsághoz (CAS). Ha a kódtárak az ezen a lapon felsorolt technológiák valamelyikére támaszkodnak, fontolja meg az említett alternatív módszereket.
Az API-kompatibilitással kapcsolatos további információkért lásd a .NET kompatibilitástörő változásait.
Alkalmazástartományok
Az alkalmazástartományok (AppDomains) elkülönítik egymástól az alkalmazásokat. Az AppDomains futásidejű támogatást igényel, és erőforrás-költséges. A további alkalmazástartományok létrehozása nem támogatott, és a jövőben nem tervezik ezt a funkciót hozzáadni. A kódelkülönítéshez használjon különálló folyamatokat vagy tárolókat alternatívaként. A szerelvények dinamikus betöltéséhez használja az osztályt AssemblyLoadContext .
A .NET-keretrendszer-ból való kódmigrálás megkönnyítése érdekében a .NET 6+ elérhetővé teszi az AppDomain API-felület egy részét. Az API-k egy része általában (például AppDomain.UnhandledException), néhány tag nem tesz semmit (például SetCachePath), és némelyikük dob PlatformNotSupportedException (például CreateDomain). Ellenőrizze a dotnet/runtime GitHub-adattár referenciaforrásábanhasznált System.AppDomain
típusokat. Győződjön meg arról, hogy a megvalósított verziónak megfelelő ágat választja ki.
Újraegyezés
A .NET-remoting nem támogatott a .NET 6+-on. A .NET-remoting problémás architektúraként lett azonosítva. Ez az alkalmazástartományok közötti kommunikációhoz használatos, amelyek már nem támogatottak. Az újraegyensúlyozás futásidejű támogatást is igényel, ami költséges a karbantartáshoz.
A folyamatok közötti egyszerű kommunikációhoz fontolja meg a folyamatközi kommunikációs (IPC) mechanizmusokat az újraegyezés alternatívaként, például az System.IO.Pipes osztály vagy az MemoryMappedFile osztály esetében. Összetettebb forgatókönyvek esetén a nyílt forráskódú StreamJsonRpc projekt egy platformfüggetlen .NET Standard remoting keretrendszert biztosít, amely a meglévő stream- vagy csőkapcsolatokon működik.
A gépeken használjon hálózati alapú megoldást alternatívaként. Lehetőleg használjon alacsony terhelésű egyszerű szöveges protokollt, például HTTP-t. A Kestrel webkiszolgáló, amely a ASP.NET Core által használt webkiszolgáló, itt van egy lehetőség. Emellett fontolja meg a hálózatalapú, gépközi forgatókönyvek használatát System.Net.Sockets is. A korábban említett StreamJsonRpc használható JSON- vagy bináris (MessagePack-alapú) kommunikációhoz webes szoftvercsatornákon keresztül.
További üzenetkezelési lehetőségekért tekintse meg a .NET nyílt forráskódú fejlesztői projektjeit: Üzenetkezelés.
Mivel az újrametszetelés nem támogatott, a delegált objektumok hívásai BeginInvoke()
és EndInvoke()
a delegált objektumokra irányuló hívások is megjelennek PlatformNotSupportedException
. További információt a .NET Core-ra vonatkozó delegált beginInvoke-hívások migrálása című témakörben talál.
Kódhozzáférés biztonsága (CAS)
A tesztkörnyezet, amely a futtatókörnyezetre vagy a keretrendszerre támaszkodik, hogy korlátozza a felügyelt alkalmazás vagy tár által használt vagy futtatott erőforrásokat, nem támogatott a .NET-keretrendszer, ezért a .NET 6+ rendszeren sem támogatott. A CAS már nem minősül biztonsági határnak, mert túl sok eset van a .NET-keretrendszer és a futtatókörnyezetben, ahol jogosultságok emelése történik. A CAS emellett bonyolultabbá teszi a megvalósítást, és gyakran a nem használni kívánt alkalmazásokra is hatással van a helyesség és a teljesítmény.
Használja az operációs rendszer által biztosított biztonsági határokat, például virtualizálást, tárolókat vagy felhasználói fiókokat a folyamatok minimális jogosultságkészlettel történő futtatásához.
Biztonsági átláthatóság
A CAS-hoz hasonlóan a biztonsági átláthatóság deklaratív módon választja el a védőfalas kódot a biztonsági szempontból kritikus kódtól, de már nem támogatott biztonsági határként. Ezt a funkciót a Silverlight erősen használja.
A legkevesebb jogosultsággal rendelkező folyamatok futtatásához használja az operációs rendszer által biztosított biztonsági határokat, például virtualizálást, tárolókat vagy felhasználói fiókokat.
System.EnterpriseServices
System.EnterpriseServices A .NET 6+ nem támogatja a (COM+) verziót.
Workflow Foundation
A Windows Workflow Foundation (WF) nem támogatott a .NET 6+-ban. Másik lehetőségként tekintse meg a CoreWF-et.
Tipp.
A Windows Communication Foundation (WCF) kiszolgáló a CoreWCF NuGet-csomagok használatával használható a .NET 6+ rendszerben. További információ: CoreWCF 1.0 megjelent.
Egyes tükröződés-kibocsátó API-k nem támogatottak
A .NET 8 és korábbi verziói (Core) nem támogatják az System.Reflection.Emit API-k által létrehozott szerelvények mentését, és a AssemblyBuilder.Save metódus nem érhető el. Ezenkívül az enumerálás alábbi mezői AssemblyBuilderAccess nem érhetők el:
A .NET 9-ben egy PersistedAssemblyBuilder
implementálás történt, és a AssemblyBuilder.Save metódus vissza lett adva a visszaverődő kódtárhoz. Az API használatáról további információt a System.ÖnkifejezésIon. Emit.PersistedAssemblyBuilder osztály.
A .NET különböző AssemblyBuilder-implementációival kapcsolatos további információkért lásd: System.ÖnkifejezésIon. Emit.AssemblyBuilder osztály
Többmodulos szerelvények betöltése
A több modulból (OutputType=Module
MSBuild) álló szerelvények nem támogatottak a .NET 6+-ban.
Alternatív megoldásként érdemes lehet az egyes modulokat egyetlen szerelvényfájlba egyesíteni.
XSLT-szkriptblokkok
Az XSLT-szkriptblokkok csak .NET-keretrendszer támogatottak. A .NET 6-os vagy újabb verziói nem támogatottak.