МЕСТО XML-ТЕХНОЛОГИЙ В СРЕДЕ СОВРЕМЕННЫХ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
А.Б. Боронников
В мире информационных технологий все большую популярность получают XML-техно-логии. Их использование уже перестает быть данью моде, а становится необходимостью и хорошим стилем разработки.
XML-документ, XSLT, XSD, WSDL, SVG, XHTML-документы - все они, являясь валидными XML-документами, обладают его преимуществами и свойствами. К ним относятся гибкость, расширяемость, понятность человеку и компьютеру, программе, платформонезависимость. Упомянутые свойства XML-технологий позволяют создавать на их основе всевозможные технологические и архитектурные решения. И роли, которые XML-технологии в них играют, разнообразны. Например, в электронном бизнесе и в технологии web-сервисов XML может использоваться как транспортный контейнер от приложения к приложению, от модуля к модулю. XML также может играть роль выходного формата, формата для отображения данных. Примерами формата отображения могут служить SVG, XHTML или SMIL. XML можно использовать в качестве внутреннего формата и для долгосрочного хранения информации. Также существуют такие технологии, как XSLT и XPATH, позволяющие создавать запросы и производить трансформации с данными. То есть XML-технологии способны реализовывать и логику приложений.
В статье приводится популярная архитектурная классификация уровней абстракции программного приложения. Пользуясь приведенной классификацией, проводится анализ роли XML-технологий, которую они способны выполнять на каждом из уровней абстракции. Приводятся достоинства употребления XML на каждом из них. В статье также предлагается конкретный пример приложения, в котором были использованы XML-технологии на двух уровнях абстракции сразу. Этот пример наглядно демонстрирует, как XML-технологии взаимодействуют с другими инструментами разработки и какую роль в современных приложениях они могут играть.
В [1] приводится следующее элементарное разделение уровней абстракции: «Уровень представления», «Уровень логики» (или бизнес-логики) и «Уровень хранения данных». В общем случае в любом приложении эти три абстрактных уровня присутствуют.
Зачастую в приложениях происходят преобразования данных из формата в формат при их передаче от одного уровня абстракции к другому. Таким образом, к рассматриваемым трем уровням
абстракции можно добавить два уровня-прослойки.
XML - удобный формат, в котором можно работать на уровне логики с данными. Для этого разными платформами, средами и языками поддерживаются DOM-модель и SAX-модель XML-документа, разработаны API для работы с этими моделями. Как показывает практика web-программирования, работа с XML-структурами проста и эффективна, тогда как для структурирования, преобразования и редактирования данных SQL баз данных приходится прикладывать дополнительные усилия, писать громоздкие коды. Этим выгоден XML-формат в качестве прослойки между уровнями бизнес-логики и хранения данных.
Немаловажное преимущество дает тот факт, что XML имеет ту же древовидную структуру, что и HTML. А это упрощает программистам дальнейшую работу по оформлению результирующих данных на уровне представления в виде HTML. Можно говорить уже о преимуществах XML не только как прослойки между уровнями бизнес-логики и хранения данных, но и между бизнес-логикой и уровнем представления. Поддержка DOM- и SAX-моделей в языках программирования, встроенные процессоры XSLT-трансформа-ций дают мощный инструментарий для работы с данными в формате XML.
Рассмотрим вопрос использования XML-тех-нологий на самих уровнях абстракции.
В [3] рассматривается XML как альтернативный способ хранения информации. Существуют даже хранилища данных, организованные на основе XML-документов, как базисных носителей данных (Tamino XML Server). Можно привести множество примеров, когда хранимые приложением данные не так многочисленны, чтобы ставить задачу конструирования базы данных. В таких случаях вполне удовлетворительным (а иногда и оптимальным) решением становятся XML-файлы. Преимуществами использования XML-файлов как носителей информации является то, что их легко редактировать с помощью интерфейсов, написанных на разнообразных языках программирования, например, с использованием DOM API. XML-документы могут редактироваться и в текстовом или специализированном редакторе или с использованием приложений, для этого предназначенных. Примером таких приложений может послужить InfoPath, расширение MS Office 2003.
Что касается уровня представления данных, то достаточно вспомнить многообразные определе-
ния XML-документа, в большинстве которых говорится, что он одинаково легок как для обработки компьютером, так и для чтения человеком. Если открыть XML-документ с помощью Internet Explorer (который умеет отображать XML-данные в стандартной форме), то получится удобочитаемая древовидная структура. В случае же с технологией web-сервисов XML-документ зачастую является конечным результатом работы приложения. Таким образом, он автоматически воплощает собой уровень представления данных.
Может ли XML замещать собой уровень бизнес-логики? XSLT-преобразование является настолько мощным инструментом работы с XML-данными, что зачастую не требует никакого дополнительного программирования для завершения обработки информации на уровне бизнес-логики. То есть достаточно применить к XML-документу XSLT-трансформацию, чтобы данные приняли вид, необходимый для отображения. Не прекращаются работы по внедрению функций того или иного языка внутрь XSLT-преобразования. Так, например, можно вставлять в XSLT-преобразова-ние функции, написанные на PHP. Внедрение в XSLT-преобразование функций, написанных на разнообразных языках, может вполне довершить процесс замещения XML-технологиями уровня бизнес-логики.
Естественно, использование XML-технологий - не самоцель. Именно поэтому с появлением и развитием XML-технологий ни один из инструментов разработчиков программных систем не потерял своей актуальности, будь то языки программирования или базы данных. С появлением XML перед языками программирования, базами данных и другими технологиями стали ставиться новые, актуальные для изменившейся сферы информационных технологий вопросы, задачи.
Предлагается к рассмотрению пример использования XML-технологий. Задача, решаемая в данном примере достаточно тривиальна. Незаурядным данный пример делает как раз использование XML-технологий.
В рассматриваемом примере стояла задача разработки модуля фотогалереи. Фотогалерея должна была содержать фотографии, разделенные по тематическим разделам. Так, в фотогалерее сайта туристической компании предполагались такие разделы, как «Охота», «Рыбалка», «Ягоды-грибы» и прочее. Каждая фотография в разделе также могла иметь подпись, поясняющую ее сюжет. Например, «Рыболов Исаев С. поймал редкого по величине судака».
Необходимо было предоставить администратору сайта возможность добавлять новые фотографии в галерею, снабжать их надписями, перемещать их в тот или иной тематический раздел фотогалереи, добавлять, удалять и редактировать сами разделы галереи. В задачу, естественно, вхо-
дили сценарии отображения фотографий в фотогалерее по разделам и возможность просмотра всех фотографий (без учета принадлежности к конкретному разделу) сплошной лентой. Также нужно было учесть механизм разделения ленты фотографий на несколько страниц, если их в просматриваемом тематическом разделе будет больше определенного числа. В данной системе на одной странице размещалось не более 6 фотографий (в два столбика). Для перехода к следующей шестерке фотографий нужно было перейти на следующую страницу ленты фотографий, щелкнув на номер соответствующей страницы.
База данных значительно увеличила бы трудоемкость разработки модели данных и уровня бизнес-логики, которая бы реализовывала работу по извлечению и редактированию информации о фотографиях и разделах в галерее. Было решено для хранения информации о фотогалерее использовать один XML-файл «images_and_groups.xml». Сами фотографии галереи хранились под своими номерами в специально отведенном для этого каталоге на сервере сайта. Чтобы отобразить конкретную фотографию, нужно было прочитать информацию о ней в XML-файле, в том числе ее идентификационный номер, прилагающуюся к ней надпись, принадлежность к разделу галереи. По идентификационному номеру проводилась однозначная связь с картинкой, лежащей под этим номером в упомянутом каталоге сервера.
Уровень бизнес-логики в данной задаче подразделялся на две задачи:
1) автоматическая генерация отображаемых страниц с фотографиями, управляющих кнопок для перехода на другие страницы, ссылок на другие разделы галереи;
2) административный интерфейс для редактирования фотогалереи.
Для второй задачи был использован язык PHP 5 и встроенные в него функции для работы с DOM2 API, а также несколько несложных HTML-шаблонов, реализующих необходимые формы для редактирования структуры галереи и ее наполнения. Из-за существования в PHP 5 встроенных функций для DOM2 API реализация интерфейса администрирования галереи заняла немного времени, а программный код получился коротким и простым.
Первая часть уровня бизнес-логики (автоматическая генерация отображаемого контента галереи) была реализована с помощью XSLT-пре-образования документа "images_and_groups.xml". В итоге был получен законченный независимый модуль, инкапсулирующий в себе все функции отображения фотогалереи на сайте. Управляется этот модуль с помощью параметров, задающихся в XSLT. Эта трансформация самостоятельно генерирует список разделов галереи в виде набора ссылок на них, а также кнопки перехода на пер-
вую страницу, на предыдущую страницу, на следующую, на последнюю страницу, а также на две ближайшие (соседствующие) к текущей страницы фотогалереи.
Скрипт на PHP свелся в итоге к передаче параметров в XSLT-трансформацию и проведению самой трансформации с последующим выводом полученного HTML-документа. При переносе в другой проект с другим языком программирования разработчикам оставалось написать несколько строк кода, воспроизводящих эти операции.
Пример файла "images_and_groups.xml" и XSLT-трансформация доступны по адресу: www.mologatur.ru/examples/.
Как уже было сказано, данная задача сама по себе тривиальна. Ее можно было решить другими средствами, например, с помощью базы данных и языка PHP. Однако использование XML обеспечило некоторые неоспоримые преимущества. Во-первых, замена БД на XML-файл значительно сократила время и трудоемкость построения абстрактного уровня хранения данных. Во-вторых, из-за того, что PHP 5 (как и многие другие популярные языки) предоставляет готовые функции для работы с DOM2 API, сократилась и трудоемкость разработки модуля администрирования фотогалереи. А также была обеспечена возможность альтернативного администрирования фотогалереи (редактирование XML-документа фотогалереи с помощью текстового редактора, InfoPath и других средств). Функции автоматической генерации контента фотогалереи удалось полностью инкапсулировать в одной XSLT-трансформации. Если вспомнить, что XSLT-документ является валидным XML-документом, то нетрудно понять, какие плюсы это дает. Во-первых, это дает возможность перехода с одной платформы на другую (от Windows, например, к Linux). Более того, XSLT-
трансформации, DOM API и другие полезные функции имеются во многих популярных языках программирования. А это значит, что данный модуль фотогалерей можно с небольшими доработками легко перенести с PHP 5 на J2EE.
Как видно, в данном примере XML и XSLT выступают сразу на двух уровнях абстракции - на уровне хранения данных и уровне бизнес-логики. В обоих случаях это сделало систему более гибкой, универсальной и простой в разработке.
Итак, подведем итоги. XML-технологии -универсальный инструмент. Нельзя однозначно определять им место в сфере информационных технологий. Пример, приведенный в данной статье, наглядно демонстрирует, что XML-техноло-гии можно и нужно использовать во многих случаях, на разных уровнях абстракции, в качестве всевозможных функциональных модулей в разных задачах. Использование XML за счет своих преимуществ (гибкость, платформонезависимость, понятность человеку и программе) позволит разработчику сделать приложение более простым и универсальным с меньшими затратами. Однако важно отметить и тот факт, что, живо внедряясь, проникая во все новые и новые области сферы информационных технологий, XML-технологии не замещают ни одну из уже имеющихся технологий, инструментов разработки. XML лишь предоставляет новые возможности. А новые возможности влекут за собой и новые потребности, возникновение новых задач, новых проблем, новых перспектив.
Список литературы
1. Аргерих Л.И. др. Профессиональное PHP программирование. 2 изд. - СПб.: Символ-Плюс, 2003.
2. Грофф Дж., Вайнберг П. Энциклопедия SQL. 3 изд. -СПб.: Питер, 2003.
3. Старыгин А.А. XML: разработка web-приложений. -СПб.: БХВ-Петербург, 2003.
ИСПОЛЬЗОВАНИЕ ГРАФИЧЕСКОЙ ИНФОРМАЦИИ В ХРАНИЛИЩАХ ДАННЫХ
С.В. Семенов, С.А. Степанов
Чертежи, по своей сути, являются языками описания будущего изделия. При проектировании конструктор передает информацию об изделии при помощи графических образов: размеры, взаимное расположение, геометрия деталей и т. п. Основная масса информации об изделии закладывается конструктором, так как именно он с помощью графических средств делает невидимое изделие (функциональную модель) видимым (создает структурную модель) в виде чертежей.
Конструирование - это непрерывно расширяющийся процесс создания информации об изделии (эскизный, технический, рабочий проект). Изготовление изделия - это процесс взаимнооднозначного отображения изделия в виде чертежей в материальный вид. Добавление информации после изготовления идет за счет детализации информации, связанной с эксплуатацией изделия.
Можно сказать, что чертежи - это БД о проектируемом и изготавливаемом изделии.