Teknologi .NET Framework tidak tersedia di .NET

Beberapa teknologi yang tersedia untuk pustaka .NET Framework tidak tersedia untuk digunakan dengan .NET 6+, seperti domain aplikasi, jarak jauh, dan keamanan akses kode (CAS). Jika pustaka Anda mengandalkan satu atau beberapa teknologi yang tercantum di halaman ini, pertimbangkan pendekatan alternatif yang disebutkan.

Untuk informasi selengkapnya tentang kompatibilitas API, lihat Melanggar perubahan di .NET.

Domain aplikasi

Domain aplikasi (AppDomains) mengisolasi aplikasi dengan aplikasi yang lain. AppDomains memerlukan dukungan runtime dan sumber daya yang mahal. Membuat lebih banyak domain aplikasi tidak didukung, dan tidak ada rencana untuk menambahkan kemampuan ini di masa mendatang. Untuk isolasi kode, gunakan proses atau kontainer yang terpisah sebagai alternatif. Untuk memuat rakitan secara dinamis, gunakan kelas AssemblyLoadContext.

Untuk membuat migrasi kode dari .NET Framework lebih mudah, .NET 6+ mengekspos beberapa AppDomain permukaan API. Beberapa API berfungsi secara normal (misalnya, AppDomain.UnhandledException), beberapa anggota tidak melakukan apa-apa (misalnya, SetCachePath), dan beberapa dari mereka membuang PlatformNotSupportedException (misalnya, CreateDomain). Periksa jenis yang Anda gunakan terhadap System.AppDomain sumber referensi di dotnet/runtime GitHub repositori. Pastikan untuk memilih cabang yang cocok dengan versi yang Anda terapkan.

Remoting

.NET Remoting tidak didukung pada .NET 6+. .NET Remoting diidentifikasi sebagai arsitektur yang bermasalah. Ini digunakan untuk berkomunikasi di seluruh domain aplikasi, yang tidak lagi didukung. Selain itu, jarak jauh membutuhkan dukungan runtime, yang mahal untuk dipertahankan.

Untuk komunikasi sederhana di seluruh proses, pertimbangkan mekanisme komunikasi antar proses (IPC) sebagai alternatif untuk jarak jauh, seperti kelas System.IO.Pipes atau kelas MemoryMappedFile. Untuk skenario yang lebih kompleks, proyek StreamJsonRpc sumber terbuka menyediakan kerangka kerja jarak jauh .NET Standard lintas platform yang bekerja di atas koneksi aliran atau pipa yang ada.

Di seluruh komputer, gunakan solusi berbasis jaringan sebagai alternatif. Sebaiknya, gunakan protokol teks biasa overhead rendah, seperti HTTP. Server web Kestrel, yang merupakan server web yang digunakan oleh ASP.NET Core, merupakan opsi di sini. Juga, pertimbangkan untuk menggunakan System.Net.Sockets untuk skenario lintas-mesin berbasis jaringan. StreamJsonRpc, yang disebutkan sebelumnya, dapat digunakan untuk komunikasi JSON atau biner (melalui MessagePack) melalui soket web.

Untuk opsi olahpesan lainnya, lihat Proyek Pengembang Sumber Terbuka .NET: Olahpesan.

Karena jarak jauh tidak didukung, panggilan ke BeginInvoke() dan EndInvoke() pada objek delegasi akan melemparkan PlatformNotSupportedException. Untuk informasi selengkapnya, lihat Memigrasikan Delegasi BeginInvoke Panggilan Untuk .NET Core.

Keamanan akses kode (CAS)

Sandboxing, yang bergantung pada runtime atau kerangka kerja untuk membatasi sumber daya mana yang digunakan atau dijalankan aplikasi atau pustaka terkelola, tidak didukung pada .NET Framework dan oleh karena itu juga tidak didukung pada .NET 6+. CAS tidak lagi diperlakukan sebagai batas keamanan, karena ada terlalu banyak kasus dalam .NET Framework dan runtime tempat elevasi terjadi. Selain itu, CAS membuat implementasi lebih rumit dan sering memiliki implikasi performa kebenaran untuk aplikasi yang tidak berniat menggunakannya.

Gunakan batas keamanan yang disediakan oleh sistem operasi, seperti virtualisasi, kontainer, atau akun pengguna, untuk menjalankan proses dengan set hak istimewa minimum.

Transparansi keamanan

Mirip dengan CAS, Transparansi Keamanan memisahkan kode dalam kotak pasir dari kode kritis keamanan dengan cara deklaratif, tetapi tidak lagi didukung sebagai batas keamanan. Fitur ini banyak digunakan oleh Silverlight.

Untuk menjalankan proses dengan sekumpulan hak istimewa paling sedikit, gunakan batas keamanan yang disediakan oleh sistem operasi, seperti virtualisasi, kontainer, atau akun pengguna.

System.EnterpriseServices

System.EnterpriseServices (COM+) tidak didukung oleh .NET 6+.

Fondasi Alur Kerja

Windows Workflow Foundation (WF) tidak didukung di .NET 6+. Untuk alternatif, lihat CoreWF.

Tip

Server Windows Communication Foundation (WCF) dapat digunakan di .NET 6+ dengan menggunakan paket CoreWCF NuGet. Untuk informasi lebih lanjut, lihat CoreWCF 1.0 telah Dirilis.

Beberapa API pantulan tidak didukung

.NET 8 dan versi .NET (Core) yang lebih lama tidak mendukung penyimpanan rakitan yang dihasilkan oleh System.Reflection.Emit API, dan AssemblyBuilder.Save metode tidak tersedia. Selain itu, bidang enumerasi AssemblyBuilderAccess berikut tidak tersedia:

Di .NET 9, diimplementasikan PersistedAssemblyBuilder dan AssemblyBuilder.Save metode ditambahkan kembali ke pustaka pantulan. Untuk mempelajari selengkapnya tentang cara menggunakan API ini, lihat kelas System.Reflection.Emit.PersistedAssemblyBuilder.

Untuk informasi selengkapnya tentang implementasi AssemblyBuilder yang berbeda di .NET, lihat kelas System.Reflection.Emit.AssemblyBuilder

Memuat rakitan multimodul

Rakitan yang terdiri dari beberapa modul (OutputType=Module dalam MSBuild) tidak didukung di .NET 6+.

Sebagai alternatif, pertimbangkan untuk menggabungkan modul individual ke dalam satu file rakitan.

Blok skrip XSLT

Blok skrip XSLT hanya didukung di .NET Framework. Mereka tidak didukung pada .NET 6 atau yang lebih baru.

Lihat juga