Bagikan melalui


Panduan aplikasi Klien/Server

Aplikasi klien/server tidak boleh berasumsi bahwa satu koneksi komputer setara dengan satu sesi pengguna. Ini adalah kasus khusus dari masalah yang dibahas dalam Alamat IP dan Nama Komputer.

Untuk mengidentifikasi koneksi klien/server secara unik, setiap modul klien harus menggunakan nama atau pengidentifikasi unik. Aplikasi dapat menggunakan objek atau pipa bernama, soket, atau metode IPC lainnya. Untuk informasi selengkapnya, lihat Namespace Objek Kernel.

Agar kompatibel dengan Layanan Desktop Jauh, modul server dalam aplikasi klien/server harus dapat menangani beberapa klien yang terhubung dari komputer yang sama. Untuk mencapai hal ini, modul server harus menerima koneksi klien melalui antarmuka global yang terdefinisi dengan baik, seperti RPC atau pipa bernama. Server dan klien harus menegosiasikan saluran komunikasi yang berbeda untuk setiap sesi pengguna. Klien harus membuat koneksi ke server dengan menggunakan protokol yang dengan mudah mendukung jenis operasi ini, seperti TCP/IP, di mana koneksi soket yang berbeda dapat digunakan untuk setiap aplikasi klien.

Modul klien dapat memanggil fungsi ProcessIdToSessionId untuk mengambil pengidentifikasi sesi Layanan Desktop Jarak Jauhnya. Klien kemudian menggunakan beberapa bentuk komunikasi antar-proses untuk meneruskan pengidentifikasi sesinya ke modul server. Modul klien dan server kemudian dapat menggunakan pengidentifikasi sesi untuk menyiapkan saluran komunikasi privat. Misalnya, modul server dapat menggunakan pengidentifikasi sesi untuk mengakses objek di namespace sesi untuk objek kernel.

Selain itu, modul server dapat menggunakan pengidentifikasi sesi dalam panggilan WTSQuerySessionInformation untuk mengambil informasi tambahan tentang klien. Modul server juga dapat menggunakan pengidentifikasi sesi dalam panggilan WTSSendMessage untuk menampilkan pesan di terminal klien. Modul server juga dapat membuat dua peristiwa untuk memantau koneksi klien ke dan memutuskan sambungan dari sesi. Namun, harus didaftarkan di server Host Sesi Desktop Jarak Jauh (Host Sesi RD) untuk melakukan ini. Untuk informasi selengkapnya, lihat Memantau Koneksi Sesi dan Pemutusan Sambungan.

Permintaan input pengguna adalah sumber masalah potensial untuk aplikasi klien/server. Misalnya, jika layanan memanggil fungsi MessageBox , kotak pesan ditampilkan di desktop server Host Sesi RD, bukan di desktop klien. Untuk menampilkan pesan di desktop klien, layanan dapat memanggil fungsi WtsSendMessage . Atau, layanan dapat meminta input dari modul klien, dan modul klien dapat menampilkan antarmuka pengguna dan mengirim input yang dihasilkan kembali ke layanan.

Proses yang diluncurkan dari beberapa sesi dapat mengirim data ke dan menerima data satu sama lain melalui penggunaan blok memori bersama. Untuk informasi selengkapnya, lihat Membuat Memori Bersama Bernama. Memori bersama tidak dapat digunakan dalam kondisi berikut:

  • Proses yang menggunakan blok memori bersama diluncurkan oleh beberapa sesi.
  • Sesi berbagi kredensial autentikasi pengguna yang sama.