Учебное пособие (1075724), страница 39
Текст из файла (страница 39)
Возможнавыборка, добавление, обновление, удаление XML-данных.Таким образом, при переходе между звеньями не требуется преобразовыватьданные между различными моделями, так как везде используется XML.7.2.2 Проверка введенных данныхВ «классическом» веб-приложении пользователь заполняет поля в HTMLформе, и они передаются на сервер в виде набора переменных (имя=значение).Обычно основная проверка правильности введенных данных производится всерверномсценариинавеб-сервере.Иногдапроверкадополнительнопроизводится в браузере с помощью JavaScript, но поскольку поддержкаJavaScript в браузере может быть отключена, то основную проверку введенныхданных всегда рекомендуется делать в серверном сценарии.В случае XRX-приложения проверка правильности введенных данныхобычно производится на клиентской стороне при заполнении XForms-формы. Приэтом используются средства проверки данных, которые предусмотрены втехнологии XForms.
Затем введенные данные передаются на сервер в виде XMLфрагмента.Далее на сервере можно провести дополнительную проверку данных в XMLфрагменте.Дополнительная серверная проверка данных может быть полезна вследующих случаях:1. Необходимо проверить сложные зависимости между данными, которыетрудно описать с помощью xforms:bind (xforms:bind обычно описываетограничения для одного XML-элемента).2.
При проверке необходимо использовать данные из БД.Серверная проверка используется только в крайнем случае, так как врезультате серверной проверки необходимо сформировать сообщение об ошибке,заново сгенерировать XForms-форму, что достаточно трудоемко. Поэтому повозможности стараются использовать средства проверки данных, встроенные в376XForms, и только в крайнем случае используется дополнительная сервернаяпроверка.7.2.3 Детализированная архитектураДетализированная архитектура веб-приложения на основе технологии XRXприведена на следующем рисунке:Веб-серверI.Веб-браузер1.HTML2.CSS3.JavaScriptII.Веб-браузерXFormsпроцессорI.HTMLформавведенныеданныеXForms(XHTML)документXMLIII.Веб-браузер1.HTML2.CSS3.JavaScriptДанные XMLСерверныйXQueryсценарийII.XMLXMLориентированнаяСУБДСерверныйXQueryсценарийСерверныйXQueryсценарийIII.HTMLдокумент(HTMLформа, CSS,JavaScript)СерверныйXQueryсценарийXForms (XHTML)документXFormsпроцессорXMLСерверныйXQueryсценарийРис.
7.3. Детализированная архитектура веб-приложения на основе технологии XRX.377На рисунке приведены три наиболее традиционных варианта архитектурыXRX-приложения. Можно также предложить множество других вариантовархитектуры.Вариант I соответствует упрощенной XRX-технологии (без использованияXForms).Серверный XQuery-сценарий генерирует обычный HTML (или XHTML)документ, который содержит обычную HTML-форму. Введенные в форму данныеввиденабораобрабатываютсяпеременных(имя=значение)XQuery-сценарием.ТехнологияпередаютсянасервериXFormsприэтомнеиспользуется.Вариант II соответствует случаю, когда XForms-процессор реализован в видеклиентской технологии, например, встроен в браузер (или является плагином кбраузеру).Этому случаю соответствует XForms-процессор XSLTForms (встроенный вeXist), который реализован в виде XSLT-преобразования, и предположительно этопреобразование делается в браузере.
(Если XSLT-преобразование делать настороне веб-сервера в XQuery-сценарии, то это ближе к третьему вариантуархитектуры.)В случае варианта II серверный XQuery-сценарий генерирует XForms-форму(которая, как правило, является частью XHTML-документа) и отправляет этуформу XForms-процессору.Эта форма может быть статическим документом, однако в варианте IIнаиболеепривлекательнойявляетсяименновозможностьдинамическогоформирования XForms-документов.В начале работы XForms-форма может читать необходимые данные поумолчанию, а после заполнения отправляет на сервер введенные данные вформате XML.Часто для генерации XForms-формы используется один сценарий, а дляобмена данными с формой используется другой сценарий (в нашем примереприложения мы предполагаем делать именно так).378Однако можно также использовать один сценарий, который выполняет всефункции, или три сценария (генерация формы, чтение данных, запись данных).Здесь можно отметить отличие XForms-форм от классических HTML-форм.В HTML-форме нам потребовалось бы выполнить в серверном сценарии толькодва действия:1.
Генерация HTML формы вместе с данными по умолчанию, так как данныепо умолчанию сохраняются прямо в тэгах HTML.2. Обработка данных на сервере после заполнения формы, данныепередаются на сервер в виде набора переменных (имя=значение).В случае XForms требуется выполнить три действия:1. Генерация XForms-формы без данных по умолчанию. (Возможно такжесгенерировать XForms-форму с данными по умолчанию, но при работе с БД такойвариант не очень удобен.)2. После того как форма будет загружена, модель данных XForms-формызапросит с сервера данные по-умолчанию. Необходимо разработать серверныйсценарий, который вернет данные по-умолчанию для формы.3. Обработка данных на сервере после заполнения формы, данныепередаются на сервер в виде XML-фрагмента.Вариант III соответствует случаю, когда XForms-процессор реализован ввиде отдельного серверного веб-приложения.
Примерами таких процессоровявляются Orbeon Forms и betterFORM.В этом случае серверный XQuery-сценарий генерирует XForms-форму икаким-либо образом вызывает XForms-процессор как библиотеку. (В нашемпримере мы предполагаем таким образом использовать XSLTForms, вызывая всерверном сценарии XSLT-преобразование).В варианте III могут возникнуть трудности с динамической генерациейXForms-форм, так как некоторые процессоры могут открывать только статическиеXHTML-документы.XForms-процессор на основе переданной ему XForms-формы генерируетHTML-документ, содержащий HTML-форму, стили CSS, сценарии JavaScript и379передает HTML-документ в браузер. (В XSLTForms для выполнения этогодействия необходимо обработать XHTML-документ, содержащий XForms-форму,с помощью XSLT-преобразования.)Далее сгенерированный HTML-документ работает с данными так же, как вварианте II.
Как правило, для взаимодействия с сервером используется AJAXтехнология.Основная разница между вариантами II и III заключается в том, что в случаеварианта II обработка формы (и, возможно, ее преобразование в HTML, CSS,JavaScript) производится на стороне веб-браузера, а в случае варианта III настороне веб-сервера.Хочется также отметить, что в XML-ориентированных СУБД (например, вeXist) веб-сервер может быть совмещен с сервером СУБД, что показано нарисунке пунктиром.eXist устанавливается со встроенным веб-сервером Jetty, или может бытьустановлен на любой веб-сервер с поддержкой Java в виде веб-архива.
При этомфункции выполнения XQuery-сценариев и прямого доступа к данным в eXist неотделены друг от друга.Фактически eXist представляет собой сервер приложений с возможностьюразработки веб-приложений на XQuery и с возможностью хранения данных вформате XML.7.2.4 Ограничения XRX-технологииXRX не является универсальной технологией, которая могла бы полностьюзаменить «класическую» технологию разработки веб-приложений.К основным ограничениям технологии XRX можно отнести следующие:1.
Эффективна только при работе с данными XML и XML-ориентированнойБД.2. Основной проблемой существующих open-source XML-ориентированныхБД является их надежность и возможность хранения больших объемов данных.380Пока по этим параметрам их трудно сравнивать с такими СУБД, как MicrosoftSQL Server или Oracle.Однако эту проблему можно преодолеть, если использовать коммерческиеXML-ориентированные СУБД (например, Tamino).Также можно для хранения данных использовать Microsoft SQL Server илиOracle.
Эти СУБД позволяют хранить данные в формате XML (есть встроенныйтип данных), а также в них есть встроенная поддержка XQuery. Надежностьхранения в этом случае повышается, однако необходимо доработать частьприложения, которая отвечает за REST-доступ.3. Технология XForms не всегда позволяет достаточно гибко реализоватьпроверку данных в форме. Иногда для проверки данных в XForms требуетсяразрабатыватьдостаточносложныеXPath-выражения.Иногдатребуетсядополнительная проверка данных в серверном сценарии.4. Для технологии XRX пока отсутствуют интегрированные средыразработки. Для разработки XQuery-сценариев и XForms-документов можноиспользовать коммерческие XML-редакторы (Altova XMLSPY, Oxygen XML).(При разработке нашего примера мы используем Notepad++ с подсветкойсинтаксиса XML).7.3 Пример разработки веб-приложения на основе технологииXRX7.3.1 Постановка задачиНеобходимо разработать веб-приложение, которое позволяет вводить данныео компьютерах, а также формировать отчеты на основе введенных данных.7.3.2 Логическая модель данных7.3.2.1 Описание сущностейЛогическая модель данных содержит три сущности.1.
Сущность «Тип процессора».381Атрибуты:1.1. Код процессора (уникальный идентификатор).1.2. Наименование процессора (текст).2. Сущность «Компьютер».Атрибуты:2.1. Код компьютера (уникальный идентификатор).2.2. Код процессора (связь с сущностью «Тип процессора»).2.3. Наименование компьютера (текст).2.4. Объем ОП в Мб (целое число).2.5. Объем жесткого диска в Гб (целое число).2.6. Используется как сервер (логический тип).3.














