SABUN ile WSDL arasındaki farkın ne olduğunu söylemeden önce, ikisinin (SOAP ve WSDL) bir web hizmetinin bileşenleri olduğu bir web hizmetinin ne olduğunu tanımlamamız gerekir.
Çoğu uygulama, kullanıcılarla etkileşim kurmak için geliştirilir, kullanıcı bir arabirim aracılığıyla verileri girer veya arar ve ardından uygulama kullanıcının girdisine yanıt verir.
Bir Web hizmeti, bir Web hizmeti uygulamasının yalnızca makineden makineye veya uygulamadan uygulamaya iletişim kurması dışında aşağı yukarı aynı şeyi yapar. Genellikle doğrudan kullanıcı etkileşimi yoktur.
Bir Web hizmeti temelde uygulamalar arasında veri alışverişi yapmak için kullanılan açık protokoller koleksiyonudur. Açık protokollerin kullanılması, Web hizmetlerinin platformdan bağımsız olmasını sağlar. Farklı programlama dillerinde yazılan ve farklı platformlarda çalışan yazılımlar, İnternet gibi bilgisayar ağları üzerinden veri alışverişi yapmak için Web hizmetlerini kullanabilir. Başka bir deyişle, Windows uygulamaları PHP, Java ve Perl uygulamalarıyla ve diğer pek çok şeyle konuşabilir ki bu normal koşullarda mümkün olmaz.
Web Hizmetleri Nasıl Çalışır?
Farklı uygulamalar farklı programlama dillerinde yazıldığından, genellikle birbirleriyle iletişim kuramazlar. Bir Web hizmeti, bu iletişimi açık protokoller ve standartlar, özellikle XML, SOAP ve WSDL kombinasyonunu kullanarak sağlar. Bir Web hizmeti, verileri etiketlemek için XML, bir mesajı aktarmak için SOAP ve son olarak hizmetlerin kullanılabilirliğini açıklamak için WSDL kullanır. Bir Web servis uygulamasının bu üç ana bileşenine bir göz atalım.
Basit Nesne Erişim Protokolü (SOAP)
Basit Nesne Erişim Protokolü veya SOAP, birlikte çalışabilirlik sorunlarıyla karşılaşmadan uygulamalar arasında mesaj göndermek ve almak için bir protokoldür (birlikte çalışabilirlik, bir Web hizmetinin üzerinde çalıştığı platformun alakasız hale gelmesi anlamına gelir). Benzer bir işleve sahip başka bir protokol de HTTP'dir. Web sayfalarına erişmek veya İnternet'te gezinmek için kullanılır. HTTP, ne tür bir Web sunucusu (Apache veya IIS veya başka herhangi bir şey) size görüntülediğiniz sayfaları veya görüntülediğiniz sayfaların ASP.NET veya HTML'de oluşturulmuş olup olmadığı konusunda endişelenmenize gerek kalmamasını sağlar.
SABUN hem istemek hem de yanıtlamak için kullanıldığından, içeriği amacına bağlı olarak biraz değişiklik gösterir.
Aşağıda bir SOAP isteği ve yanıt mesajı örneği bulunmaktadır
SABUN İsteği:
POST /InStock HTTP/1.1
Host: www.bookshop.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.bookshop.org/prices">
<m:GetBookPrice>
<m:BookName>The Fleamarket</m:BookName>
</m:GetBookPrice>
</soap:Body>
</soap:Envelope>
SOAP Yanıtı:
POST /InStock HTTP/1.1
Host: www.bookshop.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.bookshop.org/prices">
<m:GetBookPriceResponse>
<m: Price>10.95</m: Price>
</m:GetBookPriceResponse>
</soap:Body>
</soap:Envelope>
Her iki mesaj da aynı görünse de farklı yöntemler kullanırlar. Örneğin yukarıdaki örneklere bakarak, talep eden mesajın GetBookPrice
kitap fiyatını almak için yöntemi kullandığını görebilirsiniz . Yanıt, GetBookPriceResponse
"istek sahibi" olarak sizin göreceğiniz mesaj olacak olan yöntem tarafından gerçekleştirilir . Ayrıca mesajların XML kullanılarak oluşturulduğunu da görebilirsiniz.
Web Hizmetleri Açıklama Dili veya WSDL
WSDL, bir Web hizmetini açıklayan ve ayrıca yöntemlerine nasıl erişip kullanacağınızı anlatan bir belgedir.
WSDL, İnternette rastladığınız bir Web hizmetinde hangi yöntemlerin mevcut olduğunu nasıl bileceğinizle ilgilenir.
Örnek bir WSDL dosyasına bir göz atın:
<?xml version="1.0" encoding="UTF-8"?>
<definitions name ="DayOfWeek"
targetNamespace="http://www.roguewave.com/soapworx/examples/DayOfWeek.wsdl"
xmlns:tns="http://www.roguewave.com/soapworx/examples/DayOfWeek.wsdl"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<message name="DayOfWeekInput">
<part name="date" type="xsd:date"/>
</message>
<message name="DayOfWeekResponse">
<part name="dayOfWeek" type="xsd:string"/>
</message>
<portType name="DayOfWeekPortType">
<operation name="GetDayOfWeek">
<input message="tns:DayOfWeekInput"/>
<output message="tns:DayOfWeekResponse"/>
</operation>
</portType>
<binding name="DayOfWeekBinding" type="tns:DayOfWeekPortType">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetDayOfWeek">
<soap:operation soapAction="getdayofweek"/>
<input>
<soap:body use="encoded"
namespace="http://www.roguewave.com/soapworx/examples"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded"
namespace="http://www.roguewave.com/soapworx/examples"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="DayOfWeekService" >
<documentation>
Returns the day-of-week name for a given date
</documentation>
<port name="DayOfWeekPort" binding="tns:DayOfWeekBinding">
<soap:address location="http://localhost:8090/dayofweek/DayOfWeek"/>
</port>
</service>
</definitions>
Bir WSDL dosyası hakkında hatırlanması gereken ana şeyler, size şunları sağlamasıdır:
Bir Web hizmetinin açıklaması
Bir Web hizmetinin kullandığı yöntemler ve aldığı parametreler
Web hizmetlerini bulmanın bir yolu