Bagikan melalui


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

  • 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