Прости услуги – предоставяне на определени услуги на клиентите. Например он-лайн магазин, или търсачка, достъпни чрез уеб услуги.
Интеграция на приложения – чрез уеб услуги лесно се интегрират различни приложения, без значение на каква платформа работят и как са реализирани.
Връзка между отделните компоненти на една система – например средният слой (бизнес логиката) на дадено приложение може да дава достъп до функционалността си на презентационния слой чрез уеб услуга.
Имат и други приложения (в по-сложни сценарии).
Инфраструктура
Уеб услугите трябва да:
са слабо свързани (loosely coupled) – трябва да се знае само протокола за използването им;
С времето и с развитието на уеб услугите е изградена сложна инфраструктура, която да помага за постигането на горните цели. Тя се състои от четири елемента:
Directory
Discovery
Description
Wire format
Directory
Директориите са ресурси за намиране на някаква уеб услуга. Можем да търсим уеб услуги например по ключови думи или други признаци.
За целта е създадена спецификацията UDDI (Universal Description, Discovery and Integration), която предоставя стандартен механизъм за публикуване на информация за уеб услуги от създателите им и за намирането им от потребителите на уеб услуги.
Пример за директория е http://uddi.microsoft.com/, но има и други такива.
Discovery
Механизъм за откриване на описанието на някаква уеб услуга, т.е. на документите, които я описват.
Чрез discovery можем да разберем какви услуги се предлагат от някой. За целта се използват т.нар. “discovery” файлове – XML базирани файлове, които описват Web услугите, предлагащи се на някой сървър. Такъв файл може да бъде например http://www.blahblah.com/default.disco, който да описва всички уеб услуги на blahblah.com.
Не е задължително да ползваме discovery механизъма (или да има такъв), ако знаем пътя към уеб сървиса.
Description
Уеб услугите разчитат на модел, при който описанието на формата на заявките до тях, както и формата на връщаните данни, е публикуван публично.
За описание на уеб услуги (предлагани методи, параметри, връщани стойности, типовете им и т.н.) се използват специални XML-базирани документи, използващи езика WSDL (Web Services Description Language).
Wire Format
След като вече знаем, че някоя конкретна уеб услуга съществува (от directory), как да я открием (от discovery) и как да я ползваме (от description), остава просто да започнем да подаваме заявки към нея и да получаваме отговорите.
Wire format е форматът на самите заявки, които подаваме, както и на отговорите, които получаваме.
Най-широко използваният формат е SOAP (Simple Object Access Protocol) по протокол HTTP. SOAP е XML-базиран протокол. От тук идва и названието “XML Web Service”.
SOAP е направен да е максимално лек и лесен за използване, възможно най-прост е и има минимум функционалност, а освен това е и в текстов (XML) формат. Това го прави предпочитан протокол за Web услуги, защото по този начин те могат да бъдат използвани, независимо на каква платформа и/или език за програмиране е разработен клиентът.
Ето как си взаимодействат четирите инфраструктурни елемента, за да ни помогнат да открием и използваме някаква уеб услуга (източник на картинката: MSDN Library):
Разработването и/или използването на уеб услуги при .NET Framework е направено възможно най-лесно.
За да създадем уеб услуга, необходимо е да дефинираме клас от тип System.Web.Services.WebService. За да обозначим, че някой негов метод трябва да бъде публикуван от уеб услугата, необходимо е просто да го маркираме с атрибута [WebMethod].
Възможно е методите на уеб услугата да използват Session и Application обекти за съхранение на сесийни данни / данни на приложението по същия начин, както това е възможно в обикновени уеб приложения.
За да получим WSDL документ, описващ уеб услуга, създадена с .NET Framework, достатъчно е просто да я извикаме с параметър WSDL. Например ако услугата е достъпна чрез MyService.asmx, трябва да я извикаме така: MyService.asmx?wsdl