API Remoting sudah kedaluwarsa
Beberapa API terkait jarak jauh ditandai sebagai usang dan menghasilkan SYSLIB0010
peringatan pada waktu kompilasi. API ini dapat dihapus dalam versi .NET yang akan datang.
Deskripsi perubahan
API jarak jauh berikut ditandai usang.
API | Ditandai usang di... |
---|---|
MarshalByRefObject.GetLifetimeService() | 5.0 RC1 |
MarshalByRefObject.InitializeLifetimeService() | 5.0 RC1 |
Dalam .NET Framework 2.x - 4.x, GetLifetimeService() metode dan InitializeLifetimeService() mengontrol masa pakai instans yang terlibat dengan .NET remoting. Dalam .NET Core 2.x- 3.x, metode ini selalu melemparkan PlatformNotSupportedException pada waktu proses.
Dalam .NET 5 dan versi yang lebih baru, GetLifetimeService() metode dan InitializeLifetimeService() ditandai usang sebagai peringatan, tetapi terus melemparkan PlatformNotSupportedException pada waktu proses.
// MemoryStream, like all Stream instances, subclasses MarshalByRefObject.
MemoryStream stream = new MemoryStream();
// Throws PlatformNotSupportedException; also produces warning SYSLIB0010.
obj.InitializeLifetimeService();
Ini adalah perubahan kompilasi-waktu saja. Tidak ada perubahan run-time dari versi .NET Core sebelumnya.
Alasan untuk berubah
.NET remoting adalah teknologi warisan. Ini memungkinkan membuat instans objek dalam proses lain (berpotensi bahkan pada komputer yang berbeda) dan berinteraksi dengan objek tersebut seolah-olah itu adalah instans objek .NET biasa dalam proses. Infrastruktur jarak jauh .NET hanya ada di .NET Framework 2.x - 4.x. .NET Core dan .NET 5 dan versi yang lebih baru tidak memiliki dukungan untuk jarak jauh .NET, dan API jarak jauh tidak ada atau selalu melemparkan pengecualian pada runtime ini.
Untuk membantu mengarahkan pengembang dari API ini, kami mengusir API terkait jarak jauh yang dipilih. API ini dapat dihapus sepenuhnya dalam versi .NET di masa mendatang.
Versi yang diperkenalkan
.NET 5.0
Tindakan yang direkomendasikan
Pertimbangkan untuk menggunakan layanan REST berbasis WCF atau HTTP untuk berkomunikasi dengan objek di aplikasi lain atau di seluruh komputer. Untuk informasi selengkapnya, lihat Teknologi .NET Framework tidak tersedia di .NET Core.
Jika Anda harus terus menggunakan API usang, Anda dapat menekan
SYSLIB0010
peringatan dalam kode.MarshalByRefObject obj = GetMarshalByRefObj(); #pragma warning disable SYSLIB0010 // Disable the warning. obj.InitializeLifetimeService(); // Still throws PNSE. obj.GetLifetimeService(); // Still throws PNSE. #pragma warning restore SYSLIB0010 // Reenable the warning.
Anda juga dapat menekan peringatan dalam file proyek Anda, yang menonaktifkan peringatan untuk semua file sumber dalam proyek.
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net5.0</TargetFramework> <!-- NoWarn below will suppress SYSLIB0010 project-wide --> <NoWarn>$(NoWarn);SYSLIB0010</NoWarn> </PropertyGroup> </Project>
Penindasan
SYSLIB0010
hanya menonaktifkan peringatan usang API jarak jauh. Ini tidak menonaktifkan peringatan lainnya. Selain itu, itu tidak mengubah perilaku run-time yang dikodekan secara permanen dari selalu melemparkan PlatformNotSupportedException.
API yang Terpengaruh
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk