Нам потрібно визначити, що таке веб-служба, перш ніж розповісти, в чому різниця між SOAP та WSDL, де два (SOAP та WSDL) є компонентами веб-служби
Більшість програм розробляються для взаємодії з користувачами, користувач вводить або шукає дані через інтерфейс, а програма потім реагує на введення користувача.
Веб-служба робить більш-менш те ж саме, за винятком того, що додаток для веб-сервісу спілкується лише з машини на машину або з програми в програму. Часто немає прямої взаємодії з користувачем.
Веб-сервіс - це сукупність відкритих протоколів, які використовуються для обміну даними між додатками. Використання відкритих протоколів дозволяє веб-службам бути незалежними від платформи. Програмне забезпечення, написане різними мовами програмування та працює на різних платформах, може використовувати веб-сервіси для обміну даними через комп'ютерні мережі, такі як Інтернет. Іншими словами, програми Windows можуть спілкуватися з програмами PHP, Java та Perl та багатьма іншими, що в звичайних умовах було б неможливим.
Як працюють веб-сервіси?
Оскільки різні програми написані на різних мовах програмування, вони часто не можуть спілкуватися між собою. Веб-сервіс дозволяє це спілкування, використовуючи комбінацію відкритих протоколів та стандартів, головним чином XML, SOAP та WSDL. Веб-служба використовує XML для тегування даних, SOAP для передачі повідомлення та нарешті WSDL для опису доступності послуг. Давайте розглянемо ці три основні компоненти програми веб-сервісу.
Простий протокол доступу до об'єктів (SOAP)
Простий протокол доступу до об’єктів або SOAP - це протокол для надсилання та прийому повідомлень між програмами, не стикаючись з питаннями сумісності (інтероперабельність означає, що платформа, на якій працює веб-служба, стає неактуальною). Ще один протокол, що має подібну функцію, - HTTP. Він використовується для доступу до веб-сторінок або для пошуку в мережі. HTTP гарантує, що вам не доведеться турбуватися про те, який веб-сервер - будь то Apache або IIS або будь-який інший - обслуговує ваші сторінки, які ви переглядаєте, або чи створені вами сторінки створені в ASP.NET або HTML.
Оскільки SOAP використовується як для запиту, так і для відповіді, його вміст незначно змінюється залежно від його призначення.
Нижче наводиться приклад SOAP-запиту та відповіді
Запит SOAP:
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:
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>
Хоча обидва повідомлення виглядають однаково, вони проводять різні методи. Наприклад, переглядаючи наведені вище приклади, ви бачите, що запитуюче повідомлення використовує GetBookPrice
метод отримання ціни на книгу. Відповідь здійснюється GetBookPriceResponse
методом, який буде повідомленням, яке ви побачите як "запитувач". Ви також можете бачити, що повідомлення складаються за допомогою XML.
Мова веб-служб Опис або WSDL
WSDL - це документ, який описує веб-службу, а також розповідає, як отримати доступ та використовувати його методи.
WSDL піклується про те, як ви знаєте, які методи доступні у веб-сервісі, на який ви натрапляєте в Інтернеті.
Погляньте на зразок файлу WSDL:
<?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>
Основні речі, які слід пам’ятати про файл WSDL, це те, що він надає вам:
Опис веб-сервісу
Методи, якими користується веб-служба, та параметри, які вона приймає
Спосіб пошуку веб-служб