Створення автономної Web-служби в Delphi 7 за допомогою комплекту Indy. Частина 1, HTML, XML, DHTML, Інтернет-технології, статті

Зміст



У статті розповідається про те, як створити автономну Web-службу, використовуючи комплект Indy і Delphi 7 і як використовувати комплект Indy для здійснення підтримки в Delphi 7 Web-служб на основі протоколу SOAP. За додатковою інформацією про створення Web-служб рекомендуємо звернутися до чудової статті Ніка Ходжес (Nick Hodges) на сайті співтовариства Borland: стаття Дейва Нотажа (Dave Nottage). У цій статті була описана ідея про те, як створити в Borland Delphi 7 і новий комплект Indy володіють вбудованою підтримкою такої функціональності.


Однак, незважаючи на вбудовану підтримку, документальне опис цієї можливості немає.


Недавні повідомлення у мережній конференції Borland і пошук у мережі за допомогою сервера Google, дозволили авторам розробити спосіб перетворення існуючого коду з Delphi 6 в Delphi 7. Але – всьому свій час.


Основна ідея


Дана стаття є першою частиною циклу з трьох статей. У ній описуються основні положення. Друга і третя частини будуть присвячені деяких проблем і способів їх вирішення. Приступимо до опису основної ідеї.


Далі буде описано, як створити додаток, що підтримує такий набір функціональних можливостей:



HTTP-сервер і SOAP


Багато хто знає Indy і використовували компоненти THTTPServer раніше. Нескладно помістити цей компонент на форму додатка, але як змусити його підтримувати SOAP? У каталозі "C: Program FilesBorlandDelphi7SourceIndy" можна знайти файл IdHTTPWebBrokerBridge.pas. Це якраз те, що потрібно.


Цей файл не є частиною виконуваного модуля Indy, тому потрібно включити його в поточний проект в якості стандартного проектного файлу. (Для компіляції проекту також знадобиться файл IdCompilerDefines.inc.) Дані файли необхідно скопіювати в каталог поточного проекту. Для збільшення швидкості може знадобитися зміни коду, так що ці файли краще зберігати окремо від дистрибутива Indy.


Далі описується реалізація заміщення компонента з THTTPServer, розширеного для підтримки пакетів SOAP і називається TIdHTTPWebBrokerBridge. Ця конструкція є класом, успадковані від TCustomHTTPServer і підтримує базову прив'язку запитів.


Так як цей клас недоступний з палітри, необхідно буде визначити його як регулярний об'єкт при виконанні програмного коду.


Цей об'єкт можна використовувати точно таким же чином, як і звичайний THTTPServer, за винятком тих додаткових властивостей, які забезпечують роботу з SOAP.
Однак, спочатку розглянемо підготовку необхідного коду.


WebBroker і Indy


Тим, кому раніше доводилося створювати Web-служби, відомо, що для цього використовується WebBroker. Delphi 7, також як і Delphi 6, використовує архітектуру WebBroker для підтримки SOAP.


Тому потрібно створити модуль TWebModule і помістити в нього наступні три компоненти: THTTPSoapDispatcher, THTTPSoapPascalInvoker і TWSDLHTMLPublish. Всі вони доступні з вкладки WebServices палітри компонентів. Після зв'язування SOAPDispatcher з SOAPPascalInvoker форма програми готова. У якості кінцевого результату маємо отримати щось на зразок того, що зображено на рисунку:

(Модуль uWebModule.pas)


Краще все залишити як є, тому що немає необхідності змінювати або виконувати будь-якої власний код для цієї форми.


WebModule і Indy


Перейдемо до іншої частини коду, необхідної для реалізації HTTP-сервера.


Як можна помітити TIdHTTPWebBrokerBridge володіє методом RegisterWebModuleClass, який дозволяє зареєструвати власний модуль WebModule і зробити його доступним для сервера.


Таким чином, після створення серверного об'єкта fServer, потрібно просто викликати клас fServer.RegisterWebModuleClass (TwmSOAPIndy).


Примітка. При звичайній реалізації TIdHTTPWebBrokerBridge об'єкт TwmSOAPIndy буде створюватися кожен раз коли приходить запит. Очевидно, що в цьому немає необхідності. Тому клас можна модифікувати так, щоб забезпечити перманентне створення даного об'єкта протягом часу поки існує об'єкт Server. За додатковою інформацією рекомендується звернутися до документації про реалізацію класів.


Чи готовий сервер?


Може виникнути питання: "Що ж далі?". Майже нічого – сервер готовий до роботи. Залишилося тільки додати модуль TSoapDataModule і реалізацію бізнес-логіки і сервер буде абсолютно готовий.


Служба? – Це не складно


Так як в даному прикладі розглядається тільки звичайне додаток, то воно може бути перетворено в службу звичайним чином. Нічого особливого робити не потрібно. Єдино, слід пам'ятати про те, що якщо підключення до баз даних є довірчими (trusted), то сервіс має має спеціальну обліковий запис для входу в сервер БД. Для зміни облікового запису, що використовується службою для початку роботи, можна використовувати обліковий запис користувача.


Приклад


Дотримуйтесь посиланню, щоб подивитися Частина 2

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*