RPC asinkron

Panggilan Prosedur Jarak Jauh Asinkron (RPC) adalah ekstensi Microsoft yang membahas beberapa batasan model RPC tradisional sebagaimana didefinisikan oleh Open Software Foundation–Distributed Computing Environment (OSF-DCE). RPC asinkron memisahkan panggilan prosedur jarak jauh dari nilai pengembaliannya, yang menyelesaikan batasan RPC tradisional dan sinkron berikut:

  • Beberapa panggilan luar biasa dari klien satu utas. Dalam model RPC tradisional, klien diblokir dalam panggilan prosedur jarak jauh hingga panggilan kembali. Ini mencegah klien memiliki beberapa panggilan yang luar biasa, sambil tetap memiliki utasnya yang tersedia untuk melakukan pekerjaan lain.
  • Klien lambat atau tertunda. Klien yang lambat untuk menghasilkan data mungkin ingin melakukan panggilan prosedur jarak jauh dengan data awal dan kemudian menyediakan data tambahan saat diproduksi. Ini tidak dimungkinkan dengan RPC konvensional (sinkron).
  • Server lambat atau tertunda. Panggilan prosedur jarak jauh yang membutuhkan waktu lama untuk diselesaikan akan mengikat utas pengiriman selama durasi tugas. Dengan RPC asinkron, server dapat memulai operasi terpisah (asinkron) untuk memproses permintaan dan mengirim kembali balasan ketika tersedia. Server juga dapat mengirim balasan secara bertahap saat hasil tersedia tanpa harus mengikat utas pengiriman selama panggilan jarak jauh. Dengan membuat aplikasi klien asinkron, Anda dapat mencegah server lambat dari mengikat aplikasi klien yang tidak perlu.
  • Transfer data dalam jumlah besar. Mentransfer data dalam jumlah besar antara klien dan server, terutama melalui tautan lambat, mengikat utas klien dan utas manajer server selama transfer. Dengan RPC dan pipa asinkron, transfer data dapat berlangsung secara bertahap, dan tanpa memblokir klien atau server untuk melakukan tugas lain.

Anda memanfaatkan mekanisme RPC asinkron dengan mendeklarasikan fungsi dengan atribut [asinkron]. Karena Anda membuat deklarasi ini dalam file konfigurasi atribut (ACF), Anda tidak perlu membuat perubahan apa pun pada file Bahasa Definisi Antarmuka (IDL) ; RPC asinkron tidak berpengaruh pada protokol kawat (bagaimana data dikirimkan antara klien dan server). Ini berarti bahwa klien sinkron dan asinkron dapat berkomunikasi dengan aplikasi server asinkron.

Bagian ini menyajikan gambaran umum tentang cara mengembangkan aplikasi terdistribusi menggunakan RPC asinkron. Gambaran umum disajikan di bagian berikut: