Статьи
НОУ ІНТУЇТ | лекція | Поліпшення роботи програми фірми ITSO Electronics за допомогою Web-сервісів
- 3.1 Сервіс-орієнтована архітектура та Web-сервіси
- 3.2 Web-сервіси та WSDL
- 3.2.1 Документ WSDL
- 3.2.2 Простий протокол доступу до об'єктів (SOAP)
- 3.2.3 Імпортований WSDL
- 3.3 Комерційні передумови використання Web-сервісів
- 3.4 Додавання Web-сервісів до додатка ITSO Electronics
- 3.4.1 Комерційні передумови додавання Web-сервісів до додатка ITSO Electronics
- 3.4.2 Користувальницькі вимоги
- 3.5 Створення простого Web-сервісу в Lotus Domino Designer 7
- 3.5.1 Створення нового Web-сервісу
- 3.5.2 Перегляд Web-сервісу через браузер
Анотація: Лекція присвячена питанням створення і використання Web-сервісів в Lotus Domino 7 на прикладі ITSO Electronics
З появою підтримки Web-сервіси Lotus Domino Designer 7 продовжує традицію підтримки нових стандартів для розширення можливостей його моделі швидкої розробки додатків. Web-сервіси дозволяють перетворити додатки Lotus Domino в Web-сервіси, що базуються на сервері Lotus Domino, таким чином збільшуючи можливість доступу до даних і забезпечуючи звернення до додатків через безліч різних платформ. Завдяки тому, що всі вони побудовані на основі відкритих стандартів, Web-сервіси - автономні, модульні додатки, здатні працювати один з одним, без необхідності покладатися на з'єднання, запрограмовані користувачем. Так як Web-сервіси дозволяють різним програмам і інформаційним системам взаємодіяти один з одним, серверні компоненти можуть бути скомбіновані і рекомбінувати на льоту, що дозволяє компаніям швидко реагувати на постійно мінливі потреби бізнесу і клієнтів.
У цій лекції ми проаналізуємо, як поліпшується додаток ITSO Electronics завдяки використанню Web-сервіси. Для цього розглянемо наступні теми:
- cервис-орієнтована архітектура: як Web-сервіси узгоджуються з SOA (Server-Oriented Architecture);
- Web-сервіси та мову опису Web-сервісів (Web Services Description Language, WDSL);
- комерційні передумови використання Web-сервісів;
- елемент Web-сервісу: додавання простих і комплексних елементів Web-сервісу до додатка ITSO Electronics;
- експорт і імпорт WSDL-документа;
- обробка помилок і виключень в Web-сервісах;
- безпеку Web-сервісів;
- використання Web-сервісів на мовах програмування Java і LS2J / Lotus-Script.
3.1 Сервіс-орієнтована архітектура та Web-сервіси
Сервіс-орієнтована архітектура (SOA) є компонентної моделлю, що дозволяє взаємодіяти один з одним різних функціональних модулях програми, званим сервісами, через строго певний інтерфейс (well-defined interface) і набір умов між цими сервісами. Інтерфейс визначено незалежним способом, т. Е. Він повинен бути незалежний від апаратної платформи, операційної системи і мови програмування, на якому цей сервіс реалізований. Таким чином, стає можливим взаємодія один з одним сервісів, побудованих на різних системах уніфікованим і універсальним способом. Так як Web-сервіси характеризуються незалежним від платформи підходом до розробки програми, вони є невід'ємним компонентом архітектури SOA-додатків.
Ця особливість, яка полягає в незалежному описі інтерфейсу, який не строго прив'язаний до конкретної реалізації, відома як слабкий зв'язок (loose coupling) між сервісами. Перевага системи зі слабким зв'язком полягає в її гнучкості та здатності зберігати працездатність після еволюційних змін в структурі і реалізації функцій кожного сервісу і всієї програми в цілому. Проте, тісно пов'язані системи припускають, що інтерфейси між різними компонентами програми тісно пов'язані між собою, що робить їх більш крихкими, коли необхідно провести зміни частин або всього програми.
Необхідність в системах зі слабким зв'язком зростає через те, що з кожним днем зростає потреба в більш гнучких бізнес-додатках, яка, в свою чергу, грунтується на тому, що бізнес повинен адаптуватися до мінливості зовнішнього середовища, наприклад до постійно мінливих принципам стратегії , стійкості комерційного становища, бізнес-цілям, партнерству, станом промисловості, а також інших факторів, пов'язаних з бізнесом, які впливають на природу бізнесу. При бажанні ви можете звернутися до бізнесу, швидко реагує на зміни навколишнього середовища, т. Е. До бізнесу на вимогу (On Demand Business), який змінюється в залежності від того, як реалізуються цілі.
Сервіс-орієнтована архітектура не тільки є нововведенням, а й являє собою альтернативну модель більш традиційним, жорстко пов'язаним (tightly coupled) об'єктно-орієнтованим моделям, що з'явилися в останні десятиліття. Тоді як системи, що базуються на SOA, не виключають того факту, що окремі сервіси самі можуть бути побудовані по об'єктно-орієнтованої схемою, схема всієї системи сервіс-орієнтована. Оскільки дане правило поширюється на об'єкти, що знаходяться в межах системи, SOA заснована на об'єктах, але в цілому не об'єктно-орієнтована. Різниця полягає в самих інтерфейсах. Класичним прикладом однієї з найперших SOA-систем є Common Object Request Broker Architecture (CORBA), що оперує принципами, схожими з SOA.
В даний час SOA використовує переваги мови XML (Extensible Markup Language). В результаті опису інтерфейсів на мовах, заснованих на XML, званих мовами опису Web-сервіси (Web Services Definition Language, WSDL)), Web-сервіси знайшли більш гнучкі і динамічні системні інтерфейси в порівнянні з розробленим раніше мовою опису інтерфейсу (Interface Definition Language, IDL), використаним в CORBA.
Крім Web-сервіси існують і інші способи реалізації SOA, такі як CORBA і межплатформенному системи, орієнтовані на інформаційний обмін, наприклад IBM WebSphere MQ. Однак для того щоб перетворити її в архітектурну модель, вам знадобиться не просто опис сервісу. Необхідно описати те, як все додаток буде здійснювати послідовність операцій між сервісами. Крім того, необхідно знайти підходяще для вашого бізнесу програмне забезпечення. Отже, SOA повинна бути пов'язана з комерційними бізнес-процесами подібно до того, як ITSO Electronics орієнтується на технічні процеси і відображає взаємозв'язок між технічною і комерційною стороною справи. Наприклад, плата постачальнику за послуги - бізнес-процес, в той час як оновлення бази даних ваших електронних компонентів з метою внесення нових компонентів - процес технічний. Таким чином, технологічний процес відіграє значну роль в схемі SOA.
3.2 Web-сервіси та WSDL
Web-сервіс являє собою програмну систему, призначену для підтримки взаємодії комп'ютерів через мережу. Інтерфейс Web-сервіси описаний в форматі, який комп'ютер здатний обробити (конкретно WSDL). Інші системи взаємодіють з Web-сервіси способами, передбаченими його описом, з використанням повідомлень SOAP, які звичайно передаються за допомогою HTTP з XML -Перетворення разом з іншими стандартами, пов'язаними з Web. Lotus Domino Designer 7 включає елемент дизайну "Web-сервіс", а також вбудовану підтримку мови опису Web-сервіси (WSDL). WSDL - це стандарт специфікації для опису сервісів, що працюють по мережі і заснованих на XML. Він забезпечує постачальників послуг простим способом опису основного формату запитів до систем незалежно від того, звідки будуть викликатися сервіси.
Обмеження в реалізації Web-сервіси в Lotus Domino 7 виражаються в наступному:
- На "рідному" рівні підтримуються тільки ті елементи, які надаються провайдером.
- Зв'язок повинна виконуватися по простому протоколу доступу до об'єктів (SOAP) за допомогою протоколів HTTP POST.
Елемент дизайну "Web-сервіс" характеризується наступними параметрами:
- Скомпільований Web-сервіс, подібно Web-агенту, являє собою окрему автономну програму в базі даних Lotus Domino. Для того щоб ним скористатися, необхідно включити Web-сервіс або отрепліціровать його на сервер, до якого є Web-доступ. До нього можна отримати доступ за допомогою однієї з наведених нижче URL-команд Lotus Domino:
- ? OpenWebService: використовуючи протокол HTTP POST, запускає Web-сервіс. Якщо використаний протокол HTTP GET, то команда? OpenWebService поверне деяку інформацію про цей сервіс.
- ? WSDL: запитує у Web-сервісу його WSDL-документ.
- Web-сервіс можна протестувати під час HTTP-сесії в режимі попереднього перегляду Lotus Notes або Lotus Domino Designer.
- Web-сервіс має ті ж можливості по забезпеченню безпеки, що і агент.
- Ви можете імпортувати існуючий WSDL-документ, щоб згенерувати каркас Web-сервісу. Каркасний код відповідає опису Web-сервісу. Потім ви додаєте виконавчий код.
- В якості альтернативи можна приступити до створення Web-сервісу з нуля, написавши власний код на мові Java або LotusScript, щоб створити опис Web-сервісу.
3.2.1 Документ WSDL
Документ WSDL визначає Web-сервіс і включає в себе такі варіанти:
- Сервіс (Service).
Web-сервіс в цілому. У документі WSDL сервіс описується елементом <definitions> в корені дерева. Дочірніми є елементи <types>, <message>, <port-Type "," binding>, <service>. У елемента <service> є атрибут "name", який використовується для того, щоб привласнити ім'я сервісу.
- Типи (Types).
Типи даних, які використовуються сервісом. У документі WSDL типи даних описуються за допомогою елемента <types>, що містить один або більше елементів <xsd: schema>. Для отримання додаткової інформації, що стосується опису типів даних, зверніться за адресою: http://www.w3.org/TR/xmlschema-2
- Повідомлення (Message).
Абстрактне опис даних, що передаються або приймаються сервісом. Припустимо будь-яку кількість повідомлень. У документі WSDL кожне повідомлення описується елементом <message>. Кожен елемент <message> містить один або більше елементів <part>, необхідних для опису даних по імені і типу.
- Тип порту (PortType).
Абстрактний набір операцій, які підтримуються сервісом. У документі WSDL тип порту описується елементом <portType>. Кожен елемент <portType> містить один або більше елементів <operation>.
- Операція (Operation).
Абстрактне опис дії, підтримуваного сервісом. У документі WSDL операція описується елементом <operation>. Кожен елемент <operation> містить елементи <input> і <output>, що визначають пов'язані повідомлення. Додаткові елементи <fault> також можуть бути визначені.
- Прив'язка (Binding).
Визначення протоколу та формату даних, призначених для типу порту. У документі WSDL прив'язка описується елементом <binding>. У елемента <binding> є атрибут "type", який визначає назву типу порту. Для кодування SOAP використовується елемент <binding>, що містить елемент <soap: binding> з атрибутами "style" ( "rpc" або "document") і "transport" ( " http://schemas.xmlsoap.org/soap/http "). Елемент <binding> містить елементи <operation>, що описують формат даних для кожної операції.
- Порт (Port).
Кінцева точка, певна у вигляді комбінації зв'язує і мережевого адрес. У документі WSDL порт описується елементом <port> під елементом <service>. У елемента <port> є атрибут "binding", необхідний для присвоєння імені зв'язування, і атрибут "address location", необхідний для присвоєння імені кінцевій точці мережі, пов'язаної з прив'язкою.
3.2.2 Простий протокол доступу до об'єктів (SOAP)
Елемент Web-сервісів Lotus Domino 7 забезпечує середовищем для хостингу, заснованої на простому протоколі доступу до об'єктів (SOAP) версії 1.1. SOAP визначає інформацію, що базується на XML і використовується для обміну структурованою і класифікованої інформацією між рівноправними учасниками мережі в децентралізованої, розподіленої середовищі. Повідомлення SOAP, по суті, являє собою односторонню передачу від відправника до одержувача SOAP, проте передбачається, що повідомлення SOAP комбінуються за допомогою додатків для застосування більш складних схем взаємодії.
З положення консорціуму Всесвітньої павутини (W3C):
"SOAP is a lightweight protocol for exchanging structured information in a decentralized distributed environment. It is an XML based protocol that consists of three parts: an envelope that defines a framework for describing what is in a message and how to process it, a set of encoding rules for expressing instances of application-defined data types, and a convention for representing remote procedure calls and responses1 ".
( "SOAP є полегшеним протокол, призначений для обміну структурованою інформацією в децентралізованої і розподіленої середовищі. Він заснований на протоколі XML, що складається з трьох частин: оболонки, яка визначає структуру для опису повідомлення та процесу його обробки, набору правил кодування, службовця для вираження примірників типів даних, визначених додатком, і правила, призначеного для подання віддалених процедурних запитів і відповідей ".)
3.2.3 Імпортований WSDL
У Lotus Domino Designer 7 розробник програми може імпортувати існуючий файл WSDL в додаток і Domino Designer, потім згенерувати класи на мові LotusScript або Java. Проте, розробники повинні мати на увазі, що не всі існуючі WSDL-файли можуть бути інтерпретовані Lotus Domino Designer 7. Деякі файли можуть бути відхилені, в залежності від використовуваних елементів XML.
3.3 Комерційні передумови використання Web-сервісів
Починаючи з Domino Release 5 з'явилася можливість створення програмного забезпечення поза сервера Lotus Domino і отримання доступу до даних Lotus Domino безпосередньо. Цього вдалося досягти за рахунок використання прив'язок COM і CORBA до внутрішніх класів. Проте, проблема перевірки достовірності та узгодженості даних, можливо, не було вирішено відповідним чином за допомогою зовнішніх програм. Web-сервіси надають хороший компроміс між прямим доступом до даних і можливістю виконання мережевих операцій. Вони надають спосіб розкриття функцій додатків і даних в мережі. Розробники додатків на мові Java, Microsoft. NET, а також багатьох інших можуть отримати доступ до даних Lotus Domino, просто використовуючи Web-сервіси.
Переваги застосування, в якому впроваджені Web-сервіси, найкраще продемонструвати на додатку ITSO Electronics, яке надає клієнтам актуальну інформацію про продукт. Наприклад, якщо додаток ITSO Electronics обіцяє користувачам доступ до інформації про продукти компанії ITSO Electronics, йому необхідно дозволити доступ зовнішніх додатків до бази даних покупців незалежно від програми, будь то Java, J2EE або. NET. У зв'язку з тим, що додаток покупця відправляє запит про отримання інформації Web-сервіси, воно не повинно залежати від платформи і операційної системи. Web-сервіс отримує запит про отримання даних в вигляді повідомлення XML. Отже, якщо користувач введе запит в форму додатка покупця з метою отримання інформації про продукт компанії ITSO Electronics, Web-сервіс отримає запит у вигляді повідомлення SOAP в форматі XML і відправить відповідь клієнту таким же чином. Використовуючи розширену підтримку, додаток ITSO Electronics може розширити свою функціональність з метою отримання інформації про ціну продуктів від безлічі виробників. Використовуючи Java, Web-сервіс може відправляти запити на отримання даних на безліч URL-адрес, запитуючи дані про ціну, використовуючи протокол XML. Всі запити відправляються у вигляді повідомлень SOAP, і відповіді приходять в такому ж форматі, в додатку ITSO Electronics. Користувач при цьому не знає ні про тип бази даних, з якої отримує дані, ні про операційну систему, ні про платформу. Користувачі отримують доступ, мабуть, до необмеженого запасу даних, представленому з великою ефективністю.
3.4 Додавання Web-сервісів до додатка ITSO Electronics
Використовуючи Web-сервіси та підтримку WSDL, ви можете швидко створювати або розширювати код Java або LotusScript, відкриваючи, таким чином доступ до тисяч додатків Lotus Domino з зовнішніх систем, таких як Java 2 Platform, Enterprise Edition (J2EE) і додатків Microsoft. NET. У цьому розділі ми показуємо, як поліпшуються додатки ITSO Electronics шляхом впровадження Web-сервіси в середу розробки додатків Lotus Domino.
Зауваження Web-сервіси можуть бути додані до будь-якої базі даних Lotus Notes і Domino. Проте, для досягнення мети, поставленої в цій книзі, все Web-сервіси додані до двох окремих баз даних в додатку ITSO Electronics, які називаються webservices.nsf і wsconsumer.nsf.
3.4.1 Комерційні передумови додавання Web-сервісів до додатка ITSO Electronics
Основним нашим вимогою щодо впровадження Web-сервісів в додаток ITSO Electronics стала необхідність в перегляді покупцям і поточної інформації про нашу продукцію. Web-сервіси краще всіх впораються з подібним завданням. У майбутньому компанія ITSO Electronics планує використовувати Web-сервіси для того, щоб дозволити покупцям отримувати доступ до інформації про рахунки, незалежно від використовуваної платформи, операційної системи або інтерфейсу.
3.4.2 Користувальницькі вимоги
Основним користувачем Web-сервісів додатки ITSO Electronics в нашому прикладі буде клієнт фірми ITSO Electronics. Додаток необхідно для забезпечення доступу користувача до поточної інформації про продукт через програмний механізм і призначений для користувача інтерфейс, інтуїтивний і легкий у використанні.
3.5 Створення простого Web-сервісу в Lotus Domino Designer 7
Дозвольте продемонструвати вам, наскільки легко створити Web-сервіс за допомогою IBM Lotus Domino Designer 7.
Почнемо з виключення помилок, обробки особливих ситуацій, реєстрації та продуктивності. Зосередимося на функціональності ядра.
Необхідно, щоб додаток ITSO Electronics підтримувало і Java, і Lotus-Script.
3.5.1 Створення нового Web-сервісу
В цьому розділі ілюструється створення нового Web-сервісу. Як приклад використовується додаток ITSO Electronics:
- Відкрійте базу даних до Domino Designer. У нашому прікладі ми Вибравши базу Даних ITSO Web Services. Зі списку дизайну віберіть Shared Code => Web Services (Загальний код Web-сервіси), потім клацніть по кнопці New Web Service (создать Web-сервіс). У вікні властівостей Web-service в поле Name (Назва) введіть ProductInfo, таким чином ви надасте имя Web-сервісу (див. Мал. 3.1 ).
Мал. 3.1. Вікно властівостей Web Service - Щоб создать описание LotusScript, як на Мал. 3.2 , Вставте або наберіть номер, наведень в прікладі 3.1 , В розділ Web-сервісу Declaration. % INCLUDE "lsxsd.lss" Class ProductInfo Function getProductName (productNumber As String, Fault1 As WS_FAULT) As String Dim session As NotesSession Set session = New NotesSession Dim db As notesdatabase Dim view As notesview Dim doc As notesdocument Set db = session.GetDatabase ( "", "itso / products.nsf") Set view = db.GetView ( "vaPNumber") Set doc = view.GetDocumentByKey (productNumber, True) If doc Is Nothing Then Call Fault1.setFault (True) 'необхідно для помилкової активації Call Fault1.setFaultString ( "Product" & productnumber & "does not exist") Else getProductName = doc.ProductName (0) End If End Function End Class Приклад 3.1. Код для простого Web-сервісу
- Знову відкрийте вікно властивостей Web Service і в поле Port type class введіть ProductInfo, перед тим як зберігати Web-сервіс, як показано на Мал. 3.3 .
Мал. 3.3. Вікно властивостей Web Service: поле PortType class - Перейдіть до закладки Advanced (Додатково) і переконайтеся в тому, що значення за замовчуванням для перемикача Programming model (Програмована модель) встановлено в положення RPC і значення поля SOAP message format (формат повідомлення SOAP) встановлено на RPC / encoded (див. Мал. 3.4 ).
Мал. 3.4. Вікно властивостей Web Service: закладка Advanced - Закрийте вікно властивостей і збережіть Web-сервіс.
3.5.2 Перегляд Web-сервісу через браузер
Для того щоб протестувати новий Web-сервіс ProductInfo, відкрийте браузер і введіть наступний URL:
http: //servername/databasename.nsf/webservicename? openwebservice ( http: //імясервера/названіебазиданних.nsf/названіеWeb-сервіса? openwebservice )
У нашому сценарії для додатка ITSO Electronics ми використовували наведений нижче URL:
http://domino7appdev.cam.itso.ibm.com/itso/webservices.nsf/ProductInfo?openwebservice
Lotus Domino відповість на цей запит ім'ям порту Web-сервісу і назвами операцій для цього порту, а також виведе посилання на документ WSDL, як показано на Мал. 3.5 .
Мал.3.5.
Web-сервіс, відкритий в Web-браузері
Якщо використаний протокол HTTP GET, то команда?Nsf/webservicename?
Nsf/названіеWeb-сервіса?
Nsf/ProductInfo?