Розробка Internet-додатків з використанням Borland Delphi і Kylix, HTML, XML, DHTML, Інтернет-технології, статті


Введення



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


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

рис.1 Палітра компонентів Internet в Kylix


Крім універсальної реалізації PageProducer в набір Internet-компонентів середнього рівня в Kylix входять також спадкоємці PageProducer, призначені для реалізації більш спеціалізованих дій, наприклад для публікації і введення даних: DataSetTableProducer , DataSetPageProducer , QueryTableProducer і SQLQueryTableProducer . Ці компоненти містяться в палітрі Internet і складають шар Internet-компонентів верхнього рівня, ізольованих від протокольної частини компонентами архітектури WebBroker.


Призначення цих компонентів можна зрозуміти з імен класів:



  • DataSetTableProducer і DataSetPageProducer призначені для публікації даних із джерел даних у вигляді таблиць або набору полів при відсутності необхідності введення параметрів відбору даних з джерела;

  • QueryTableProducer і SQLQueryTableProducer дозволяють публікувати дані з джерел, що вимагають для формування набору даних вхідних параметрів, які передаються у вигляді параметрів HTTP запиту в разі запиту типу GET або у вигляді полів властивості ContentFields об'єкта запиту типу POST.

У будь-якому випадку поля даних підставляються на своє місце в HTML-документі за допомогою "прозорих" для HTML-парсеров тегів, що містяться в шаблоні сторінки, які потім замінюються безпосередньо значеннями полів даних. Наприклад, при використанні компонента TPageProducer і його події OnHTMLTag для генерації HTML-сторінки, шаблон виду:


після заміщення тега <# CUSTLIST> реальними даними (в даному прикладі – списком клієнтів з демонстраційної бази даних customer.db) буде перетворений в наступний HTML-код:


Компоненти DataSetTableProducer і QueryTableProducer використовують для формування HTML-документа шаблони, які генеруються автоматично залежно від змісту опублікованого набору даних і налаштувань самого компонента. Звернення до даних з цих компонентів і їх спадкоємців здійснюється через ієрархію класів dbExpress, яка в Kylix і в новій версії Delphi є основним засобом доступу до даних.


Крім компонентів генерації HTML-кон тенту, до складу Internet-компонентів входить та кой компонент, як WebDispatcher . Цей компонент призначений для перетворення звичайного застосування баз даних (або desktop-додатки) в Internet-додаток. Досягається це наступним чином.


Спочатку компонент WebDispatcher поміщається у звичайний модуль (DataModule) даних, при цьому для нього створюється дерево компонентів WebActionItem – аналогічно тому, як це відбувається в WebModule, оскільки WebModule автоматично підтримує створення ієрархії компонентів WebBroker, WebDispatcher і WebActionItem на рівні своєї реалізації. Після того як DataModule був відповідним чином підготовлений, їм можна замінити за допомогою автоматично створеного при генерації нової програми майстра Web Server Application WebModule (при цьому перенісши всі компоненти доступу до даних) інші невізуальні компоненти, містяться у вихідному DataModule, і, звичайно, супутній вихідний код у новостворене Internet-додаток.


Розглянуті вище компоненти складають верхній (PageProducer і його спадкоємці) і середній (WebBroker, WebDispatcher, Web ActionItem) рівні ієрархії класів для створення Internet-додатків і працюють з протоколом HTTP на рівні компонента WebBroker.


Для безпосереднього доступу до можливостей базових Internet-протоколів TCP / IP і UDP до складу Kylix включені компоненти нижнього рівня – ClientSocket, ServerSocket, TcpClient, TcpServer і UDPSocket , Які призначені для створення клієнтських і серверних додатків, що працюють безпосередньо через TCP-з'єднання.


Компоненти ClientSocket і ServerSocket дозволяють здійснювати обмін даними через TCP-з'єднання за рахунок використання подій OnReceive і OnSend з подальшою їх обробкою всередині відповідної програми. При цьому забезпечується базова функціональність для створення і управління TCP-з'єднанням з можливістю локації по URL або безпосередньо через вказівку TCP-адреси і порту.


Компоненти TcpClient і TcpServer є спадкоємцями ClientSocket і ServerSocket, відповідно розширюючи їх функціональність можливістю роботи з тим чи іншим протоколом за вибором: IP, TCP, UDP або іншим мережевим протоколом, а також за рахунок ряду додаткових властивостей і методів, що спрощують створення додатків на основі цих компонентів.


Компонент UDPSocket забезпечує створення і керування з'єднанням на базі протоколу UDP, тобто на самому нижньому протокольному рівні Internet-з'єднань. За функціональністю цей компонент аналогічний ClientSocket і ServerSocket.


Перераховані вище компоненти є частиною CLX (Component Library for Cross platform) і розроблені компанією Borland з урахуванням сучасних Internet-стандартів, утворюючи фундамент для побудови Internet-додатків з використанням Kylix. Однак крім базових служб і протоколів існує широкий набір додаткових служб і завдань, можливості яких часто використовуються Internet-розробниками. До того ж далеко не завжди можливість відображення інформації через HTML-браузер є прийнятним рішенням для розробки Internet-додатків. У цьому випадку розумно використовувати Internet-інфраструктуру для обміну даними, а відображення інформації забезпечити за рахунок більш складних клієнтських програм, розроблених на Kylix. Аналогічно часто потрібно реалізувати спеціалізовану серверну логіку, яка не закладена в стандартні Web-сервери.


Для вирішення такого класу задач до складу Kylix включена бібліотека стороннього розробника – компанії Nevrona Design: Internet Direct ( Indy ).


Дана бібліотека була розроблена компанією Nevrona Design спеціально для Borland Delphi і налічує у своїй історії вже вісім версій, остання з яких увійшла до складу Kylix і нової версії Delphi. Набір компонентів цієї бібліотеки розділений на три групи: Indy Clients, Indy Servers і Indy Misc.


Як видно з назв груп, перші дві призначені для розробки Internet-додатків клієнтів і серверів, а третя містить різні допоміжні компоненти.


Більшість компонентів Indy Clients та Indy Servers є "діями у відповідь" частинами клієнт-серверних пар протоколів і служб, за винятком окремих, в основному серверних, компонентів типу TunnelMaster і TunnelSlave, і дозволяють використовувати такі протоколи, як TCP / IP, UDP, NNTP, SMTP, FTP, HTTP, а також служби ECHO, FINGER, WHOIS і т.д.


Зовнішній вигляд палітр Indy Servers і Indy Clients наведено на рис. 2 і 3.

рис.2 Палітра компонетов Indy Servers

рис.3 Палітра компонетов Indy Clients


Підкатегорія Indy Misc (рис. 4) включає в себе такі компоненти, як кодеки BASE64, UUE, Quoted Printable та інших поширених форматів обміну даними через email, кодери MD2, MD4 і MD5 – стандартів криптографії, що використовуються для зберігання паролів і електронних підписів у незворотному (не піддається розшифровці) вигляді, а також безліч інших корисних компонентів і утиліт, часто застосовуються при розробці Internet-додатків.

рис.4 Палітра компонетов Indy misc


Компоненти протокольних клієнтів і серверів можуть бути використані для розробки серверних і клієнтських Internet-додатків, спільно або замість базових компонентів ClientSocket, ServerSocket і т.д. в тих випадках, коли це виявляється зручніше з тих чи інших причин. Подібно ClientSocket, ServerSocket та інших компонентів зі складу палітри Internet, компоненти Indy не використовують архітектуру WebBroker, реалізуючи підтримку Internet-протоколів і служб на нижньому рівні безпосередньо в своєму початковому коді.


Приклади використання компонентів Internet і Indy можна знайти в каталогах% KYLIX% / Demos / Internet та% KYLIX / Demos / Indy.


Слід зазначити, що до складу Kylix не входять компоненти InternetExpress, оскільки вони використовують технологію MIDAS (інтерфейс IAppServer і т.д.) для роботи з даними, а підтримка цієї технології не включена до складу поточної версії Kylix.


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


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



Відповідаючи очікуванням багатьох розробників, нова версія Delphi містить безліч поліпшень і нововведень в різних областях, включаючи вдосконалену IDE (Integrated Development Environment – інтегровану середовище розробки), нову базову бібліотеку компонентів CLX (Component Library for Cross-platform – бібліотеку компонентів для крос-платформенний розробки) і т.д. І звичайно, до складу нової версії Delphi входить безліч нових компонентів, що підтримують передові стандарти в області розробки Internet-додатків.


Крім можливостей Delphi 5 і Kylix, тобто набору компонентів нижнього рівня (ClientSocket, ServerSocket, TcpClient, TcpServer і UDPSocket) і компонентів верхнього рівня (PageProducer, DataSetTableProducer, Query TableProducer і WebDispatcher), які були розглянуті вище, Delphi 6 включає в себе новий набір компонентів, який реалізує технологію WebSnap, компоненти WebServices, що реалізують підтримку технології SOAP (Simple Object Activation Protocol – простий протокол активації об'єктів), а також входить до складу Delphi 5 набір компонентів InternetExpress, що дозволяє створювати Internet-додатки для роботи з даними через MIDAS з передачею даних у форматі XML DataPackets (пакетів даних XML).


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


Загальні принципи розробки додатків з використанням WebSnap приблизно схожі з розробкою додатків на основі WebBroker, за винятком особливостей, перерахованих в таблиці.


Вид палітри компонентів WebSnap зображений на рис. 5. Як видно з малюнка, архітектура WebSnap дійсно підтримує набагато більше різних компонентів для створення Web-сторінок в порівнянні з WebBroker.

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


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

рис.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>

*

*