Лабораторная работа: Технологія SOAP
Мета : отримання практичних навиків обміну даними між прикладенням C++ Builder і базою даних інформаційної системи в комп'ютерній мережі Internet з використанням технології SOAP .
Завдання:
Створити оригінальну (!) розподілену інформаційну системуна основі технології SOAP на прикладі системи з наступною архітектурою клієнт-серверної взаємодії:
· клієнтське прикладення де-небудь з Internet споживає Web-сервіс;
· Web-сервіс (через SOAP ) виставляє об'єктні методи;
· об'єктні методи звертаються до віддалених даних де завгодно на Web.
Технологія SOAP
Малюнок 1
Клієнт SOAP використовує спеціальний UDDI-реєстр для локалізації Web-сервісу. В більшості випадків, замість керування WSDL безпосередньо, прикладення SOAP буде сконструйовано так, щоб використовувати специфічний тип порту і стиль скріплення, і динамічно конфігуруватиме адресу сервісу, що викликається з метою узгодження з сервісом, знайденим за допомогою UDDI.
Клієнтське прикладення створює повідомлення SOAP , яке є XML-документом, здатним здійснювати необхідні операції запиту / відповіді.
Клієнт посилає SOAP повідомлення JSP або ASP-сторінці на Web-сервері, що слухає запити SOAP .
Сервер SOAP аналізує пакет SOAP і викликає відповідний метод об'єкту в його області, передаваній в параметрах SOAP-документа. Перед ухваленням повідомлення SOAP-сервером вузли проміжної обробки можуть виконувати спеціальні функції, як вказано в заголовках SOAP .
Запрошуваний об'єкт виконує позначену функцію і повертає дані SOAP-серверу , який запаковує відповідь в конверт SOAP . Потім сервер «кладе» конверт SOAP в об'єкт відповіді (наприклад, сервлет або COM-об'єкт), який і посилається назад запитуючій машині.
Клієнт одержує об'єкт, «знімає» конверт SOAP і посилає у відповідь документ програмі, що спочатку запитала його, завершуючи цикл запиту / відповіді.
Delphi дозволяє створювати як сервери, так і клієнти Web Services . Ми почнемо розгляд із створення сервера.
Створення сервера Web Services
Створення сервера Web Services в Delphi складається з наступних етапів:
1. Опис інтерфейсу сервера, тобто методів, які будуть доступні для виклику клієнту;
2. Реалізація методів сервера;
3. Створення проекту Delphi і включення в нього результатів перших двох кроків.
У Delphi при створенні сервера Web Services методи, доступні для виклику клієнту, описуються у вигляді invokable інтерфейсів . Invokable інтерфейс - це інтерфейс, для методів якого доступна RTTI (інформація про типи на етапі виконання). Для того, щоб із звичайного інтерфейсу зробити invokable досить вказати директиву компіляції {$M+}. Після цього всі нащадки і сам інтерфейс міститимуть RTTI. У ієрархії VCL вже є такий інтерфейс IInvokable . Таким чином, при написанні сервера простіше всього успадкувати інтерфейс IInvokable . Крім того, необхідно зареєструвати свій інтерфейс в invocation registry . Реєстрація дозволяє серверу визначити клас, що реалізовує методи інтерфейсу, а клієнту одержати опис методів, підтримуваних сервером. Реєстрація здійснюється викликом методу InvRegistry.RegisterInterface у секції initialization модуля.
Оскільки інтерфейс використовується не тільки сервером, але і клієнтом, то бажано визначити його в окремому модулі Delphi .
Для прикладу ми розробимо сервер, який здійснюватиме перерахунок грошей з € у гривні і назад. У RAD Delphi оберімо пункт меню File | New | Unit. У одержаному порожньому модулі визначимо інтерфейс сервера:
unit u_Intrf;
interface
type
IEncodeDecode = interface(IInvokable)
['{9298D805-A2FB-4860-994E-11CC5BD36025}']
--> ЧИТАТЬ ПОЛНОСТЬЮ <--