АДАПТАЦИЯ ТЕХНОЛОГИИ WEB СЕРВИСОВ ДЛЯ САЙТОВ И

advertisement
АДАПТАЦИЯ ТЕХНОЛОГИИ WEB СЕРВИСОВ ДЛЯ САЙТОВ И
ИНФОРМАЦИОННЫХ ПОРТАЛОВ, РАЗРАБАТЫВАЕМЫХ НА UNIX ПЛАТФОРМЕ
О.В. Шаройко, А.Н. Березовский
Ростовский государственный университет, г.Ростов-на-Дону
В докладе рассматривается разработанная авторами технология, которая позволяет, сохранив все
преимущества XML Web сервисов, адаптировать их к современным условиям размещения сайтов и порталов.
Данная технология ориентируется на размещение сайтов на платформе UNIX.
Современные сайты давно перестали быть статическими и в том или ином виде используют компоненты,
создающие HTML код в процессе исполнения. Такие компоненты могут работать как в режиме offline,
периодически изменяя содержимое сайта, так и в режиме on-line, когда необходимый HTML код генерируется
непосредственно во время обработки HTTP запроса. Результатом развития этого направления стало появление
новых языков программирования, ориентированных непосредственно на генерацию HTML кода и разработка
специальных библиотек для существующих языков. Такие языки позволили создавать динамические HTML
страницы, которые включали в себя HTML разметку для клиентского браузера и серверный код для формирования
динамических данных.
В виду того, что для современных сайтов характерна относительно частая смена внешнего облика, одна из
основных проблем сопровождения сайтов – это проблема отделения кода динамических компонент от оформления
сайта. Попытки решить эту проблему не прекращаются с момента появления динамических страниц. Известно
несколько попыток создать гибкую систему, позволяющую помимо прочего разделить функциональность и дизайн
сайта. Однако на наш взгляд настоящий прогресс в этой области возможен только с использованием языка XML
для описания данных и технологии XSLT для определения правил их отображения. С учетом выше сказанного
логично выбрать в качестве инструментария построения сайтов один из скриптовых языков, имеющий библиотеки
для генерации HTML кода и поддерживающий стандарты XML и XSL. В качестве примера таких языков можно
назвать PHP, Perl, Ruby, Python.
Другая проблема, встающая перед разработчиками, это проблема интеграции сайтов в уже существующую
информационную среду. Здесь на первое место выходят вопросы совместимости динамических компонент с
прикладным ПО. Ключевую роль в обеспечении такой совместимости должно сыграть middleware, такое как,
например, CORBA или COM. Для UNIX систем стандартом de-facto для middleware стала технология CORBA.
Однако, к большому сожалению, уровень поддержки технологии CORBA в скриптовых языках оставляет желать
лучшего. Что, в принципе, не удивительно, так как разработчики CORBA ориентируются в первую очередь на
такие языки как C++ и Java. Таким образом, проблема интеграции сайтов в существующую информационную среду
остается открытой. По крайней мере для сайтов, разрабатываемых на UNIX платформе.
Еще один немаловажный аспект построения сайтов – это необходимость совместного использования
компонент несколькими сайтами, в том числе и сайтами разных разработчиков. Красивое и гибкое решение этой
проблемы, допускающее легкое отделение кода компонент от оформления сайта предлагает технология Web
сервисов. Сайты, разработанные с использованием этой технологии, строятся по следующей схеме:
Наиболее простой и естественный способ реализации web сервисов в системе UNIX – это использование
HTTP сервера для приема и передачи XML сообщений. При таком подходе у разработчика нет необходимости
самостоятельно реализовывать транспортный уровень сервисов и он может целиком сосредоточиться на основной
их функциональности. В этом случае динамические компоненты удобно реализовать на одном из скриптовых
языков. В виду того, что результат работы компоненты выдается на XML проблем с пересечением дизайна и
функциональности при таком подходе не возникает. Взаимодействие различных компонент этой схемы таково:
Такая схема имеет ряд недостатков. Во-первых, если учесть, что сайты сопровождаемые одной командой
разработчиков обычно размещаются на одном компьютере, то становится очевиден недостаток в области
производительности, связанный с необходимостью выполнения дополнительных запросов по протоколу HTTP для
обращения к динамическим компонентам. Во-вторых при такой схеме сохраняется проблема интеграции в
существующую информационную систему, в виду плохой поддержки CORBA в скриптовых языках. В-третьих,
такой подход не дает возможности использовать в компонентах несколько потоков исполнения и вообще не дает
никаких возможностей изменить схему обработки запросов, так как код этой обработки находится внутри HTTP
сервера. В виду перечисленных недостатков построение web сервисов по такой технологии нельзя признать
приемлемым.
В результате попытки адаптировать Web сервисы к задаче построения сайтов на UNIX платформах удалось
получить технологию, сохраняющую преимущества XML Web сервисов в области отделения кода динамических
компонент от оформления сайта и совместного использования компонент. Разработанная технология не требует
3
дополнительных HTTP запросов для обращения к компонентам, находящимся на одном компьютере и позволяет
легко интегрировать компоненты в существующую информационную среду.
Адаптированная технология Web сервисов предполагает следующую схему построения сайтов:
Рис. 1.
Рис. 2.
Данная технология предполагает существование двух типов компонент. Деление на типы осуществляется в
зависимости от того, насколько часто происходят обращения к компоненте и насколько быстро она должны
отвечать на поступивший запрос. Компоненты, к которым редко обращаются и от которых не требуется быстрой
реакции реализуются как обычные программы, получающие через стандартный входной поток XML запрос и
выдающие на стандартный выходной поток XML ответ. Компоненты, от которых требуется большая доступность
реализуются как постоянно работающие демоны, взаимодействие с которыми осуществляется через unix сокет.
Выбор таких средств взаимодействия обусловлен их стандартностью и наличием поддержки в большинстве языков,
использующихся при построении сайтов.
Предлагаемый подход к реализации Web
сервисов позволил сохранить все их преимущества.
Действительно,
запросы
и результаты
работы
передаются в формате XML, поэтому в самих сервисах
нет никакой привязки к дизайну сайта. Вопросы
совместного использования компонент тоже легко
решаются
путем
применения
простейшего
преобразования HTTP запроса в обращение к программе
или unix сокету. Причем, легко избежать потерь при
преобразовании, если реализовать преобразователь как
fastcgi приложение для HTTP сервера.
С другой стороны, проблема существования
Рис. 3
дополнительного запроса в данной схеме решена.
Проблема интеграции тоже более не стоит, так как
компонента может быть написана на любом языке, в том числе и поддерживающем CORBA. С управлением
политиками обработки запросов тоже не возникает сложностей: любая из известных политик может быть
реализована в соответствующей компоненте-демоне. Таким образом разработанная технология сохраняет все
преимущества Web сервисов и, в то же время, лишена ряда недостатков, так как учитывает особенности
размещения современных сайтов на unix платформе.
Требовать от разработчиков всякий раз заново реализовывать код работы с unix сокетами и код разбора
XML конечно же нелепо. Поэтому в рамках данного проекта разработаны: клиентский код для обращения к
динамическим компонентам на наиболее популярных языках построения сайтов (PHP, Perl, python); библиотека на
C++ для разбора XML сообщения и построения соответствующего ему дерева, а также для выполнения обратного
преобразования; многопоточный процесс демон, позволяющий подключать plugin модули, реализующие
функциональность компонент.
Клиентский код разработан так, чтобы максимально упростить обращение к динамическим компонентам и,
в то же время позволить легко выбирать тип обращения. На данный момент поддерживаются обращения по
протоколу HTTP, обращения к unix сокету и обращения к программе.
Библиотека работы с XML позволяет при реализации конкретной компоненты работать не
непосредственно с XML документом, а с некоторой структурой, содержащей сами данные. Такой подход позволяет
упростить процесс написания компонент.
Многопоточный демон сводит написание компоненты к написанию plugin модуля, который может состоять
из единственной функции, выполняющей полезную работу. Все остальные действия, связанные с чтением запроса
4
из unix сокета, разбором XML документа и постороением дерева, а также обратным процессом генерации XML
документа и его отправки клиенту выполняет сам демон, причем использование нескольких потоков исполнения
позволяет сделать этот процесс максимально эффективным.
Данная технология опробована на нескольких сайтах и показала себя не только жизнеспособной но и
весьма удачной.
5
Download