Bagikan melalui


Antarmuka Server Iklan

Sisi server aplikasi yang menggunakan handel otomatis harus memanggil fungsi RpcNsBindingExport untuk membuat informasi pengikatan tentang server tersedia untuk klien. Handel pengikatan otomatis memerlukan layanan nama yang berjalan di server yang dapat diakses oleh klien. Implementasi Microsoft dari layanan nama, Microsoft Locator, mengelola handel otomatis. Aplikasi server yang menggunakan handel pengikatan implisit dan eksplisit juga dapat mengiklankan kehadirannya di database layanan nama.

Biasanya, server memanggil fungsi run-time berikut:

/* auto handle server application (fragment) */
 
//interface header file that the MIDL compiler generates
#include "auto.h" 
 
void main(void)
{
    RpcUseProtseqEp(...);
    RpcServerRegisterIf(...);
    RpcServerInqBindings(...);
    RpcNsBindingExport(...);
    ...
}

Panggilan ke dua fungsi pertama dalam fragmen kode ini mirip dengan contoh Halo, Dunia. Fungsi-fungsi ini membuat informasi tentang pengikatan yang tersedia untuk klien. Panggilan ke RpcServerInqBindings dan RpcNsBindingExport menempatkan informasi dalam database layanan nama. Panggilan ke RpcServerInqBindings mengisi vektor pengikatan dengan handel pengikatan yang valid sebelum handel diekspor ke layanan nama. Setelah program server mengekspor handel ke database, klien (atau stub klien) dapat memanggil RpcNsBindingImportBegin dan RpcNsBindingImportNext untuk mendapatkan informasi ini. Untuk detailnya, lihat Menemukan Sistem Host Server.

Panggilan ke RpcServerInqBindings dan RpcNsBindingExport dan struktur data terkait terlihat mirip dengan yang berikut ini:

RPC_BINDING_VECTOR * pBindingVector;
RPCSTATUS status;
 
status = RpcServerInqBindings(&pBindingVector);
 
status = RpcNsBindingExport(
                fNameSyntaxType,      // name syntax type 
                pszAutoEntryName,     // nsi entry name 
                autoh_ServerIfHandle, // if server handle
                pBindingVector,       // set in previous call 
                NULL);                // UUID vector

Perhatikan bahwa parameter RpcServerInqBindingspBindingVector adalah penunjuk ke RPC_BINDING_VECTOR. Ingat juga bahwa setiap panggilan ke RpcNsBindingExport harus diikuti dengan panggilan ke RpcBindingVectorFree.

Untuk menghapus antarmuka yang diekspor dari database layanan nama, server memanggil RpcNsBindingUnexport seperti yang ditunjukkan:

status = RpcNsBindingUnexport(
                fNameSyntaxType, 
                pszAutoEntryName,  
                auto_ServerIfHandle,
                NULL);              // unexport handles only

Fungsi RpcNsBindingUnexport harus digunakan hanya ketika layanan dihapus secara permanen. Ini tidak boleh digunakan ketika layanan dinonaktifkan sementara, seperti ketika server dimatikan untuk pemeliharaan. Program server dapat mendaftarkan dirinya dengan database layanan nama, namun tidak tersedia karena server untuk sementara offline. Aplikasi klien harus berisi kode penanganan pengecualian untuk kondisi tersebut.

Untuk informasi selengkapnya tentang konten dan format database layanan nama, lihat Database Layanan Nama RPC.

Aplikasi dapat menggunakan layanan Direktori Aktif jika program klien dan server berjalan di bawah Windows 2000. Komputer yang menjalankan program klien dan server harus menjadi anggota domain Windows 2000.

Untuk mengiklankan kehadirannya menggunakan layanan Direktori Aktif, program server harus berjalan dalam konteks keamanan administrator domain. Jika berjalan dalam konteks pengguna domain, administrator domain harus mengubah daftar kontrol akses (ACL) pada kontainer Layanan RPC. Untuk informasi selengkapnya, lihat dokumentasi Direktori Aktif.