Bagikan melalui


Teknologi .NET Framework tidak tersedia di .NET

Beberapa teknologi yang tersedia untuk pustaka .NET Framework, seperti domain aplikasi, teknologi remoting, dan keamanan akses kode (CAS), tidak tersedia untuk digunakan dengan .NET 6+. 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 Perubahan penting di .NET.

Domain aplikasi

Domain aplikasi (AppDomains) mengisolasi aplikasi satu dengan yang lain. AppDomains memerlukan dukungan runtime dan mahal sumber daya. 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 terpisah sebagai alternatif. Untuk memuat rakitan secara dinamis, gunakan kelas AssemblyLoadContext.

Untuk mempermudah migrasi kode dari .NET Framework, .NET 6+ mengekspos beberapa permukaan API AppDomain. Beberapa fungsi API biasanya (misalnya, AppDomain.UnhandledException), beberapa anggota tidak melakukan apa pun (misalnya, SetCachePath), dan beberapa di antaranya melemparkan PlatformNotSupportedException (misalnya, CreateDomain). Periksa jenis yang Anda gunakan terhadap referensi System.AppDomain di repositori GitHub dotnet/runtime . Pastikan untuk memilih cabang yang cocok dengan versi yang Anda terapkan.

Pengendalian Jarak Jauh

.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, remoting 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 untuk operasi jarak jauh .NET Standard lintas platform yang berfungsi dengan memanfaatkan koneksi aliran atau pipa yang ada.

Di seluruh komputer, gunakan solusi berbasis jaringan sebagai alternatif. Sebaiknya, gunakan protokol teks biasa yang memiliki overhead rendah, seperti HTTP. Server web Kestrel, yang merupakan server web yang digunakan oleh ASP.NET Core, adalah opsi di sini. Selain itu, 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 lebih banyak opsi messaging, lihat Proyek Pengembang Open Source .NET: Messaging.

Karena remoting tidak didukung, panggilan ke BeginInvoke() dan EndInvoke() pada objek delegasi akan menghasilkan PlatformNotSupportedException. Untuk informasi selengkapnya, lihat Migrasi Panggilan BeginInvoke Delegat 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 waktu proses di mana peningkatan hak istimewa 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 terkotakpasir dari kode kritis keamanan dengan cara deklaratif tetapi tidak lagi didukung sebagai batas keamanan. Fitur ini banyak digunakan oleh Silverlight.

Untuk menjalankan proses dengan set 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.

Tips

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

Beberapa API refleksi tidak didukung

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

Di .NET 9, PersistedAssemblyBuilder diimplementasikan dan metode AssemblyBuilder.Save 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 perangkaian multi-modul

Rakitan yang terdiri dari beberapa modul (OutputType=Module di 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