
W26_WebServices_III_07_(157)_2011.ppt
- Количество слайдов: 157
Веб-служби. Сервісно-орієнтована архітектура 2006 -2011 Web Services
Зміст • Веб-служби (Web Services) та сервісно-орієнтована архітектура (СОА). • Стандарти веб-служб. • Документування веб-служб: – генерація документації для сприйняття людиною (з використанням веб-браузерів); – генерація документації, орієнтованої на використання програмами – wsdl-файли. • Розробка клієнтських програм для веб-служб. Утиліта Wsdl. exe. • Протокол SOAP. Конверт, заголовок SOAP-повідомлення • Стандарти XML, XML-Schema. Простори імен, монікери XML. • Розробка веб-служб. Директива @ Web. Service. • Тест-форми веб-служб. Утиліта. NET Web. Service Studio як універсальний клієнт. • Структура wsdl-файлів. • Оркестровка Web-сервісів. BPEL (BPEL 4 WS – Business Process Execution Language for Web Services). • Структура BPEL-програм. Секції декларацій та дій (activities). • Класифікація дій BPEL-програм. Візуальне проектування BPELпрограм. Web Services 2
Веб-служби (Web Services) та сервісно-орієнтована архітектура (СОА) Веб-служби (Web Services) – це технологія надання служб, до яких можна звертатися через Інтернет на базі загальноприйнятих стандартів. Важливо відзначити, що клієнтами веб-служб можуть бути будь-які програми, зокрема, не обов'язково пов'язані з веб-проектуванням (з орієнтацією на використання веб-браузерів). Технологія веб-служб є універсальною – не залежною ні від операційних систем, ні від мов програмування, ні від об'єктної моделі тощо. Веб-служби знаменують стратегію переходу від “жорсткої” системноорієнтованої архітектури до сервісно-орієнтованої архітектури (СОА). СОА ґрунтується на слабкій зв'язуваності – сервіси (“запаковані бізнес-процеси”) та, зокрема, веб-сервіси взаємодіють між собою шляхом обміну повідомленнями. Інтеграція сервісів отримала назву оркестрування (іноді виокремлюють ще й хореографію сервісів). Засоби оркестрування: BPEL 4 WS або просто BPEL (Business Process Execution Language for Web Services - мова виконання бізнес-процесів для веб-сервісів). Web Services 3
Веб-служби та розподілені системи • Веб-служби — це технологія, що забезпечує зв'язок та інтеграцію різного роду компонент (гетерогенну інтеграцію) на основі використання єдиних Інтернет-протоколів. • Веб-служби дозволяють створювати з використанням інтернетінтеграції розподілені системи, компоненти яких взаємодіють між собою шляхом стандартних інтерфейсів, що визначаються на основі XML. (Контракти — на основі XML). Web Services 4
Використання веб-служб: найбільш загальний вигляд. (Архітектура веб-служб) Три основні учасники: постачальник (сервісу), споживач та реєстр сервісів, як посередник. Постачальник публікує (реєструє) свої сервіси (у реєстрі), споживач звертається до реєстру із запитом щодо сервісу після чого під'єднується до останнього. Ще термін: брокерреєстратор 1 2 Останнім часом загально визнані реєстри практично не підтримуються. Акцент робиться на корпоративний рівень використання веб-сервісів. 3 Web Services 5
Стандарти веб-служб Основу технології веб-служб складають наступні стандарти: • транспортні Інтернет-протоколи HTTP (SMTP, TCP, FTP, HTTPS); • протокол SOAP (Simple Object Access Protocol) для повідомлень, якими, зокрема, обмінюються між собою вебслужба та програма (клієнт веб-служби). SOAP ґрунтується на стандарті XML; • мова WSDL (Web Services Definition Language) – мова опису веб-служб (також ґрунтується на стандарті XML); • реєстр веб-служб UDDI (Universal Description, Discovery, and Integration – універсальні опис, виявлення та інтеграція веб-служб). Цей реєстр є власне веб-службою і, зокрема, використовує повідомлення SOAP. “Стек протоколів” веб -служб XML Web Services 6
Сервісно-орієнтована архітектура Web Services 7
Приклади (ASP. NET ) веб-служб Приклади (адреси) ASP. NET веб-служб: http: //terraservice. net/terraservice. asmx http: //www. webservicex. net/globalweather. asmx http: //localhost/WSCalc. asmx http: //www. cbr. ru/Daily. Info. Web. Serv/Daily. Info. asmx Адресами веб-служб виступають asmx-файли Web Services Веб-служба Центробанку Росії: 8 http: //www. cbr. ru/Daily. Info. Web. Serv/Daily. Info. asmx
http: //terraservice. net/terraservice. asmx Відзначимо… Однаковий “дизайн” веб-служб Web Services 9
http: //www. webservicex. net/globalweather. asmx Ще раз звертаємо увагу … Однаковий “дизайн” веб-служб Web Services 10
http: //localhost/WSCalc. asmx Різні браузери … Однаковий “дизайн” веб-служб Web Services 11
Документування веб-служб (1/4) • Документування веб-служб: – генерація документації для сприйняття людиною (з використанням веббраузера). Опис “для людини” – генерація документації, орієнтованої на використання програмою – wsdl-файли (formal definition). Опис “для машини” Web Services 12
Документування веб-служб (2/4) • Звернення до asmx-файлів перехоплюються та обробляються середовищем ASP. NET. • “Шаблоном” генерації документації (для сприйняття людиною з використанням веб-браузера) є файл Default. Wsdl. Help. Generator. aspx з CONFIG-підкаталогу Windows – …FrameworkversionCONFIG, наприклад, C: windowsMicrosoft. NETFrameworkv 4. 0. 30319CONFIG; Зауваження. Default. Wsdl. Help. Generator. aspx є стандартною сторінкою ASP. NET, і для генерування документації у вигляді вебсторінки використовується. NET рефлексія. Це забезпечує відповідність документації коду веб-служби. Web Services 13
Документування веб-служб (3/4) Опис “для людини” Опис “для програми” (wsdl-файл) — Service Description Web Services 14
Документування веб-служб (4/4) Service • review the Service Description Опис “для програми” — опис веб-служби у мові WSDL (wsdl-файл) Web Services 15
Документування операцій та тест-форми Опис операції Get. Curs. On. Date Web Services 16
WSCalc. asmx. Тест-форма вебслужби (MS Internet Explorer) Тест-форма веб-служби HTTP POST Web Services 17
WSCalc. asmx Тест-форма веб-служби SOAP 1. 1 request and response Web Services 18
SOAP 1. 1. Формат запиту (request) Протокол, версія URI “Оператор обробки” (PI, Processing Instruction) Web Services 19
SOAP 1. 1. Формат відповіді (response) Код статусу відповіді 400 - Bad Request; 404 - Not Found. Web Services 20
Веб-служби. Подальші приклади клієнтських програм та запитів Web Services 21
http: //www. webservicex. net/globalweather. asmx HTTP POST - запити тест-форми (1/3) http: //www. webservicex. net/globalweather. asmx? op=Get. Weather Тест-форма Web Services 22
http: //www. webservicex. net/globalweather. asmx HTTP POST - запити тест-форми (2/3) http: //www. webservicex. net/globalweather. asmx? op=Get. Weather Запит Web Services 23
http: //www. webservicex. net/globalweather. asmx HTTP POST - запити тест-форми (3/3) Відповідь Web Services 24
Клієнтський веб-проект (для служби Service 1. asmx) з використанням HTTP-POST - запиту (1/2) Файл HTMLPage. Post. htm <html> <head> <title>HTTP-POST Example</title> </head> <body> <form method="post" action="http: //localhost: 1125/Service 1. asmx/Add"> <p><input type="text" name="a"></p> <p><input type="text" name="b"></p> <p><input type="submit" value="Call Add Web Service"> </p> </form> </body> </html> Відкриття файлу HTMLPage. Post. htm, у браузері Web Services 25
Клієнтський веб-проект (для служби Service 1. asmx) з використанням HTTP-POST - запиту (2/2) Web Services Тест-форма єдиної у службі Service 1. asmx функції Add ) 26
Клієнтський веб-проект (для служби Service 1. asmx) з використанням HTTP-GET - запиту (1/2) Файл HTMLPage 1. htm <html> <head> <title>HTTP-GET Example</title> </head> <body> <a href="http: //localhost: 1125/ Service 1. asmx/Add? a=222&b=333"> http: //localhost: 1125/Service 1. asmx/Add? a=222&b=333 </a> </body> </html> Відкриття файлу HTMLPage 1. htm у браузері Web Services 27
Клієнтський веб-проект (для служби Service 1. asmx) з використанням HTTP-GET - запиту (2/2) <? xml version="1. 0"? > <configuration> <system. web> <web. Services> Необхідно додати <protocols> <add name="Http. Get"/> <add name="Http. Post"/> </protocols> </web. Services> </system. web> Web Services 28 </configuration> Файл Web. config
Windows Form клієнт Приклад виконання клієнтської Windows Form програми для веб-служби ЦБР Web Services 29
Web. Service Studio – універсальний клієнт від Microsoft. Request/Response Web Services 30
Ще приклад використання Web. Service Studio (1/5) http: //www. cbr. ru/Daily. Info. Web. Serv/Daily. Info. asmx Web Services 31
Ще приклад використання Web. Service Studio (2/5) Операція Get. Curs. On. Date та її параметри Web Services 32
Ще приклад використання Web. Service Studio (3/5) Запуск метода Get. Curs. On. Date на виконання Web Services 33
Ще приклад використання Web. Service Studio (4/5) Результат виконання метода Get. Curs. On. Date Web Services 34
Ще приклад використання Web. Service Studio (5/5) Результат виконання метода Get. Curs. On. Date. Таблиця Valute. Date (Тип System. Data. Set) Web Services 35
Eclipse. Web Services Explorer (1/3) Web Services 36
Eclipse. Web Services Explorer (2/3) Web Services 37
Eclipse. Web Services Explorer (3/3) Web Services 38
Розробка веб-служб Web Services 39
Хоч у блокноті! (Служба WSCalc. asmx) Web Services 40
До розгортання веб-служб. MS Internet Information Services (IIS). • Для останніх версій MS Visual Studio розробляти веб-служби та одразу їх тестувати можна безпосередньо у Visual Studio (завдяки так званому проекту Indigo). • Веб-служба WSCalc у віртуальному каталозі wwwroot (c: Inetpubwwwroot є віртуальним каталогом за замовчуванням для IIS ) Web Services 41
Service 1. asmx (файл, отриманий з шаблону MS Visual Studio) Web Services 42
Приклад запуску служби (Service 1. asmx) в середовищі MS Visual Studio 2010 Service 1. asmx ПКМ “Просмотр в обозревателе” Web Services 43
Директива @ Web. Service (в asmx-файлах) Деякі можливі атрибути: Class – визначає клас, що реалізує веб-службу. Клас може бути в окремому файлі, але тільки у підкаталозі Bin. Необхідний для компіляції веб-служби. Code. Behind – визначає файл з кодом веб-служби (наприклад, у C#). Його можна окремо тестувати, а asmx-файл у такому випадку міститиме тільки директиву Web. Service. Наприклад, можуть використовуватись два файли: ws. asmx та ws. asmx. cs. Language – визначає. NET-мову, використану для реалізації вебслужби у даному asmx-файлі. За замовчуванням – VB. Web Services 44
Дослідження веб-служб… Пригадаємо class Server. Object використовувався при дослідженні. Net Remoting, зокрема, різних варіантів активізації віддалених об'єктів Web Services 45
Дослідження веб-служб. Web. Serv. Test. asmx Web Services 46
Тестування веб-сервісу Web. Service. Test Web Services 47
Результат тестування Висновок: ”Single. Call” Web Services 48
Web. Serv. Test 2. asmx (використання Codebehind) Web. Serv. Test 2. asmx. cs Web Services 49
Веб-служби (WSCalc, Web. Serv. Test 2) у віртуальному каталозі Inetpubwwwroot (віртуальному каталозі за замовчуванням) IIS csc. exe /t: library Web. Serv. Test 2. asmx. cs Результат компіляції (dll-файл) необхідно розмістити у підкаталозі /bin відповідного віртуального каталогу Web Services 50
До розробки веб-служб у MS Visual Studio 2010 (1/3) Web Services 51
До розробки веб-служб у MS Visual Studio 2010 (2/3) Web Services 52
До розробки веб-служб у MS Visual Studio 2010 (3/3). Вигляд шаблонного проекту (ASP NET Web Service Application) для. NET Framework 3. 5 using using System; System. Collections. Generic; System. Linq; System. Web. Services; Зауваження. У MS VS 2010 для. NET Framework 4. 0 такий шаблон проектів відсутній namespace Web. Service_2010_Add { /// <summary> /// Summary description for Service 1 /// </summary> [Web. Service(Namespace = "http: //tempuri. org/")] [Web. Service. Binding(Conforms. To = Wsi. Profiles. Basic. Profile 1_1)] [System. Component. Model. Toolbox. Item(false)] // To allow this Web Service to be called from script, using // ASP. NET AJAX, uncomment the following line. // [System. Web. Script. Services. Script. Service] public class Service 1 : System. Web. Services. Web. Service { [Web. Method] public int Add(int a, int b) { return a+b; } } Web Services 53 }
Створення проекту із веб-службою (1/4). (Серверний проект у Visual Studio 2008) 1. Увести Web Services 2. Натиснути 54
Створення проекту із веб-службою у VS 2008 (2/4). Фрагмент Service 1. asmx. cs namespace Hello_Web. Service Модуль, що генерується майстром { /// <summary> /// Summary description for Service 1 /// </summary> [Web. Service(Namespace = "http: //tempuri. org/")] [Web. Service. Binding(Conforms. To = Wsi. Profiles. Basic. Profile 1_1)] [Toolbox. Item(false)] // To allow this Web Service to be called from script, using ASP. NET AJAX, uncomment the following line. // [System. Web. Script. Services. Script. Service] } public class Service 1 : System. Web. Services. Web. Service { [Web. Method] public string Hello. World() { Метод (Hello) тепер із return "Hello World"; параметром } } Здійснюється заміна! [Web. Method] public string Hello(string name) { Web Services 55 return "Привіт, "+name+"!"; }
Створення проекту з веб-службою у VS 2008 (3/4). Запуск служби (на основі “Indigo”). Service 1. asmx ПКМ “Просмотр в обозревателе” Можна натискати! Web Services 56
Створення проекту з веб-службою у VS 2008 (4/4). Тест-форма. Запуск на виконання функції Hello Уведемо “Україна” та натиснемо “Запуск” 2. Натиснути Отримаємо Web Services 57
Веб-служби. Розробка клієнтських програм Web Services 58
Веб-служби (Web Services). Розробка клієнтських проектів із використанням Framework SDK Основні кроки: 1. Отримати клас проксі для веб-служби, використовуючи утиліту Wsdl (із. Net Framework SDK). 2. У клієнтському проекті можна традиційним чином створювати екземпляр (об'єкт) проксі-класу та використовувати потрібні виклики методів. 3. Відкомпілювати та скомпонувати програмний проект. Web Services 59
Веб-служби. Розробка клієнтських проектів із використанням Framework SDK. Приклад “Адреса” веб-служби 1. Wsdl http: //. . . /WSCalc. asmx? WSDL Не обов'язково! “Ім'я” веб-служби Якщо “Calculator Web Service” є іменем веб-служби, то буде згенеровано файл Calculator. Web. Service. cs із визначеним проксікласом Calculator. Web. Service (символи прогалин з імені служби вилучаються). 2. Calculator. Web. Service ws = new Calculator. Web. Service(); . . . s = ws. add(111, 222); Фрагменти клієнтського проекту Proj 1. cs 3. a. csc /t: library /r: System. Web. dll, System. XML. dll, System. Web. Services. dll Calculator. Web. Service. cs b. csc /t: exe /r: Calculator. Web. Service. dll Proj 1. cs Web Services 60
Застосування Wsdl. exe до WSCalc. asmx (1/2) Wsdl. exe http: //localhost/WSCalc. asmx Результат: Calculator. Web. Service. cs Web Services 61
Застосування Wsdl. exe до WSCalc. asmx (2/2) Методи для синхронних та асинхронних викликів Web Services 62
Інструментарій (утиліта) Wsdl. exe Необхідним параметром є URL-адреса веб-служби (для служб XML, створюваних за допомогою ASP. NET, можна до адреси додавати ? WSDL) або шлях до опису служби (wsdl-файлу). Деякі можливі ключі для Wsdl. exe : /l[anguage]: … Мова, в якій генерується клас проксі (доступні варіанти: C#, VB, JS). За замовчуванням – C#. /n[amespace]: … Простір імен для створюваного класу проксі. /o[ut]: … Ім'я створюваного файлу з класом проксі. За замовчуванням визначається за іменем веб-служби. /p[rotocol] : … Протокол зв'язування з методами веб-служби XML (доступні варіанти: SOAP, Http. Get, Http. Post. За замовчуванням – SOAP. Web Services 63
Інструментарій Wsdl. exe. Ще приклад використання Wsdl. exe http: //www. cbr. ru/Daily. Info. Web. Serv/Daily. Info. asmx Web Services 64
Daily. Info. сs (фрагмент) Web Services 65
Daily. Info. сs (фрагмент). (Get. Curs. On. Date: Методи для синхронних та асинхронних викликів) Web Services 66
Приклад клієнтської програми для веб-служби ЦБР Фрагмент коду обробки натискання кнопки «Connect. To. Server» (фрагмент обробника button 1_Click) Web Services 67
Проксі у Web. Service Studio http: //www. cbr. ru/Daily. Info. Web. Serv/Daily. Info. asmx Web Services 68
Web. Service Studio. Proxy Web Services (1/2) 69
Web. Service Studio. Proxy Web Services (2/2) 70
Web. Service Studio. Client. Code (1/2) Web Services 71
Web. Service Studio. Client. Code (2/2) Web Services 72
Веб-служби (Web Services). Розробка клієнтських програм у MS Visual Studio 2003 (1/2) 1. Вибір проектного шаблону. 2. (Меню) Project => Add. Web. Reference. 1. Вибір проектного шаблону Принагідно відзначимо наявність майстра розробки веб-служб (із “закоментованою” функціональністю на зразок Hello World) Web Services 73
Веб-служби (Web Services). Розробка клієнтських програм у MS Visual Studio 2003 (2/2) 1. Вибір проектного шаблону. 2. (Меню) Project => Add. Web. Reference. Web Services 74
Створення клієнтського веб-проекта у Visual Studio 2008 (1/6) 1. Увести Принагідно відзначимо наявність майстра розробки веб-служб 2. Натиснути Web Services 75
Створення клієнтського веб-проекта у VS 2008 (2/6). Додавання веб-посилання (1/3) Класичний прийом для веб-служб Поточний проект ПКМ “Добавить веб-ссылку” Натиснути Web Services 76
Створення клієнтського веб-проекта у VS 2008 (3/6). Додавання веб-посилання (2/3) Натиснути Web Services 77
Створення клієнтського веб-проекта у VS 2008 (4/6). Додавання веб-посилання (3/3) 1. Увести 2. Натиснути Web Services 78
Створення клієнтського веб-проекта у VS 2008 (5/6). Складові частини проекта. Файл Default. aspx <%@ Page Language="C#" Auto. Event. Wireup="true" Code. Behind="Default. aspx. cs" Inherits="Hello. Web. Application. _Default" %> <!DOCTYPE html PUBLIC "-//W 3 C//DTD XHTML 1. 0 Transitional//EN" "http: //www. w 3. org/TR/xhtml 1/DTD/xhtml 1 -transitional. dtd"> <html xmlns="http: //www. w 3. org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form 1" runat="server"> <div> <asp: Label ID="Label 1" runat="server" Text="Label"> </asp: Label> Додано </div> </form> </body> </html> Web Services 79
Створення клієнтського веб-проекта у VS 2008 (6/6). Фрагмент Default. aspx. cs. Запуск проекта Поточний проект ПКМ “Debug” . . . namespace Web. Application { public partial class _Default : System. Web. UI. Page { protected void Page_Load(object sender, Event. Args e) { Hello. Ref. Service 1 proxy = new Hello. Ref. Service 1(); Label 1. Text = proxy. Hello("Web. Application"); } Додано } } Web Services 80
Особливості розробки клієнтських проектів для веб-служби у Microsoft Visual Studio 2010 Web Services 81
Особливості розробки клієнтських проектів для вебслужби у Microsoft Visual Studio 2010 (1/2) “Add Web Reference” - немає !? Основне меню Меню, яке виникає при натисканні ПКМ Можна обирати! Web Services 82
Особливості розробки клієнтських проектів для вебслужби у Microsoft Visual Studio 2010 (2/2) “Add Service Reference” ! Web ” “Add Web Reference. Services 83
”Добавить ссылку на службу” (російськомовна версія MS Visual Studio) Web Services 84
XML, SOAP etc Web Services 85
XML- документи. XML- схеми XML- документи: • “правильно сформовані” стосовно стандарту XML: – єдиний кореневий елемент; – кожний не порожній елемент має закриваючий тег ( порожній елемент не містить інших елементів, наприклад, <student name=Bob/> name тут є атрибутом); – елементи частково не перекриваються. • “достовірні” стосовно визначеної структури: – на основі схеми документів (XML-схема, XML-Schema). XML-схема, в свою чергу, має бути правильно сформована. Відношення між достовірним документом та його схемою можна розглядати як відношення між значенням (екземпляром) та його типом (типом значень). Наприклад, ядро SOAP-повідомлень має відповідати схемі “конверту” (Envelope). – DTD (Document Type Definition) Web Services 86
Простори імен, монікери Два ключових простори імен (namespace) у XML зі «стандартними» монікерами: xmlns: xsd = "http: //www. w 3. org/2001/XMLSchema" (визначаються схеми: element, schema тощо); xmlns: xsi = "http: //www. w 3. org/2001/XMLSchema-instance" (визначаються документи схем: schema. Location тощо). У специфікації SOAP використовується простір імен xmlns: soap = "http: //schemas. xmlsoap. org/soap/envelope/" Web Services 87
XML-схеми та XML- документи. Приклад <? xml version="1. 0"? > <schema xmlns="http: //www. w 3. org/2001/XMLSchema" xmlns: xsd ="http: //www. w 3. org/2001/XMLSchema" target. Namespaсe="urn: Anydata"> <element name = "length" type="double"/> </schema> Атрибут посилання на простір імен за замовчуванням <? xml version="1. 0"? > <length xmlns="urn: Anydata">12. 34 </length> (target. Namespase визначає цільовий простір імен, тобто простір імен поточної схеми). Web Services 88
SOAP На початку свого існування SOAP розшифровувався як Simple Object Access Protocol (протокол доступу простих об'єктів). Акцент – на об'єкти. Згодом акцент був перенесений на узагальнений обмін повідомленнями у розподіленому середовищі, можливо гетерогенному, не залежно від моделі програмування. Основою є XML. Популярна назва залишилась, проте SOAP вже не є акронімом. SOAP-повідомлення визначаються з урахуванням вимог: – ядром SOAP-повідомлення є XML-документ, який відповідає схемі так званого “конверта” ( Envelope ); – додатково (до документа-”конверта” у XML) використовується заголовок транспортного протоколу – “зв'язування протоколу” (protocol binding). За специфікацією SOAP-повідомлення пов'язуються з протоколом HTTP, зокрема, запити пов'язуються з методом POST, але можливі й інші варіанти зв'язування та транспортні протоколи. Web Services 89
SOAP. Envelope Web Services 90
Envelope, URI, schema. Location (URL) URI, а не URL! tns - this name spase Web Services 91
WSDL (на прикладі WSCalc. asmx) Кореневий XML-елемент definitions. Визначаються простори імен, уводяться монікери. Цільовий простір імен (простір імен для цього документа). Web Services 92
Net. Beans IDE 6. 0 M 10. WSCalc. wsdl Web Services 93
WSDL (на прикладі WSCalc. asmx). Розділ типів (XML-елемент types ) Визначаються типи, що використовуються у повідомленнях, якими можуть обмінюватись споживач та постачальник Web Services 94 сервісу.
Розділ типів (фрагмент ) <s: element name="Add"> “Тип запиту” (для двох <s: complex. Type> цілочислових параметрів) <s: sequence> <s: element min. Occurs="1" max. Occurs="1" name="a" type="s: int" /> <s: element min. Occurs="1" max. Occurs="1" name="b" type="s: int" /> </s: sequence> </s: complex. Type> </s: element> <s: element name="Add. Response"> “Тип результату” (для <s: complex. Type> одного цілочислового <s: sequence> даного) <s: element min. Occurs="1" max. Occurs="1" name="Add. Result" type="s: int" /> </s: sequence> </s: complex. Type> </s: element> Web Services 95
Net. Beans IDE 6. 0 M 10. WSCalc. wsdl. Розділ типів Web Services 96
WSDL (на прикладі WSCalc. asmx). Розділ повідомлень (XML-елемент message) «тип» У розділі містяться абстрактні визначення повідомлень: задається ім'я та структура (тип) кожного повідомлення. Web Services 97 (NB! Типи визначені у попередньому розділі).
Розділ повідомлень (фрагмент ) <wsdl: message name="Add. Soap. In"> <wsdl: part name="parameters" element="tns: Add" /> </wsdl: message> <wsdl: message name="Add. Soap. Out"> <wsdl: part name="parameters" element="tns: Add. Response" /> </wsdl: message> “Типи” (з розділу типів) Web Services 98
Net. Beans IDE 6. 0 M 10. WSCalc. wsdl. Розділ повідомлень Web Services 99
WSDL (на прикладі WSCalc. asmx). Розділ “типи портів” (XML- елемент port. Type) У розділі містяться абстрактні визначення операцій: задається порядок застосування input-output повідомлень. (У WSDL 1. 1 специфіковано 4 категорії операцій: – request-response (з шаблоном in-outfault); – solicit-response (з шаблоном out-infault) – сервер надсилає запит, клієнт відповідає; – one-way (з шаблоном in) – клієнт надсилає повідомлення, відповідь не потребується; – notification (з шаблоном out) – клієнти оповіщуються сервером, відповідь не потребується. У WSDL 2. 0 специфіковано 9 категорій операцій. ) (NB! Повідомлення визначені у попередньому розділі). Web Services 100
Розділ “типи портів” (фрагмент ) <wsdl: port. Type name="Calculator_x 0020_Web_x 0020_Service. Soap"> <wsdl: operation name="Add"> Визначаються операції (wsdl: operation) <wsdl: documentation xmlns: wsdl="http: //schemas. xmlsoap. org/wsdl/"> Computes the sum of two integers </wsdl: documentation> <wsdl: input message="tns: Add. Soap. In" /> <wsdl: output message="tns: Add. Soap. Out" /> </wsdl: operation>. . . </wsdl: port. Type> Повідомлення з попереднього розділу Web Services 101
Net. Beans IDE 6. 0 M 10. WSCalc. wsdl. Розділ port. Type Web Services 102
WSDL (на прикладі WSCalc. asmx). Розділ зв'язування (XML- елемент binding) Визначається транспортний протокол (атрибут transport). Крім того, для кожної операції уточнюються: – простір імен та назва методу (атрибут SOAPAction ) (порівняйте із заголовком SOAPAction протоколу HTTP); – стиль (атрибут style) даних, що передаються (наприклад, “document”, “rpc”, “image/gif”); – спосіб обробки (атрибут use) повідомлення (“literal” – XMLструктура, “encoding” – серіалізація з особливим кодуванням, наприклад, base 64). (NB! Операції визначені у попередньому розділі). 103 Web Services
Розділ зв'язування (фрагмент ) <wsdl: binding name="Calculator_x 0020_Web_x 0020_Service. Soap" type="tns: Calculator_x 0020_Web_x 0020_Service. Soap"> <soap: binding transport="http: //schemas. xmlsoap. org/soap/http" /> Операція з <wsdl: operation name="Add"> попереднього розділу <soap: operation soap. Action="http: //tempuri. org/Add" style="document" /> <wsdl: input> “Заготівка” для <soap: body use="literal" /> http-заголовку </wsdl: input> <wsdl: output> <soap: body use="literal" /> </wsdl: output> </wsdl: operation>. . . </wsdl: binding> Web Services 104
Net. Beans IDE 6. 0 M 10. WSCalc. wsdl. Розділ binding Web Services 105
WSDL (на прикладі WSCalc. asmx). Розділ сервісу (XML- елемент service) Розділ сервісу (елемент service). Web Services 106 В елементі port міститься адреса веб-сервісу.
Розділ сервісу (фрагмент ) <wsdl: service name="Calculator_x 0020_Web_x 0020_Service"> <wsdl: documentation xmlns: wsdl="http: //schemas. xmlsoap. org/wsdl/"> Performs simple math over the Web </wsdl: documentation> <wsdl: port name="Calculator_x 0020_Web_x 0020_Service. Soap" binding="tns: Calculator_x 0020_Web_x 0020_Service. Soap"> <soap: address location="http: //localhost/WSCalc. asmx" /> </wsdl: port> <wsdl: port name="Calculator_x 0020_Web_x 0020_Service. Soap 12" binding= "tns: Calculator_x 0020_Web_x 0020_Service. Soap 12"> <soap 12: address location="http: //localhost/WSCalc. asmx" /> </wsdl: port> </wsdl: service> Web Services 107
Net. Beans IDE 6. 0 M 10. WSCalc. wsdl. Розділ service Web Services 108
До визначення сервісно-орієнтованої архітектури (СОА) СОА - це архітектура, орієнтована, загалом, на представлення бізнес -процесів, спираючись на “ізольовані” сервіси (“запаковані бізнеспроцеси”), які: – по-перше, можна використовувати багаторазово, до того ж створюючи з них (шляхом інтеграції) більш складні бізнессервіси; – по-друге, сервіси взаємодіють між собою шляхом обміну повідомленнями (слабка зв'язуваність). СОА не є абсолютно новим рішенням. Наприклад, технології CORBA і COM (DCOM) можна вважати реалізацією СОА. Найбільші досягнення концепції СОА пов'язані з технологією Webсервісов. Серед основних причин успіху технології Web-сервісів важливу роль відіграє використання загальноприйнятих стандартів, які, по-перше, забезпечують незалежність від операційних систем, мов програмування, об'єктної моделі, та, по-друге, дозволяють використовувати Інтернет-рішення. Web Services 109
До визначення сервісно-орієнтованої архітектури (СОА) Web Services 110
До визначення сервісно-орієнтованої архітектури (СОА) Web Services 111
BPEL • BPEL заснований на XML. • У BPEL інтегровано ідеї – XLANG – мови бізнес-процесів на базі XML від Microsoft (використана Microsoft Biz. Talk Server для керування Webсервісами) та – WSFL –мови потоків даних Web-сервисів (Web Services Flow Language) від IBM. • Фактична стандартизація через OASIS (Organization for the Advancement of Structured Information Standards – організація по удосконаленню стандартів структурованої інформації). • Підтримка: Microsoft, IBM, BEA, Sun, Oracle. У тому числі реалізаціями. • Перетворення UML-моделей у BPEL- та WSDL-файли. (Приклад інструментарію – IBM Emerging Technologies Toolkit 1. 1). • До характеристики BPEL: – – BPEL визначає поведінку бізнес-процесів, що базуються на Web-сервісах. BPEL є стандартом для інтеграції гетерогенних додатків і сервісів у транзакційні бізнес-процеси. Web Services 112
BPEL. Definition BPEL (Business Process Execution Language) for Web services is an XMLbased language designed to enable task-sharing for a distributed computing or grid computing environment - even across multiple organizations - using a combination of Web services. Written by developers from BEA Systems, IBM, and Microsoft, BPEL combines and replaces IBM's Web. Services Flow Language (WSFL) and Microsoft's XLANG specification. (BPEL is also sometimes identified as BPELWS or BPEL 4 WS. ) Web Services 113
Оркестровка та хореографія Web-сервісів Дві моделі компонування Web-сервісів: – оркестровка (orchestration) і – хореографія (choreography). Основна різниця між ними визначається областю компонування Web-сервісів: – в оркестрованих Web-сервісах враховується потік управління з погляду одного учасника; – хореографією підкреслюється співробітництво всіх учасників, у цьому випадку охоплюються області всіх учасників, зокрема охоплюється їх взаємодії з глобальної точки зору. BPEL призначений для оркестровки Web-сервісів на основі деякого бізнес-процеса. Web Services 114
Оркестровка Web-сервісів • При оркестровці центральний процес (яким може бути, інший Webсервіс) бере під своє управління і координує виконання дій Webсервісами, що беруть участь в даній операції. • Web-сервіси, що використовуються, "не знають" (і не повинні знати), що вони залучені до складу якогось процесу і що вони задіяні в бізнеспроцесі високого рівня. Тільки центральний координатор оркестровки в курсі цієї мети – оркестровка є централізованим механізмом з явним визначенням операцій і порядком ініціації роботи Web-сервісів. • Оркестровка зазвичай використовується в конфіденційних ( private) бізнес-процесах Web Services 115
Хореографія Web-сервісів • При хореографії немає центрального координатора: кожен Webсервіс, задіяний в хореографії точно знає, коли виконати операції і з ким взаємодіяти. • Хореографія є сумісною дією, сфокусованою на обміні повідомленнями у відкритих (public) бізнес-процесах. Всі учасники хореографії повинні знати бізнес-процес, операції, які мають виконувати, повідомлення, якими потрібно обмінюватись, та синхронізувати такі обміни. Web Services 116
Структура BPEL-програм. Декларації BPEL-процес складається з двох секцій: секції декларацій і секції дій. Декларації: – <partner. Links> – визначають Web-сервіси, що використовуються у BPEL-програмі; – <variables> – по суті визначається стан (BPEL-програму часто розглядають як Web-сервіс, що має пам'ять); – <fault. Handlers> – обробники помилок (global error handlers), ; – <compensation. Handlers> – обробники невдач транзакцій (global transaction failure handlers); Web Services 117
Структура BPEL-програм. Дії (activities) Секція дій відображає логіку процесу. Класифікація дій: · Примітивні дії процесів і даних (primitive process and data activities): - для роботи з Web-сервісами: <invoke>, <receive>, <reply>; - для маніпулювання даними (зокрема, підготовки даних для передачі Web-сервісу) – <assign> (складається з операцій копіювання); - для керування процесом: <wait>, <exit> тощо. · Структуровані дії: <flow> (паралельне виконання), <sequence>, <while>, <if>, <pick> тощо. Web Services 118
BPEL. Net. Beans IDE 6. 0 M 10 Web Services 119
BPEL. Net. Beans IDE 6. 0 M 10. Візуальне проектування Web Services 120
BPEL. Net. Beans IDE 6. 0 M 10. Візуальне проектування Web Services 121
BPEL. Net. Beans IDE 6. 0 M 10. Змінні Web Services 122
BPEL. Net. Beans IDE 6. 0 M 10. target. Namespace="tres" Web Services 123
BPEL. Net. Beans IDE 6. 0 M 10. Assign Web Services 124
BPEL. Net. Beans IDE 6. 0 M 10. Itinerary. In Web Services 125
Додаток 1 Web Services 126
Створення служб ASMX та доступ до них. Приклад Web Services 127
Створення (серверного) проекту із веб-службою Web Services 128
Створення (серверного) проекту із веб-службою (1/4) 1. Увести Web Services 2. Натиснути 129
Створення (серверного) проекту із веб-службою (2/4) Фрагмент Service 1. asmx. cs namespace Hello_Web. Service Модуль, що генерується майстром { /// <summary> /// Summary description for Service 1 /// </summary> [Web. Service(Namespace = "http: //tempuri. org/")] [Web. Service. Binding(Conforms. To = Wsi. Profiles. Basic. Profile 1_1)] [Toolbox. Item(false)] // To allow this Web Service to be called from script, using ASP. NET AJAX, uncomment the following line. // [System. Web. Script. Services. Script. Service] } public class Service 1 : System. Web. Services. Web. Service { [Web. Method] public string Hello. World() { Метод (Hello) тепер із return "Hello World"; параметром } } Здійснюється заміна! [Web. Method] public string Hello(string name) { Web Services 130 return "Привіт, "+name+"!"; }
Створення (серверного) проекту із веб-службою (3/4) Запуск служби (на основі “Indigo”) Service 1. asmx ПКМ “Просмотр в обозревателе” Можна натискати! Web Services 131
Створення (серверного) проекту із веб-службою (4/4) Тест-форма. Запуск на виконання функції Hello [Web. Method] public string Hello(string name) { return "Привіт, "+name+"!"; } Уведемо “Україна” та натиснемо “Запуск” 2. Натиснути Отримаємо Web Services 132
Створення клієнтського веб-проекту Web Services 133
Створення клієнтського веб-проекту (1/6) 1. Увести 2. Натиснути Web Services 134
Створення клієнтського веб-проекта (1/6) Додавання веб-посилання (1/3) Класичний прийом для веб-служб Поточний проект ПКМ “Добавить веб-ссылку. . . ” Натиснути Web Services 135
Створення клієнтського веб-проекту (3/6) Додавання веб-посилання (2/3) Натиснути Web Services 136
Створення клієнтського веб-проекту (4/6) Додавання веб-посилання (3/3) 1. Увести 2. Натиснути Web Services 137
Створення клієнтського веб-проекту (5/6) Складові частини проекту. Файл Default. aspx <%@ Page Language="C#" Auto. Event. Wireup="true" Code. Behind="Default. aspx. cs" Inherits="Hello. Web. Application. _Default" %> <!DOCTYPE html PUBLIC "-//W 3 C//DTD XHTML 1. 0 Transitional//EN" "http: //www. w 3. org/TR/xhtml 1/DTD/xhtml 1 -transitional. dtd"> <html xmlns="http: //www. w 3. org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form 1" runat="server"> <div> <asp: Label ID="Label 1" runat="server" Text="Label"> </asp: Label> Доданий код </div> </form> </body> </html> Web Services 138
Створення клієнтського веб-проекту (6/6) Фрагмент Default. aspx. cs. Запуск проекта Поточний проект ПКМ “Debug” . . . namespace Web. Application { public partial class _Default : System. Web. UI. Page { protected void Page_Load(object sender, Event. Args e) { Hello. Ref. Service 1 proxy = new Hello. Ref. Service 1(); Label 1. Text = proxy. Hello("Web. Application"); } Додано } } [Web. Method] public string Hello(string name) { return "Привіт, "+name+"!"; } Web Services 139
Створення клієнтського Windows. Form-проекту у MS Visual Studio 2010 (. Net Framework 4. 0) Web Services 140
Пригадаємо… Особливості розробки клієнтських проектів для веб-служби у MS Visual Studio 2010 (1/2) “Add Web Reference” - немає !? Основне меню Меню, яке виникає при натисканні ПКМ Можна обирати! Web Services 141
Пригадаємо… Особливості розробки клієнтських проектів для веб-служби у MS Visual Studio 2010 (2/2) “Add Service Reference” ! Web ” “Add Web Reference. Services 142
Пригадаємо… ”Добавить ссылку на службу” (російськомовна версія MS Visual Studio) Web Services 143
Windows. Form клієнт. Додавання посилання на службу (1/2) Натиснути Web Services 144
Windows. Form клієнт. Додавання посилання на службу (1/2) Натиснути Web Services 145
Windows. Form клієнт. Додавання посилання на службу (1/2) Натиснути Web Services 146
Windows. Form клієнт. Додавання посилання на службу (1/2) Натиснути Web Services 147
Windows. Form клієнт. Додавання посилання на службу (1/2) 1. Увести 2. Натиснути Web Services 148
Windows. Form клієнт. Фрагмент Form 1. cs. Запуск проекту namespace Windows. Forms. Application. WS { public partial class Form 1 : Form { public Form 1() { Initialize. Component(); } private void button 1_Click(object sender, Event. Args e) { Hello. Ref. Service 1 proxy = new Hello. Ref. Service 1(); label 1. Text = proxy. Hello("WS"); } } } [Web. Method] public string Hello(string name) { return "Привіт, "+name+"!"; } Web Services 149
Додаток 2 Web Services 150
http: //terraservice. net Web Services 151
http: //terraservice. net B-52 Web Services 152
http: //terraservice. net Стелс Web Services 153
http: //terraservice. net Алькатрас Web Services 154
Ліцензії Web Services 155
Адреси веб-служб (локальних) для демонстрації http: //localhost/Web. Serv. Test. asmx http: //localhost/Web. Serv. Test 2. asmx http: //localhost/WSCalc. asmx Web Services 156
xmlns • • xsi - "http: //www. w 3. org/2001/XMLSchema-instance" xsd - "http: //www. w 3. org/2001/XMLSchema" wsdl - "http: //schemas. xmlsoap. org/wsdl/" vprop - "http: //docs. oasis-open. org/wsbpel/2. 0/varprop" sref - "http: //docs. oasis-open. org/wsbpel/2. 0/serviceref" plnk – "http: //docs. oasis-open. org/wsbpel/2. 0/plnktype" bpel – "http: //docs. oasis-open. org/wsbpel/2. 0/process/executable" abstract – "http: //docs. oasis-open. org/wsbpel/2. 0/process/abstract" Web Services 157
W26_WebServices_III_07_(157)_2011.ppt