Megosztás a következőn keresztül:


.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.

Lásd még