Bagikan melalui


Membuat Klien

Membuat klien untuk layanan Web sangat disederhanakan di WWSAPI oleh API Model Layanan dan alat WsUtil.exe . Model Layanan menyediakan API yang memungkinkan klien mengirim dan menerima pesan melalui saluran sebagai panggilan metode C. Alat WsUtil menghasilkan header dan pembantu untuk mengimplementasikan klien. Header ini mencakup jenis dan prototipe fungsi untuk fungsi C yang mewakili layanan yang ditawarkan oleh layanan Web target. Pembantu digunakan untuk membuat proksi layanan, yang berisi informasi pengikatan dan alamat titik akhir untuk layanan.

Menggunakan WsUtil untuk Menghasilkan Header dan Pembantu

Untuk menghasilkan header dan pembantu, WsUtil membuka dan membaca file metadata untuk layanan target — file wsdl dan xsd — dan mengonversinya menjadi header; oleh karena itu, perlu untuk mengambil file metadata untuk layanan target terlebih dahulu, misalnya dengan menggunakan SvcUtil, bagian dari Windows Communication Foundation. Untuk alasan keamanan, sangat penting bahwa salinan file-file ini dapat dipercaya. (Untuk informasi selengkapnya, lihat bagian "Keamanan" dari topik Alat Pengkompilasi WsUtil .)

Untuk menjalankan WsUtil, gunakan sintaks baris perintah berikut jika file WSDL dan XSD untuk layanan berada di direktori mereka sendiri: WsUtil.exe *.wsdl *.xsd. Atau, Anda dapat menentukan file dengan nama lengkap.

WsUtil umumnya menghasilkan dua file untuk setiap file metadata: header dan file C. Tambahkan file-file ini ke proyek pengodean Anda, dan gunakan pernyataan #include untuk menyertakannya dalam kode untuk klien Anda. (File XSD mewakili jenis, dan file WSDL mewakili operasi.)

Membuat Proksi Layanan

Header yang dihasilkan oleh WsUtil berisi rutinitas pembantu untuk membuat proksi layanan dengan pengikatan yang diperlukan. Rutinitas ini disertakan dalam bagian "Rutinitas pembantu kebijakan" dari file header yang dihasilkan. Misalnya, header yang dihasilkan untuk layanan kalkulator yang diilustrasikan dalam contoh httpcalculatorclientexample akan berisi prototipe fungsi berikut.

HRESULT BasicHttpBinding_ICalculator_CreateServiceProxy(
    __in_opt WS_HTTP_BINDING_TEMPLATE* templateValue,
    __in_ecount_opt(proxyPropertyCount) const WS_PROXY_PROPERTY* proxyProperties,
    __in const ULONG proxyPropertyCount,
    __deref_out_opt WS_SERVICE_PROXY** _serviceProxy,
    __in_opt WS_ERROR* error);

Gabungkan pembantu ini dalam kode Anda dan berikan handel WS_SERVICE_PROXY untuk menerima handel ke proksi layanan yang dibuat. Dalam skenario paling sederhana, di mana hanya handel proksi layanan dan objek kesalahan yang diteruskan ke fungsi, panggilan terlihat seperti berikut ini.

hr = BasicHttpBinding_ICalculator_CreateServiceProxy(
            NULL,
            NULL,
            0,
            &serviceProxy,
            error);

Untuk membuat bagian alamat proksi layanan, panggil WsOpenServiceProxy dengan handel ke proksi layanan dan penunjuk ke WS_ENDPOINT_ADDRESS yang berisi alamat titik akhir layanan yang ingin Anda sambungkan.

Menerapkan Klien dengan Prototipe Fungsi

Header yang dihasilkan dari file WSDL layanan juga berisi prototipe fungsi C yang mewakili layanan yang tersedia dari layanan Web dan khusus untuk pengikatan yang diperlukan. Misalnya, header yang dihasilkan untuk layanan kalkulator yang diilustrasikan dalam HttpCalculatorServiceExample akan berisi prototipe berikut untuk operasi perkalian layanan tersebut.

HRESULT BasicHttpBinding_ICalculator_Multiply(
    __in WS_SERVICE_PROXY* _serviceProxy,
    __in double n1,
    __in double n2,
    __out double* MultiplyResult,
    __in WS_HEAP* _heap,
    __in_ecount_opt(_callPropertyCount) const WS_CALL_PROPERTY* _callProperties,
    __in const ULONG _callPropertyCount,
    __in_opt const WS_ASYNC_CONTEXT* _asyncContext,
    __in_opt WS_ERROR* _error);

Anda dapat menyalin prototipe dan menggunakannya sebagai templat untuk mengodekan panggilan fungsi di klien Anda, dalam setiap kasus meneruskan handel ke proksi layanan. Setelah Anda selesai dengan proksi layanan, panggil WsCloseServiceProxy.