Beyaz.Net İpucu

KATEGORİLER

Delphi
PHP
Dotnet
FileMaker

WSDL (Web Servisleri Tanımlama Dili)

İstemcinin Web servisleri ile anlaşabilmesi için istemcinin üstünde bir Proxy nesnesinin var olması gerekmektedir. Bu dosya yardımıyla istemci Web servisine ait bilgileri temin etmesi sağlanmaktadır. Bu Proxy dosyası ise .NET ortamında oluşturulup kullanılmaktadır. İstemci Web servisi ile bağlantı kurmak istediğinde sunucudan wsdl uzantılı bir doküman talep edilecektir. Daha sonra sunucudan indirilen dosya yardımıyla aradaki bağlantıyı sağlayacak Proxy nesnesi elde edilmiş olmaktadır.
WSDL (Web Service Description Language- Web Servisleri Tanımlama Dili) dosyaları ile Proxy sınıfı arasında bir bağ bulunmaktadır. WSDL dokümanları XML tabanlı olduklarından sunucudan indirilmeleri uzun sürmemektedir. İlk olarak istemciden istek geldiğinde indirilir daha sonraları sadece değişiklik yapıldığında indirilmektedir.
 

WSDL dokümanı, geliştirilen servise ait tüm bilgileri içermektedir. Kullanılan metotlar, bu metotların aldığı değişkenler ve geriye ne tür değerler döndürdüğü gibi bilgileri sunar. Temel olarak bir WSDL dokümanı 4 ana kısımdan oluşmaktadır.

    Types (Tipler): XML standartlarına uygun olarak tanımlanmış veri tipleridir.
    Messages (Mesajlar): İşlemin veri elemanlarını tanımlanmaktadır.
    portType (Port Tipi): Web servislerindeki işlevleri açıklanmakta ve mesajların oluşturulması sağlanmaktadır.
    Binding (Bağlama): Her bir port için mesajın formatı ve protokolleri tanımlanmaktadır. 

Aşağıda ise bir WSDL belgesinin temel şablonu yer almaktadır. Aşağıdaki şablon oldukça karmaşık ve uzun görünmesine rağmen bunun yazılması zorunluluğu yoktur. Bunun için düşünülmüş hizmetler .NET  platformu içerisinde geliştirilmiştir.

<wsdl:definitions name="nmtoken"? targetNamespace="uri">
    <import namespace="uri" location="uri"/> *
    <wsdl:documentation .... /> ?
    <wsdl:types> ?
        <wsdl:documentation .... /> ?
        <xsd:schema .... /> *
    </wsdl:types>
    <wsdl:message name="ncname"> *
        <wsdl:documentation .... /> ?
        <part name="ncname" element="qname"? type="qname"?/> *
    </wsdl:message>
    <wsdl:portType name="ncname"> *
        <wsdl:documentation .... /> ?
        <wsdl:operation name="ncname"> *
            <wsdl:documentation .... /> ?
            <wsdl:input message="qname"> ?
                <wsdl:documentation .... /> ?
            </wsdl:input>
            <wsdl:output message="qname"> ?
                <wsdl:documentation .... /> ?
            </wsdl:output>
            <wsdl:fault name="ncname" message="qname"> *
                <wsdl:documentation .... /> ?
            </wsdl:fault>
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:serviceType name="ncname"> *
        <wsdl:portType name="qname"/> +
    </wsdl:serviceType>
    <wsdl:binding name="ncname" type="qname"> *
        <wsdl:documentation .... /> ?
        <-- binding details --> *
        <wsdl:operation name="ncname"> *
            <wsdl:documentation .... /> ?
            <-- binding details --> *
            <wsdl:input> ?
                <wsdl:documentation .... /> ?
                <-- binding details -->
            </wsdl:input>
            <wsdl:output> ?
                <wsdl:documentation .... /> ?
                <-- binding details --> *
            </wsdl:output>
            <wsdl:fault name="ncname"> *
                <wsdl:documentation .... /> ?
                <-- binding details --> *
            </wsdl:fault>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="ncname" serviceType="qname"> *
        <wsdl:documentation .... /> ?
        <wsdl:port name="ncname" binding="qname"> *
            <wsdl:documentation .... /> ?
            <-- address details -->
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>

Kategorideki Güncel Makaleler