Sdílet prostřednictvím


Vytvoření klienta

Vytvoření klienta pro webové služby je ve WWSAPI výrazně zjednodušené rozhraním API Service Model API a nástrojem WsUtil.exe. Model služby poskytuje rozhraní API, které klientovi umožňuje odesílat a přijímat zprávy přes kanál jako volání metody jazyka C. Nástroj WsUtil generuje hlavičky a pomocné funkce pro implementaci klienta. Tyto hlavičky zahrnují typy a prototypy funkcí pro funkce jazyka C představující služby nabízené cílovou webovou službou. Pomocní pracovníci se používají k vytvoření proxy služby, který obsahuje informace o vazbě a adresu koncového bodu pro službu.

Použití nástroje WsUtil ke generování hlaviček a pomocníků

K vygenerování hlaviček a pomocných rutin wsUtil otevře a přečte soubory metadat pro cílovou službu – wsdl a xsd – a převede je na hlavičky; proto je nutné předem načíst soubory metadat pro cílovou službu, například pomocí nástroje SvcUtil, součást služby Windows Communication Foundation. Z bezpečnostních důvodů je nezbytné, aby vaše kopie těchto souborů byly důvěryhodné. (Další informace naleznete v části „Zabezpečení“ nástroje WsUtil Compiler Tool článku.)

Chcete-li spustit WsUtil, použijte následující syntaxi příkazového řádku, pokud jsou soubory WSDL a XSD pro službu ve vlastním adresáři: WsUtil.exe *.wsdl *.xsd. Případně můžete soubory zadat úplným názvem.

WsUtil obvykle generuje dva soubory pro každý soubor metadat: hlavičku a soubor C. Přidejte tyto soubory do projektu kódování a pomocí příkazů #include je zahrňte do kódu klienta. (Soubory XSD představují typy a soubory WSDL představují operace.)

Vytvoření proxy služby

Hlavička vygenerovaná nástrojem WsUtil obsahuje pomocnou rutinu pro vytvoření proxy služby s požadovanou vazbou. Tato rutina je zahrnuta v sekci "Pomocné rutiny zásad" generovaného hlavičkového souboru. Například vygenerovaná hlavička pro službu kalkulačky znázorněná v httpcalculatorclientexample příkladu bude obsahovat následující prototyp funkce.

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);

Začleňte tohoto pomocníka do svého kódu a předejte popisovač WS_SERVICE_PROXY, abyste obdrželi popisovač pro vytvořený zástupce služby. V nejjednodušším scénáři, ve kterém je do funkce předán pouze popisovač proxy služby a objekt chyby, volání vypadá takto.

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

Pokud chcete vytvořit část adresy proxy služby, zavolejte WsOpenServiceProxy s popisovačem proxy služby a ukazatelem na WS_ENDPOINT_ADDRESS, který obsahuje adresu koncového bodu služby, ke které se chcete připojit.

Implementace klienta s prototypy funkcí

Hlavičky vygenerované ze souborů WSDL služby také obsahují prototypy funkcí jazyka C představující služby dostupné z webové služby a specifické pro požadovanou vazbu. Například hlavička vygenerovaná pro službu kalkulačky znázorněná v HttpCalculatorServiceExample bude obsahovat následující prototyp pro operaci násobení dané služby.

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);

Prototypy je možné zkopírovat a použít jako šablony pro kódování volání funkcí ve vašem klientovi, v každém případě předáním popisovače službě proxy. Po dokončení proxy služby zavolejte WsCloseServiceProxy.