Aracılığıyla paylaş


İstemci Oluşturma

Web hizmetleri için istemci oluşturma, WWSAPI'de Hizmet Modeli API'si ve WsUtil.exe aracı tarafından büyük ölçüde basitleştirilir. Hizmet Modeli, istemcinin C yöntemi çağrıları olarak bir kanalı üzerinden iletileri gönderip almasını sağlayan bir API sağlar. WsUtil aracı, istemciyi uygulamak için başlık dosyaları ve yardımcılar üretir. Bu üst bilgiler, hedef Web hizmeti tarafından sunulan hizmetleri temsil eden C işlevleri için türleri ve işlev prototiplerini içerir. Yardımcılar, hizmet için bağlama bilgilerini ve uç nokta adresi içeren hizmet ara sunucusunu oluşturmak için kullanılır.

Başlıklar ve Yardımcılar Oluşturma için WsUtil Kullanma

Üst bilgileri ve yardımcıları oluşturmak için WsUtil, hedef hizmetin meta veri dosyalarını (wsdl ve xsd dosyaları) açar ve okur ve bunları üst bilgilere dönüştürür; bu nedenle, hedef hizmet için meta veri dosyalarını önceden, örneğin Windows Communication Foundation'ın bir parçası olan SvcUtil kullanarak almak gerekir. Güvenlik nedeniyle, bu dosyaların kopyalarınızın güvenilir olması zorunludur. (Daha fazla bilgi için WsUtil Derleyici Aracı konusunun "Güvenlik" bölümüne bakın.)

WsUtil'i çalıştırmak için, hizmetin WSDL ve XSD dosyaları kendi dizinlerindeyse aşağıdaki komut satırı söz dizimini kullanın: WsUtil.exe *.wsdl *.xsd. Alternatif olarak, dosyaları tam adıyla belirtebilirsiniz.

WsUtil genellikle her meta veri dosyası için iki dosya oluşturur: üst bilgi ve C dosyası. Bu dosyaları kodlama projenize ekleyin ve #include deyimlerini kullanarak bunları istemcinizin koduna ekleyin. (XSD dosyaları türleri, WSDL dosyaları ise işlemleri temsil eder.)

Hizmet Ara Sunucusu Oluşturma

WsUtil tarafından oluşturulan başlık, gerekli bağlama sahip hizmet vekilini oluşturmaya yönelik bir yardımcı rutin içerir. Bu rutin, oluşturulan başlık dosyasının "Politika yardımcı rutinleri" bölümüne eklenir. Örneğin, httpcalculatorclientexample örneğinde gösterilen hesap makinesi hizmeti için oluşturulan üst bilgi aşağıdaki işlev prototipini içerir.

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

Bu yardımcıyı kodunuza dahil edin ve oluşturulan hizmet ara sunucusunun tanıtıcısını almak için bir WS_SERVICE_PROXY tanıtıcısı geçirin. İşleve yalnızca bir hizmet ara sunucusu tanıtıcısının ve bir hata nesnesinin geçirildiği en basit senaryoda, çağrı aşağıdaki gibi görünür.

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

Hizmet proxy'sinin adres bölümünü oluşturmak için, hizmet ara sunucusu tanıtıcısı ve bağlanmak istediğiniz hizmet uç noktası adresini içeren bir WS_ENDPOINT_ADDRESS işaretçisi ile WsOpenServiceProxy çağırın.

İşlev Prototipleri ile İstemciyi Uygulama

Hizmet WSDL dosyalarından oluşturulan üst bilgiler, Web hizmetinden sağlanan ve gerekli bağlamaya özgü hizmetleri temsil eden C işlevi prototiplerini de içerir. Örneğin, HttpCalculatorServiceExample'da gösterilen hesap makinesi hizmeti için üretilen bir başlık, bu hizmetin çarpma fonksiyonu için aşağıdaki prototipi içerecektir.

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

Prototipleri kopyalayabilir ve her durumda tanıtıcıyı hizmet ara sunucusuna geçirerek istemcinizdeki işlev çağrılarını kodlamak için şablonlar olarak kullanabilirsiniz. Hizmet ara sunucusuyla işiniz bittiğinde, WsCloseServiceProxy'yi çağırın.