Aracılığıyla paylaş


.NET Framework teknolojileri .NET'te kullanılamıyor

.NET Framework kitaplıklarında kullanılabilen uygulama etki alanları, uzaktan iletişim ve kod erişimi güvenliği (CAS) gibi çeşitli teknolojiler .NET 6+ ile kullanılamaz. Kitaplıklarınız bu sayfada listelenen teknolojilerden birini veya daha fazlasını kullanıyorsa, bahsedilen alternatif yaklaşımları göz önünde bulundurun.

API uyumluluğu hakkında daha fazla bilgi için bkz. .NET'teki önemli değişiklikler.

Uygulama etki alanları

Uygulama etki alanları (AppDomains) uygulamaları birbirinden ayırır. AppDomains çalışma zamanı desteği gerektirir ve kaynak pahalıdır. Daha fazla uygulama etki alanı oluşturma desteklenmez ve gelecekte bu özelliği eklemeye yönelik bir plan yoktur. Kod yalıtımı için alternatif olarak ayrı işlemler veya kapsayıcılar kullanın. Derlemeleri dinamik olarak yüklemek için AssemblyLoadContext sınıfını kullanın.

.NET Framework'ten kod geçişini kolaylaştırmak için .NET 6+ AppDomain API yüzeyinin bazılarını kullanıma sunar. API'lerin bazıları normal şekilde çalışır (örneğin, AppDomain.UnhandledException), bazı üyeler hiçbir şey yapmaz (örneğin, SetCachePath) ve bazıları PlatformNotSupportedException atar (örneğin, CreateDomain). System.AppDomain başvuru kaynağı ile dotnet/runtime GitHub deposundaki kullandığınız türleri karşılaştırın. Uygulanan sürümünüzle eşleşen dalı seçtiğinizden emin olun.

uzaktan iletişim

.NET Uzaktan İletişimi .NET 6+ üzerinde desteklenmez. .NET uzaktan iletişim sorunlu bir mimari olarak tanımlandı. Artık desteklenmeyen uygulama etki alanları arasında iletişim kurmak için kullanılır. Uzaktan erişim, ayrıca bakımı pahalı olan çalışma zamanı desteği gerektirir.

İşlemler arasında basit iletişim için, System.IO.Pipes sınıfı veya MemoryMappedFile sınıfı gibi uzaktan iletişimin alternatifi olarak işlemler arası iletişim (IPC) mekanizmalarını göz önünde bulundurun. Daha karmaşık senaryolar için, açık kaynaklı StreamJsonRpc projesi, mevcut akış veya boru bağlantıları üzerinde çalışan, platformlar arası bir .NET Standard uzaktan iletişim çerçevesi sağlar.

Makineler arasında alternatif olarak ağ tabanlı bir çözüm kullanın. Tercihen, HTTP gibi düşük ek yüklü bir düz metin protokolü kullanın. ASP.NET Core tarafından kullanılan web sunucusu olan Kestrel web sunucusuburada bir seçenektir. Ayrıca, ağ tabanlı, makineler arası senaryolar için System.Net.Sockets kullanmayı göz önünde bulundurun. Daha önce bahsedilen StreamJsonRpc, web yuvaları üzerinden JSON veya ikili (MessagePack aracılığıyla) iletişimi için kullanılabilir.

Daha fazla mesajlaşma seçeneği için bkz. .NET Açık Kaynak Geliştirici Projeleri: Mesajlaşma .

uzaktan iletişim desteklenmediğinden, temsilci nesnelerdeki BeginInvoke() ve EndInvoke() çağrıları PlatformNotSupportedExceptionoluşturur. Daha fazla bilgi için bkz. .NET Core için Temsilci BeginInvoke Çağrılarını Geçirme.

Kod erişim güvenliği (CAS)

Yönetilen bir uygulama veya kitaplığın hangi kaynakları kullanıp çalıştırabileceğini kısıtlamak için çalışma zamanı veya çerçeveyi kullanan korumalı alan, .NET Framework'de desteklenmez ve bu nedenle .NET 6+ üzerinde de desteklenmez. .NET Framework'te ve çalışma zamanında ayrıcalıkların yükseltilmesinin gerçekleştiği çok fazla durum olduğundan CAS artık güvenlik sınırı olarak değerlendirilmez. Ayrıca CAS, uygulamayı daha karmaşık hale getirir ve genellikle kullanmayı düşünmeyen uygulamalar için doğruluk-performans etkileri vardır.

İşlemleri en düşük ayrıcalık kümesiyle çalıştırmak için işletim sistemi tarafından sağlanan sanallaştırma, kapsayıcılar veya kullanıcı hesapları gibi güvenlik sınırlarını kullanın.

Güvenlik saydamlığı

CAS'ye benzer şekilde, güvenlik saydamlığı korumalı kodu güvenlik açısından kritik koddan bildirim temelli olarak ayırır, ancak artıkbir güvenlik sınırı olarak desteklenmemektedir. Bu özellik Silverlight tarafından yoğun olarak kullanılır.

İşlemleri en az ayrıcalık kümesiyle çalıştırmak için sanallaştırma, kapsayıcılar veya kullanıcı hesapları gibi işletim sistemi tarafından sağlanan güvenlik sınırlarını kullanın.

System.EnterpriseServices

System.EnterpriseServices (COM+) .NET 6+ tarafından desteklenmez.

Workflow Foundation

Windows Workflow Foundation (WF), .NET 6+'da desteklenmez. Alternatif olarak bkz. CoreWF.

Bahşiş

Windows Communication Foundation (WCF) sunucusu CoreWCF NuGet paketlerikullanılarak .NET 6+ içinde kullanılabilir. Daha fazla bilgi için bkz. CoreWCF 1.0yayımlandı.

Bazı yansıma yayma API'leri desteklenmez

.NET 8 ve önceki .NET (Core) sürümleri, System.Reflection.Emit API'leri tarafından oluşturulan derlemelerin kaydedilmesini desteklemez ve AssemblyBuilder.Save yöntemi kullanılamaz. Ayrıca, AssemblyBuilderAccess numaralandırmasının aşağıdaki alanları kullanılamaz:

.NET 9'da bir PersistedAssemblyBuilder uygulandı ve AssemblyBuilder.Save yöntemi yansıma yayma kitaplığına geri eklendi. Bu API'yi kullanma hakkında daha fazla bilgi edinmek için bkz. System.Reflection.Emit.PersistedAssemblyBuilder sınıfı.

.NET'teki farklı AssemblyBuilder uygulamaları hakkında daha fazla bilgi için bkz. System.Reflection.Emit.AssemblyBuilder sınıfı.

Çok modüllü derlemeleri yükleme

Birden çok modülden (MSBuild'deOutputType=Module) oluşan derlemeler .NET 6+ içinde desteklenmez.

Alternatif olarak, tek tek modülleri tek bir derleme dosyasında birleştirmeyi göz önünde bulundurun.

XSLT betik blokları

XSLT betik blokları yalnızca .NET Framework'te desteklenir. .NET 6 veya sonraki sürümlerde desteklenmez.

Ayrıca bkz.