СТАТЬЯ | 13.08.01 |
Разработка Internet-приложений с использованием Borland Delphi и Kylix
© Никита Попов
КомпьютерПресс #6 2001
Материал любезно предоставлен редакцией КомпьютерПресс,
ведущего российского компьютерного журнала
Средства разработки 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-страниц. Дополнительную информацию об этом стандарте можно получить на странице этой организации по адресу 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-технологии, многократно возросли. Надеемся, что данный обзор поможет вам разобраться в новых возможностях указанных продуктов.
Дополнительную информацию Вы можете получить в компании Interface Ltd.
Отправить ссылку на страницу по e-mail
Обсудить на форуме Inprise/Borland
Interface Ltd. Отправить E-Mail http://www.interface.ru |
|
Ваши
замечания и предложения отправляйте
автору По техническим вопросам обращайтесь к вебмастеру Документ опубликован: 13.08.01 |