Розробка Internet-додатків з використанням Borland Delphi і Kylix


Введення



За останні кілька років сприйняття та використання Internet як черговий технологічної "іграшки" закономірно трансформувалися в усвідомлення тих широких можливостей, які Мережа здатна надати користувачам в плані як людського спілкування, так і ведення бізнесу. Неминуче виник в результаті подібної трансформації Internet-бум, безумовно, дещо спотворив загальне сприйняття Internet як ще одного засобу для побудови інформаційної інфраструктури комерційного підприємства, оскільки всі навперебій намагалися застосувати можливості Мережі для малоподходящей цілей. Проте сьогодні ажіотаж навколо Internet-технологій поступово починає спадати, поступаючись місцем розумінню справді цінних можливостей Мережі, а також шляхів їх застосування.


Безумовно, застосування Internet-технологій для побудови інформаційної інфраструктури є відносно новим полем діяльності, проте до справжнього моменту в світі утворилося досить велике число компаній, що постачають на ринок засоби розробки та підтримки бізнес-додатків, що використовують Internet-технології. Багато з цих компаній створюються безпосередньо під Internet-ринок, проте не менше гравців – вихідці з області "класичних" засобів розробки. Одним з найвідоміших постачальників засобів розробки додатків довгий час була і залишається компанія Borland, відома своїми RAD-інструментами для платформи Windows, такими як Borland Delphi, Borland C + + Builder, а також крос-платформних засобом розробки Jbuilder, що використовують технології Java.


Історично є однією з компаній-першопрохідців у різних напрямках розробки програмного забезпечення, Borland цілком закономірно звернула свою увагу на набирає зростання напрямок Internet-технологій, представивши різні засоби для створення, впровадження і підтримки Internet-додатків.


У даній статті мова піде про підтримку розробки Internet-додатків у двох найбільш відомих інструментах компанії Borland: Delphi і Kylix.


Delphi – це інтегроване середовище для швидкого створення додатків баз даних, настільних і Internet-додатків, побудована на основі розробленої Borland візуальної бібліотеки компонентів ( Visual Components Library , VCL ), Що включає в себе засоби раз ництва інтерфейсу додатків з двостороннім зв'язком з вихідним кодом (TwoWay Tools), широкий спектр засобів налагодження додатків і різних допоміжних засобів.


За короткий час з моменту виходу першої версії цього продукту, що скоїв у деякому сенсі революцію в області засобів швидкої розробки додатків (Rapid Application Development) – за рахунок простоти використання, інтуїтивної зрозумілості інтерфейсу і широкого набору засобів розробки, Delphi зібрав під свої прапори величезне число розробників зі всього світу, що, безумовно, не могло не стимулювати поява підтримки даним продуктом Internet-технологій та розробки відповідних додатків.


Kylix, Delphi для Linux – це аналог Delphi, призначений для розробки додатків для операційної системи Linux, яка останнім часом все більш широко поширюється у світі. Подібно до свого Windows-аналогу – Delphi, Kylix має для своєї платформи надзвичайно важливе значення хоча б тому, що до теперішнього часу для Linux не існувало засобів розробки, порівнянних з Delphi по потужності і простоті використання, що, у свою чергу, призвело до звуження кола розробників програмного забезпечення для цієї платформи і в значній мірі загальмувало її поширення в якості настільної операційної системи, тимчасово обмеживши Linux лише досить вузькою областю сервер ної платформи і Internet-хостингу.


Однак з появою Kylix ситуація цілком може кардинально змінитися на краще, оскільки тепер для безлічі розробників відкривається можливість створювати додатки для Linux не менш швидко і ефективно, ніж для Windows, а в перспективі, з виходом наступної версії Delphi, і створювати крос-платформні додатки, що переносяться з однієї платформи на іншу без переробки.


Подібно Delphi, Kylix базується на аналогічній VCL технології, що отримала назву CLX (Вимовляється як "Кликс") – Component Library for Cross Platform Development , А також на наборі засобів розробки, аналогічних Delphi. При цьому Kylix навіть більш орієнтований на розробку Internet-додатків, ніж Delphi, який в даний час є більш універсальним продуктом. Поточна версія Kylix, точніше Kylix Server Developer, Крім засобів розробки додатків баз даних, настільних додатків і "класичних" Internet додатків, тобто клієнтів, які використовують різні Internet-служби і протоколи, і серверів, що застосовують технології CGI (Common Gateway Interface), а також реалізують відповідні, серверні частини Internet-служб, включає в себе ряд засобів для розробки розширень Web-сервера Apache , Що представляє собою сьогодні один з найбільш поширених Web-серверів у світі.


Оскільки Kylix був офіційно анонсований компанією Borland раніше нової версії Delphi, доцільно почати наш огляд саме з цього продукту.


Отже, які саме інструменти для розробки Internet-додатків має у своєму арсеналі Delphi для Linux?


Засоби розробки Internet-додатків зі складу Borland Kylix



Як вже було сказано вище, в основі своїй Kylix максимально уподібнений Delphi як по загальній ідеології (інтегрована середовище розробки, візуальні засоби створення інтерфейсу додатків, повністю сумісна з Delphi версія мови Object Pascal і т.д.), так і по набору компонентів візуальної бібліотеки – звичайно, з урахуванням особливостей операційної системи Linux. Саме ці особливості зумовили деяке розходження елементів Internet-технологій в Kylix і їх аналогів в Delphi.


Kylix підтримує два типи серверних Internet-додатків: додатки на основі технології CGI і розширення сервера Apache – Apache DSO (Dynamic Shared Objects, динамічні об'єкти спільного використання).


Shared Objects – це якийсь аналог Windows-модулів DLL для Linux, що забезпечують спільне використання програмних елементів кількома додатками. Практично вся функціональність Linux, включаючи велику частина ядра ОС, побудована із застосуванням Shared Objects ( SO ). Kylix також використовує цю технологію, зокрема для перенесення технології пакетів (packages) на Linux, і, звичайно, дозволяє розробляти власні SO -Модулі.


У свою чергу, DSO -Модулі – це спеціальним чином організовані бібліотеки Shared Objects, що володіють розширеними можливостями взаємодії з сервером Apache за рахунок доступу до його API ( Application Programming Interface , Прикладного програмного інтерфейсу) і що використовується як стандартний засіб розширення можливостей цього сервера.


Сервер Apache є проектом Open Source, координованих Apache Group. Як і більшість проектів Open Source, Apache поширюється безкоштовно разом з вихідним кодом у відповідності зі спеціальною ліцензією і, знову-таки, як і більшість OS -Проектів, активно розвивається, отримуючи все більший набір можливостей. Безсумнівно, ці особливості, а також висока надійність, простота у використанні і доступність для дуже широкого спектру операційних систем (більшість клонів UNIX, Win32 і т.д.) з'явилися причинами широкого розповсюдження сервера Apache в якості платформи для Internet-хостингу і корпоративних Web-додатків.


Оскільки Apache входить у поставку більшості клонів Linux, логічно було включити його підтримку в Kylix Server Developer, що й було здійснено компанією Borland на додаток до підтримки технології CGI.


Інші технології, такі як WinCGI і ISAPI / NSAPI, зі зрозумілих причин не увійшли до складу Kylix, оскільки призначені для використання для серверних розширень на платформі Windows.


До складу Kylix входить ієрархія компонентів для створення Internet-додатків, побудована на ієрархії WebBroker , Аналогічної застосовуваної в Delphi 5: WebModule , WebDispatcher , WebActionItem і т.д. Всі вони є невізуальними компонентами, що відповідають за створення ієрархії обробки запитів протоколу HTTP і генерації відповідних дій у відповідь на ці запити шляхом утворення шару Internet-компонентів середнього рівня, які забезпечують взаємодію клієнтських і серверних Internet-додатків на рівні протоколу HTTP. Основою програми, побудованого на архітектурі WebBroker, є контейнер типу WebModule, в якому розміщуються інші Web-компоненти, які генеруються автоматично (WebDispatcher) або створюються в процесі розробки програми (WebActionItem, PageProducer і т.д.). Компонент WebDispatcher створюється контейнером WebModule автоматично і є центром обробки HTTP-запитів. Слід ще раз підкреслити, що дана ієрархія повністю аналогічна Delphi-реалізації, і тому робота Internet-додатки, створеного за допомогою Kylix, буде повністю співпадати з роботою подібного Delphi-додатки, заснованого на архітектурі WebBroker.


При надходженні HTTP-запиту він передається об'єкту WebDispatcher, який виробляє перегляд списку компонентів типу WebActionItem і автодіспетчерізуемих компонентів, намагаючись знайти компонент, здатний обробити саме той тип запиту, який є поточним в черзі. У тому випадку, якщо відповідного компоненту не виявлено, запит передається об'єкту WebActionItem з позначкою Default (всередині WebModule може бути тільки один такий об'єкт). У тому випадку, якщо Default WebActionItem має засоби для обробки такого запиту, проводяться необхідні дії, а потім (при необхідності) генерується відповідь, який передається назад об'єкту WebDispatcher, а від нього клієнтові – відправнику запиту.


Кожен з компонентів WebActionItem може бути наділений спеціальними можливостями по обробці окремих видів запитів, наприклад, буде генерувати окрему станицю Web-сайту при запиті конкретного URI або ж навпаки – видавати повідомлення про помилкову посиланням на сторінку (код 404 протоколу HTTP) або на кореневу сторінку Web-сайту при зверненні до кореневого URI, що, як правило, робить Default WebActionItem.


Як і будь-який компонент або клас Object Pascal, для компоненту WebActionItem можуть створюватися спадкоємці – з метою розширення або спеціалізації функціональності. Наприклад, можна створити компонент-спадкоємець WebActionItem, який буде спеціальним чином реагувати на помилку в описі URI (URL) замість видачі стандартного повідомлення 404 "Сторінка не знайдена", генеруючи більш розгорнутий текст повідомлення або виробляючи будь-які інші дії.


Безпосередньо генерація змісту сторінок проводиться візуальними компонентами типу PageProducer та їхніми спадкоємцями, що працюють у зв'язці з компонентами WebActionItem, або ж за допомогою обробників подій OnAction, реалізованих безпосередньо для компонентів WebActionItem. Візуальні компоненти генерації змісту входять до складу палітри Internet, в якій також розташовуються візуальні Internet-компоненти нижнього рівня, що забезпечують роботу безпосередньо з протоколами TCP / IP і UDP, мова про які піде нижче. Загальний вигляд палітри Internet зображений на рис. 1.


Перший зліва компонент є візуальним варіантом автоматично створюваного WebDispatcher і призначений для перетворення в WebModule контейнера DataModule, про що мова піде пізніше.


Базовий компонент PageProducer володіє можливістю створення вмісту сторінки за заданим у властивості HTMLDoc-або HTMLFile-шаблоном або через подію OnHTMLTag, що дозволяє реалізувати реакцію Web-додатки на спеціальні теги в складі шаблону, наприклад динамічну підстановку даних.

рис.5 Палітра компонентів WebSnap


Компоненти типу "адаптер" (TAdapter, TPagedAdapter, TDataSetAdapter, TLoginForm Adapter, TApplicationAdapter і т.д.) служать для реалізації підтримки мов сценарію на стороні сервера. Так, наприклад, компонент TDataSetAdapter служить для використання мови сценарію при формуванні відображення вмісту набору даних. При цьому може використовуватися JScript або VBScript, в залежності від типу сервера, для якого розробляється програма. Важливим фактом є те, що WebSnap підтримує JScript на стороні сервера у відповідності зі специфікацією ECMA (ECMA 262), яка описує об'єктно-орієнтована мова сценаріїв для формування змісту HTML-сторінок. Додаткову інформацію про це стандарті можна отримати на сторінці цієї організації за адресою http://www.ecma.ch.


Інша частина компонентів WebSnap відноситься до класу "диспетчер" (TPageDispatcher, TAdapterDispatcher) і забезпечує диспетчеризацію HTTP-запитів та відповідей на них, відповідно до вказаної бізнес-логікою.


Компоненти типу "список" (TStrings ValuesList, TDataSetValuesList, TWebUserList) дозволяють включати в вміст HTML-сторінок різні списки (текстових рядків, рядків наборів даних, списки користувачів і т.д.).


Компоненти типу "продюсер" (TXSLPage Producer, TAdapterPageProducer) дозволяють генерувати сторінки на основі компонентів типу "адаптер" та інших, що представляють собою окремі елементи HTML-сторінки, "Збираючи" їх в єдиний HTML-документ. При цьому TXSLPageProducer дозволяє формувати вміст сторінки на основі XML-трансформації вихідного шаблону, описаного у відповідності зі стандартами XML (eXtensible Markup Language) і XSL (eXtensible Stylesheet Language), і вихідних даних у форматі XML, які, у свою чергу, можуть бути сформовані безпосередньо всередині програми, лічені з зовнішнього файлу або отримані через компоненти доступу до даних (dbExpress, DataSnap).


В основі Internet-додатки на основі WebSnap як і раніше лежить компонент-контейнер, який, однак, тепер може бути в додатку не єдиним. Контейнером в ієрархії WebSnap є компонент TWebSnapDataModule або TWebAppPageModule, тобто мається на увазі розбиття програми на сторінки подібно "класичного" Web-сайту. Усередині цього контейнера розташовуються візуальні компоненти для генерації змісту і невізуальні компоненти WebActionItem, що відповідають за побудову дерева реакцій додатки на HTTP-запити. Зразковий вид WebAppPageModule в режимі design-time наводиться на рис. 6.

рис.6 Загальний вигляд WebAppPageModule в режимі design-time


Як можна побачити з цього малюнка, WebSnap дійсно допускає використання компонентів WebBroker спільно з компонентами нової архітектури, що відкриває надзвичайно великий вибір можливостей реалізації того чи іншого завдання побудови Internet-додатки в залежності від її складності та інших факторів. При цьому компоненти WebBroker, вкладені в контейнер TWebAppPageModule, будуть працювати в новій, многоконтейнерной архітектурі програми WebSnap точно так само, як і в одноконтейнерной архітектурі WebBroker, що дозволить при необхідності здійснити перехід до нової архітектури без внесення численних змін в існуючий додаток.


Дерево обробки HTTP-запиту, як і раніше описується за допомогою компонентів WebActionItem, як це робилося в архітектурі WebBroker, за винятком того, що, крім можливості розбиття програми на кілька контейнерів (наприклад, за аналогією зі сторінками Web-сайту), всередині кожного контейнера може бути декілька компонентів-диспетчерів, що містять окремі дерева WebActionItems для різних типів запитів і, отже, що реалізують спеціальні алгоритми їх обробки всередині одного контейнера, (тоді як в архітектурі WebBroker всі запити повинні були оброблятися всередині одного дерева компонентів WebActionItem).


Архітектура WebSnap забезпечується великою кількістю майстрів (wizards) для первинної генерації "скелетів" Internet-додатків, а також для виконання повторюваних проміжних операцій.


На відміну від реалізації підтримки WebBroker в Delphi 5 і Kylix, підтримка Web Snap в Delphi 6 включає в себе розширені засоби візуальної розробки та попереднього перегляду генеруються даних. Так, засіб Page Module View дозволяє здійснювати попередній перегляд результатів генерації змісту сторінки на підставі окремого Page Module без компіляції і запуску програми під управлінням Web-сервера, що істотно полегшує налагодження Internet-додатків. При цьому, на відміну від засобів підтримки WebBroker, для WebSnap використовується вбудований браузер, що виключає прив'язку архітектури до якогось одного засобу перегляду (як це було з WebBroker), унаслідок чого в Kylix і Delphi 5 не були включені кошти попереднього перегляду результатів генерації компонентів типу PageProducer і DataSetProducer (при цьому попередній перегляд підтримувався тільки для компонентів InternetExpress за рахунок використання сервера OLE Automation від MS Internet Explorer, що, природно, автоматично виключало перенесення цього сервісу, наприклад, на платформу Linux).


Крім перегляду згенерованого HTML-змісту кошти попереднього перегляду Delphi 6/WebSnap дозволяють відображати результати побудови XML-і XSL-дерев без компіляції програми, що також значно спрощує процес з будівлі й налагодження додатків.


Також до складу засобів підтримки XML, яка взагалі є в Delphi 6 одним з найбільш значимих нововведень, входить засіб побудови схем зв'язків XML (XML Data Binding Wizard), що дозволяє на основі файлів даних у форматі XML формувати файли зв'язків, що описують типи об'єктів та їх атрибути на основі вихідних даних, які потім можуть бути використані для виконання трансформацій всередині додатків.


Як ми говорили вище, Delphi 6 як і раніше підтримує і компоненти InternetExpress, які також можуть бути використані спільно з компонентами WebSnap.


Компоненти InternetExpress дозволяють здійснювати включення даних у зміст HTML-сторінок за рахунок використання механізму "прозорих" HTML-тегів при генерації змісту. InternetExpress складається з компонентів InetXPageProducer і XMLBroker.


Перший є спадкоємцем PageProducer і виробляє безпосередню генерацію HTML-змісту з "прозорими" HTML-тегами. Другий здійснює обмін даними з сервером (джерелом) даних на основі технології MIDAS, тобто практично з будь-яким існуючим постачальником даних, які реалізують один з підтримуваних MIDAS стандартів (CORBA, COM / DCOM, Sockets і т.д.).


При цьому для передачі даних до клієнтської частини програми (Web-сторінці усередині HTML-браузера) використовуються XML DataPackets, що містять як власне дані, так і їх опис у форматі XML. Для передачі змін у даних, які можуть бути вироблені всередині клієнтської частини Internet-додатки на основі InternetExpress, використовуються DeltaPackets, знову-таки у форматі XML, що описують виключно зміни, які повинні бути внесені в дані на сервері, що дозволяє знизити трафік між клієнтами і Web-сервером. За генерацію пакетів даних (data packets) і розшифровку різницевих пакетів (delta packets) відповідає компонент XMLBroker, який також транслює зміни сервера даних.


Родзинкою архітектури InternetExpress є те, що, на відміну від компонента PageProducer і його спадкоємців – DataSet PageProducer та інших, InetXPageProducer не включає дані до складу HTML-сторінок. Замість цього дані, передані у вигляді XML DataPackets клієнтського додатку (браузеру), підставляються на місце "прозорих" HTML-тегів за рахунок реалізації DOM (Document Object Model – об'єктної моделі документа) всередині браузера-клієнта, яка, зокрема, описує заміщення "прозорих" тегів властивостей документа реальними значеннями. У випадку якщо браузер не має вбудованої реалізації DOM, використовується реалізація на JavaScript, як, наприклад, це зроблено для Netscape Navigator. Набір відповідних сценаріїв включений в постачання Delphi, а InetXPageProducer може забезпечувати передачу цих сценаріїв на сторону клієнта при першому зверненні до Internet-додатка на основі InternetExpress за рахунок включення посилань на них у зміст генеруються.


Як звичайно, на базі компонентів InternetExpress можуть бути створені їх розширені версії, що дозволяють реалізувати внутрішню обробку додаткових "прозорих" тегів, винести типові властивості HTML-сторінок, наприклад заголовки або кодування, у властивості компонентів-генераторів змісту.


Компоненти InternetExpress вкладаються в контейнер WebModule або WebSnapDataModule / WebSnapPageModule і можуть використовуватися спільно з іншими компонентами архітектур WebBroker і WebSnap.


Таким чином, архітектура WebSnap дозволяє використовувати існуючі розробки на основі архітектури WebBroker при створенні Internet-додатків на базі нових технологій, пропонованих Delphi 6. При цьому також залишається можливість розробки крос-платформних Internet-додатків на основі бібліотеки CLX і архітектури WebBroker, які будуть підтримуватися як Delphi 6, так і Kylix, причому у разі дотримання при розробці певних правил перенесення проекту між платформами не буде одностороннім, тобто по є можливість вести паралельну розробку для обох операційних систем, з подальшим перенесенням додатки з "провідною" ОС на "ведену".


Висновок



Отже, ми розглянули основні можливості розробки Internet-додатків з використанням Kylix і Delphi 6. Безумовно, в силу обмеженого обсягу статті було неможливо вмістити тут більш докладний огляд знов з'явилися технологій, проте головною нашою метою було показати, що нового привнесли в область розробки додатків для Internet два нові продукти компанії Borland, і постаратися зацікавити як розробників вже існуючих проектів цього класу, так і тих, хто перебуває в стадії ухвалення рішення про вибір засоби розробки та операційної системи для свого проекту, оскільки з ви ходом Kylix і Delphi 6 можливості розробки додатків, що використовують Internet-технології, багато разів зросли. Сподіваємося, що даний огляд допоможе вам розібратися в нових можливостях зазначених продуктів.

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


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

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

Ваш отзыв

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

*

*