
Литвинов / Системи розподіленої обробки інформації.release
.pdfчених у розділі <interface>.
Різні простори імен використовуються для визначення WSDL і SOAP.
Перший шар (тип повідомлення та portTypes для WSDL 1.1 і типи інте-
рфейсів WSDL 2.0) є синтаксичний інтерфейс web-служби, із зазначен-
ням підпису служби. Інші шари визначають технічні деталі.
8.2.4. Сервіс UDDI для реєстрації та пошуку web-сервісів
UDDI (Universal Description Discovery & Integration) − це з одного боку стандарт, спрямований на інтеграцію web-служб, з другого − відкрите сере-
довище для реєстрації та розміщення бізнес-cервісів з забезпеченням механі-
зму динамічного пошуку. Відповідно до звичайних веб-сайтів, процедура пошуку може бути здійснена двома способами: безпосереднього завдання ад-
реси сервісу та використання механізму пошуку (search engine). Ядром явля-
ється бізнес реєстрація − xml-файл, який використовується для опису бізнес об'єкту і його служб. Таким чином UDDI можна розглядати як службу DNS
для веб-додатків.
В цілому ідея складається в побудові загального каталогу, директорії,
до якої можливе здійснення доступу інших сервісів з використанням набору xml-стандартів. Підтримуються три типа рівня деталізації опису сервісів, які відповідно називаються білими, жовтими та зеленими сторінками. Білі сто-
рінки надають можливість пошуку сервісу тільки за ім’ям. Жовті − за катего-
рією, заданою кодом системи класифікації (напр. NAICS - North-American Industrial Classification System, UN Standard Products and Services Codes, Geolocation), зелені − описують деталі доступу до веб-сервісу з інформацією що-
до його зв’язування з протоколами та точками доступу. Якщо сервіс має де-
кілька зв’язувань (bindings), які визначаються в його WSDL-описі, сервіс по-
винен мати декілька зелених сторінок.
UDDI визначає функціонування служби реєстру, яка включає: структу-
ри даних для реєстрації підприємств, технічних характеристик, сервісів та
210
обслуговування кінцевих точок на базі технічних характеристик; SOAP API;
правила функціонування глобального реєстру.
Коли до серверу надходить запит, запускається програма, вказана в за-
питі з параметрами. Тоді програма просто виконує свою роботу і, як правило,
повертає результати у вигляді документу, який відправляється назад в брау-
зер користувача і відображається.
Проблеми, які вирішує специфікація UDDI:
можливість виявити підприємця вже існуючого в мережі;
визначення способів співпраці з знайденим підприємцем;
пошук нових замовників і спрощення доступу до вже існуючих ;
розширення пропозицій і збільшення ринкової досяжності;
рішення проблеми виникаючих бар'єрів при участі в глобальній еконо-
міці Internet;
опис сервісів і ділових процесів програмно в єдиному, відкритому і пе-
рспективному середовищі.
UDDI використовується при створенні різних платформ і програмних продуктів, таких фірм як Dell, Fujitsu, HP, Hitachi, IBM, Intel, Microsoft,
Oracle, SAP і Sun.
UDDI XSD визначають декілька видів основної інформації, які необ-
хідно знати користувачам і додаткам для використання певної веб-служби.
Разом вони утворюють базу метаінформації в рамках реєстрів UDDI (рис.57),
яка містить: опис служби бізнес-функції (BusinessService); інформацію про організацію, яка публікує колекцію бізнес-служб (BusinessEntity); технічну інформацію, яка необхідна для використання бізнес-служби (Bindi- ?gTemplate); технічну модель, яка застосовується для репрезентації інформа-
ції, що повторно використовується (напр.: тип сервісу, протокол, система ка-
тегоризації) (TModel).
211

Рис.57. Модель метаінформації в рамках реєстрів UDDI
У межах системного реєстру UDDI кожній структурі даних признача-
ють унікальний ідентифікатор згідно зі стандартною схемою.
Рис.58. Вікно пошуку доступних сервісів
212
8.3. REST підхід до побудови сервісно-орієнтованих додатків
REST (Representational State Transfer) − це архітектурний стиль, який будується на існуючих, добре відомих W3C-стандартах, таких, як HTTP, URI (Uniform Resource Identifier), XML і RDF (Resource Description Format). У
REST-сервісах акцент зроблено на доступ до ресурсів, а не на виконання від-
далених сервісів,- в цьому їх кардинальна відмінність від SOAP-сервісів. Як-
що SOAP-клієнти звертаються з запитом на виконання процедури на сервері,
то REST-клієнти просто вимагають сам ресурс. Наприклад, замість того, щоб запитувати віддалене виконання функції для знаходження потрібного форму-
ляра замовлення, проводиться запит цього формуляру, приблизно так само,
як Web-сторінки. Дані повинні передаватися у вигляді невеликої кількості
стандартних форматів (наприклад, HTML, XML, JSON). [REST].
JSON [REST2] (Java Script Object Notation) — це легкий формат обміну даними між комп'ютерами. JSON базується на тексті, і може бути з легкістю прочитаним людиною. Формат дозволяє описувати об'єкти та інші структури даних. JSON головним чином використовується для передачі структурованої
інформації |
через мережу (завдяки |
процесу, |
що називають серіалізацією). |
|
JSON знайшов своє головне призначення у написанні веб-додатків, а саме |
||||
при використанні |
технології AJAX. JSON |
виступає як заміна форма- |
||
ту XML під |
час |
асинхронної |
передачі |
структурованої інформації |
між клієнтом та сервером. При цьому перевагою JSON перед XML являється те, що він дозволяє зберігати складні структури в атрибутах, займає менше місця і прямо інтерпретується за допомогою JavaScript в об'єкти. Наприклад:
{
"firstName": "Іван", "lastName": "Коваленко",
"address": {
"streetAddress": "вул. Грушевського 14, кв.101", "city": "Київ",
"postalCode": 21000
213
},
"phoneNumbers": [
"044 123-1234",
"050 123-4567"
]
}
Технічно REST-сервіси можна реалізувати за допомогою статичних
HTML-сторінок.
Якщо REST-запит викличе на виконання віддалений створюваний код,
то повертається XML-відгук, проте даний факт у REST замаскований краще,
ніж у його SOAP-конкурента, який обов'язково потребує вказівки тієї функ-
ції, яка буде виконана.
REST популярна завдяки тому, що хостування REST-сервісів − віднос-
но простий процес у порівнянні із зусиллями, необхідними для розгортання інфраструктури та коду з метою підтримки SOAP-комунікацій. Ще в 2003 р.
Джеф Бар, пропагандист Web-сервісів з Amazon.com, розповів, що його ком-
панія обробляє більше REST-, ніж SOAP-запитів.
Слід також враховувати, що майже всі канали RSS і ATOM також яв-
ляються REST-сервісами. Власне, будь-який URI-запит, який передбачає зви-
чайну XML-відповідь (POX - Plain-Old XML), технічно залишається REST-
сервісом.
Переваги та недоліки.
Пропагандисти REST-сервісів стверджують, що вони краще масшта-
буються і, отже, краще справляються з великими обсягами обслуговування.
SOAP-сервіси набагато сильніше завантажують обчислювальні ресурси,
оскільки вимагають розбору XML-коду та впорядкування об'єктів, - а для оп-
тимізації управління та прискорення цих операцій необхідно спеціальне про-
грамне та апаратне забезпечення. Тоді як REST-сервіси є HTTP-запитами, а
отже легко контролюються штатними засобами вирівнювання навантаження звичайних пристроїв керування, наприклад, від компаній Cisco Systems,
214
Citrix і F5 Net-works. Моніторинг використання REST-сервісів теж значно простіше і часто менш дорогий, оскільки моніторинг на базі URI вже став сформованою технологією; пропонуються як відповідні комерційні продук-
ти, так і рішення з відкритим вихідним кодом.
REST-сервіси простіше реалізувати, оскільки вони базуються на добре відомих Web-протоколах і не вимагають від розробника вивчення WSDL,
SOAP та інших WS-специфікацій, що використовуються для управління і за-
безпечення безпеки SOAP-сервісів. Найпростіший REST-сервіс можна реалі-
зувати за кілька хвилин - статичний XML-файл, що повертається Web-
сервісом, це технічно і є REST-сервіс, адже XML-дані запрошувалися через
HTTP. Це навряд чи може стати оптимальним способом побудови сервісної інфраструктури, але для статичних або рідко мінливих ресурсів така можли-
вість вельми приваблива.
Але не все досконало у світі REST. Оскільки технологія REST базуєть-
ся на HTTP, то вона несе на собі відбиток ненадійності цього протоколу і не-
можливість збереження стану (його stateless-характеру) на відміну від склад-
них WS-специфікацій.
REST також не забезпечує стандартизованого механізму доступу до ре-
сурсів, отже, самостійно доведеться визначати такі стандарти і забезпечувати їх виконання, а також інформувати про спосіб доступу до ресурсів сервісів своїх партнерів, розробників і користувачів. Необхідно своєчасно оновлюва-
ти цей механізм комунікацій у разі будь-яких змін сервісу. У світі ж SOAP це виконує WSDL, діючи як динамічний контрагент між сервісом і його клієн-
тами.
8.4. Розробка web-сервісів з використанням .NET Framework
.NET Framework є платформою для створення web-додатків і web-
сервісів, котрі працюють під управлінням Internet Information Server (IIS).
Реалізація web-служб .NET здійснюється так само, як активізація віддаленої web-служби, або виклик методу локального класу. При цьому інструмента-
215
льні засоби, які надаються системою .NET Framework, дозволяють не знайо-
митись з роботою таких стандартів, як SOAP і WSDL.
Для створення web-служби необхідно виконати наступні дії (п. 1, 3, 5 і
8виконуються вручну).
1.Розробляється web-служба як .NET-клас з атрибутами, які ідентифі-
кують його як web-службу з деякими функціями.
2. У середовищі Visual Studio .NET автоматично створюється документ
WSDL, де описується, як клієнт повинен взаємодіяти з web-службою.
3. Споживач (клієнт) знаходить web-службу і, вирішивши скористатися нею, додає відповідне web-посилання в проект Visual Studio .NET (або запус-
кає утиліту wsdl.exe).
4. У середовищі Visual Studio .NET здійснюється автоматична перевір-
ка документа WSDL і генерується проксі-клас, який дозволяє споживачу вза-
ємодіяти з web-службою.
5. Споживач викликає один з методів класу web-служби. Для нього цей виклик не відрізняється від виклику методу будь-якого іншого класу, але на-
справді споживач взаємодіє з проксі-класом, а не з web-службою.
6.Проксі-клас перетворює передані параметри в повідомлення SOAP і
відправляє його web-службі.
7.Незабаром проксі-клас одержує SOAP-відповідь, перетворює її у ві-
дповідний тип даних і повертає його як звичний тип даних .NET. 8. Споживач використовує повернену йому інформацію.
При роботі web-служб .NET використовується технологія ASP.NET,
яка є частиною системи .NET Framework. Ця технологія вимагає підтримки з боку серверу Microsoft IIS. Середовище Visual Studio .NET забезпечує велику кількість інструментів, які допомагають полегшити вирішення задач, пов'яза-
них з отриманням і виконанням web-служби.
Робота web-служб побудована на використовуванні різних відкритих стандартів: WSDL, SOAP, HTTP; специфікації DISCO і UDDI, які полегшу-
ють публікацію і пошук інформації щодо web-служби (на сьогоднішній день
216
використовується також HTTP-комунікація і немає сенсу від неї відмовляти-
ся); з застосуванням розширення WS-Inspection - специфікації для пошуку документів, в яких перераховані групи web-служб і їх місцезнаходження (ро-
зроблена компаніями Microsoft і IBM для заміни протоколу DISCO).
Крім того, існують конкуруючі специфікації, котрі служать для подо-
лання деяких властивих web-службам обмежень, до яких можна віднести від-
сутність транзакцій, аутентифікації, ліцензування і шифрування. Жодна з по-
дібних специфікацій не досягла рівня встановленого стандартом і не була включена в .NET, але, можливо, в майбутньому це відбудеться.
8.4.1. Атрибут WebService
Щоб повідомити клієнта про можливості, які надаються службою, пот-
рібен відповідний механізм документування такої інформації. Середови-
ще .NET для цього надає атрибут WebServiceAttribute, котрий є членом прос-
тору імен System.Web.Services. З його допомогою можна вказати клієнту, де знайти інформацію про web-службу. Як і атрибути інших типів, клас
WebServiceAttribute успадковує функції класу System.Attribute. В більшості випадків для зручності використання слово Attribute в імені класу можна опустити, вказавши просто WebService. Для спрощення тексту програми ви-
користаємо дану можливість. Атрибут WebService має дві властивості: o Namespace - встановлює для служби простір імен XML;
o Description - додає текстовий і HTML-опис служби, який стає ча-
стиною WSDL-документа опису служби.
Простори імен XML, необхідні для забезпечення унікальної ідентифі-
кації елементів і атрибутів XML-документів, не мають нічого спільного з просторами імен .NET, які служать для організації класів.
У лістингу наведено документ web-служби DNSLookUpService, який використовує властивості Namespace і Description для реалізації атрибуту
WebService. Цей документ містить хост-ім'я, як рядковий аргумент і застосо-
217

вує клас DNS з простору імен System.Net для визначення і повернення відпо-
відної IP-адреси.
Документ web-служби DNSLookUpService
public class WebService : MarshalByValueComponent
{
using System.Web.Services; using Sestem.Net;
[WebService(Namespace = "http://www.bostontechnical.com/webservices/"
Descriptiоn="<P>Wеb-служба. яка виконує проглядання доменних імен.</P>")]
{
[WebMethod]
public string getIPforHostname(string strHostname)
{
IPHostEntry hostlnfo = Dns.GetHostByName(strHostname); return hostlnfo.AddressList[0].ToString();
}
}
}
У наведеному прикладі простір імен для web-служби знаходиться за адресою. Web-служба використовуватиме цей простір як сховище всіх XML-
документів, які повертаються у відповідь на її виклик. Простори імен XML
призначені для виключення суперечностей в назвах елементів і атрибутів.
Звичайно використовується простір імен URI як більш універсальний, оскі-
льки він гарантує унікальність доменного імені (у нашому випадку - w- ww.bostontechnical.com). Цей простір також указує область відповідальності організації (в даному випадку власника домена www.bostontechnical.com) за унікальність елементів домена в просторі імен /webservices.
218

8.4.2. Атрибут WebMethod
Атрибут WebMethod повідомляє середовище .NET, що деякий загаль-
ний метод повинен бути представлений як метод, що викликається через
Web. Для документування і зміни поведінки web-методу даний атрибут включає наступні шість властивостей:
Description - опис;
MessageName – ім’я повідомлення;
EnableSession – включений сеанс;
CacheDuration – довготривалість кешування;
TransactionOption – варіант угоди;
BufferResponse – відповідь буфера.
Перші 2 властивості − для документування web-методу, тоді як інші визначають його поведінку.
Властивості Description і MessageName.
Необхідно включати опис в кожен web-метод, щоб споживачі не з’ясовували як працює web-служба. Це необхідно, зокрема, коли web-служба містить перевантажені методи (методи, з одним і тим же ім'ям, але з різними сигнатурами). Наприклад, в наступному лістингу оголошуються два методи з ім'ям Add(), один з яких приймає параметри типа Integer, а інший − параме-
три типа Float.
Опис методу
[WebMethod]
public int Add(int а, int b)
{
return a+b:
}
[WebMethod]
public float Add(float а. float b)
{
219