Serialisasi Mode Campuran Handel Konteks

Dimulai dengan Windows XP, satu antarmuka dapat mengakomodasi handel konteks serial dan nonserialisasi, memungkinkan satu metode pada antarmuka untuk mengakses handel konteks secara eksklusif (diserialisasikan), sementara metode lain mengakses handel konteks tersebut dalam mode bersama (tidak diserialisasi). Untuk informasi selengkapnya tentang handel konteks, lihat atribut berikut:

Kemampuan akses mode serial dan bersama sebanding dengan mekanisme penguncian baca/tulis; Metode yang menggunakan handel konteks berseri adalah pengguna eksklusif (penulis), sedangkan metode yang menggunakan handel konteks yang tidak diserialisasi adalah pengguna bersama (pembaca). Metode yang menghancurkan atau memodifikasi status handel konteks harus diserialisasikan. Metode yang tidak memodifikasi status handel konteks, seperti metode yang hanya membaca dari handel konteks, dapat tidak diserialisasi. Menggunakan handel konteks dalam mode campuran dapat secara substansial meningkatkan skalabilitas server, terutama ketika beberapa utas melakukan panggilan simultan ke handel konteks yang sama.

RPC tidak memberlakukan "kunci tulis" pada metode menggunakan handel konteks dalam mode bersama, yang berarti aplikasi harus memastikan bahwa handel konteks mode bersama tidak dimodifikasi. Modifikasi handel konteks yang digunakan dalam mode bersama dapat mengakibatkan kerusakan halus pada konten handel konteks, yang tidak mungkin di-debug.

Mengubah logika serialisasi handel konteks hanya memengaruhi server. Selain itu, mengubah logika serialisasi handel konteks tidak memengaruhi format kawat, dan oleh karena itu, perubahan pada logika serialisasi pada server tidak memengaruhi kemampuan klien yang ada untuk berinteraksi dengan server.

Hanya menggunakan handel konteks yang tidak diserialisasi tidak disarankan. Server yang menggunakan handel yang tidak diserialisasi harus beralih ke akses berseri untuk metode yang menutup handel konteks.

Handel konteks yang [out]-only biasanya digunakan oleh metode pembuatan, dan tidak memerlukan serialisasi apa pun. Oleh karena itu, setiap atribut serialisasi yang diterapkan ke handel konteks [out]-only, seperti context_handle_serialize atau context_handle_noserialize, diabaikan oleh RPC.

Catatan

Metode pembuatan secara implisit diserialisasikan.

 

Contoh

Dua contoh berikut menunjukkan cara mengaktifkan serialisasi mode campuran handel konteks.

Contoh pertama menunjukkan cara melakukannya dalam file IDL:

typedef [context_handle] void *TestContextHandleExclusive;
typedef [context_handle] TestContextHandleExclusive TestContextHandleShared;

void
UseShared(...
          [in] TestContextHandleShared *Ctx,
          ...);

void
UseExclusive(...
             [in, out] TestContextHandleExclusive *Ctx,
             ...);

Contoh kedua menunjukkan cara mengaktifkan serialisasi mode campuran handel konteks dalam file ACF:

typedef [context_handle_serialize] TestContextHandleExclusive;

typedef [context_handle_noserialize] TestContextHandleShared;

context_handle

context_handle_serialize

context_handle_noserialize