Введение
У этого руководства две цели – продемонстрировать на конкретном примере принципы Web- разработки на основе Ajax/Web 2.0, а также подчеркнуть сильные стороны DB2 9 pureXML™. Я помнил об этом, когда в связи с проведением конференции Information On Demand 2006 Global Conference писал приложение Information On Demand 2006 Scheduler. Это простая программа для планирования своих мероприятий в рамках конференции. Благодаря подходу к Web-программированию, основанному на Ajax - Asynchronous Javascript and XML – работа с программой для пользователя максимально интуитивна и безболезненна. Дополнительное преимущество программа получает благодаря быстродействию pureXML IBM DB2 9.
На рисунке 1 показано приложение IOD Planner. Во избежание задержек при обновлении все загрузки осуществляются в фоновом режиме, а поля форм, диалоговые окна и выпадающие меню созданы на основе функционально насыщенных виджетов (widgets).
Рисунок 1. IOD Planner 2006
Вам пригодится знакомство с разработкой Web-приложений и БД. О DB2 9 великолепно рассказано в руководстве "Руководство по DB2 XML" (EN) (developerWorks, июнь 2006), а о XQuery - в "Запрашивайте данные DB2 XML с помощью XQuery" (developerWorks, апрель 2006).
Для развертывания исходных кодов вам понадобится ОС Windows или Linux, с установленным Zend Core для IBM (см. Ресурсы). Zend Core связывает вместе сервер данных DB2 9 Express-C, Web-сервер Apache2, язык сценариев PHP, расширения DB2 для PHP и мощную консоль администрирования.
Рисунок 2. Традиционная Web-модель и модель Ajax
Ключевым принципом философии Ajax является избежание загрузок новых Web-страниц. Вместо этого в фоновом режиме в уже существующую страницу загружается новое содержимое. Благодаря этому не приходится заново загружать базовую инфраструктуру и ждать, пока браузер перерисует те же навигацию и элементы дизайна. Ваши пользователи никогда не столкнутся с пустым загружающимся окном. В результате получается быстро работающее приложение с быстрым откликом.
Запросы к серверу посылаются при помощи объекта XMLHTTPRequest, а ответы асинхронно обрабатываются по мере их поступления. Несмотря на название, они не обязательно должны быть в XML, а могут быть в любом текстовом формате, от Javascript (JSON) до CSV или предварительно сгенерированного HTML. Мы выбираем последний – сгенерированный на сервере HTML.
Среди основных Web-приложений, основанных на технологии Ajax, следует отметить Bloglines, Del.icio.us, Digg, Flickr, Google Maps, Gmail и Reddit.
Почему именно Dojo Javascript Framework?
За последние два года Javascript набрал силу как язык и как платформа. Этот язык не имеет единой официальной библиотеки, оболочки и API, потому появилось несколько поддержанных отраслевым сообществом альтернатив с открытым исходным кодом. Они легко работают с Ajax, поддерживают обогащённые объекты, структуры данных, вспомогательные функции, эффекты и помощь при планировке. Dojo и является одним из этих инструментальных наборов.
Dojo – это программная инфраструктура Javascript с открытым кодом, поддержанная IBM, Sun, AOL, JotSpot и прочие. Ajax for IBM WebSphere® включает Dojo 0.4.1. Dojo не связан с какими-либо конкретными серверными инструментами и может использоваться вместе с PHP, сервлетами Java, .NET или другими серверными компонентами. Существует целое сообщество активных пользователей и разработчиков, которые ежедневно создают сотни сообщений в рассылках, посвященных Dojo.
Dojo имеет модульную структуру, что позволяет наращивать функциональность по мере изменения потребностей.
Рисунок 3. Использование оболочек для Javascript (Ajaxian.com, 2006)
Как видно из диаграммы на рисунке 3, Dojo вступил в игру недавно. При этом его популярность быстро растёт. В прошлом году больше всего симпатий завоевали Dojo вместе с Script.aculo.us. При этом у Dojo более надежная архитектура и шире отраслевая поддержка.
Web-приложению необходима реляционная серверная СУБД. Мы выбрали DB2 Express-C – это свободно распространяемая бесплатная версия сервера данных DB2 9. В неё изначально встроена поддержка XML.
Рисунок 4. Исторически сложившиеся пути комбинирования XML с реляционной БД
Как правило, любое достаточно крупное корпоративное приложение использует XML. Нередко XML является и наиболее естественной формой для хранения данных. Это значит, что XML или хранится в файлах, которые целиком сохраняются в CLOB-объектах БД, или измельчается на отдельные столбцы.
Однако, сочетание отдельных файлов XML и реляционной БД плохо поддается масштабированию; XML в CLOB-объектах работает медленно, и к нему неудобно организовывать запросы; разделение же XML на отдельные реляционные столбцы означает необходимость постоянной синхронизации реляционных схем и XML-схем – малейшее изменение структуры XML ведёт к забирающей немало ресурсов проверке всей БД.
Рисунок 5. Встроенная поддержка XML в DB2
Эта проблема решена в DB2 9. Встроенный в него тип XML-данных легко обрабатывается запросами на SQL и соответствующего стандартам W3C XQuery. Он масштабируется вместе с БД, и оптимизация XML работает здесь лучше, чем при использовании CLOB-объектов. Кроме того, XML и реляционные схемы хранятся отдельно – поэтому при изменении структуры XML не возникает необходимости проведения полного регрессионного тестирования.
Рисунок 6. XQuery и DB2
XQuery - стандарт W3C для запрашивания данных из файлов XML. Операторы WHERE в XQuery и в SQL одинаковы, а цикл FOR интуитивно понятен всем программистам. Код XQuery более дружественный, чем эквивалентный ему XSL, он быстрее создаётся и проще читается.
Когда речь идёт об XQuery, часто упоминается FLWOR ("flower"). Речь идёт об основе XQuery, выражениях FOR, LET,
WHERE, ORDER BY и RETURN.
В статье "Запрашивайте данные DB2 XML с помощью XQuery" вы найдёте великолепное введение в данную тему.
PHP – популярный, легкий в изучении язык для написания серверных сценариев. Его проще изучить, нежели сервлеты Java или .NET, в то время как опытный профессионал выжмет из него ничуть не меньше возможностей. Будучи интерпретируемым языком, он очень удобен для последовательной разработки – при изменениях в коде нет нужды в перекомпиляции, а результаты изменений видны в режиме реального времени.
Само собой, вам необходимо разделить среды для разработки, тестирования и использования. Не стоит редактировать работающее приложение на ходу.
Мы выбираем XSL за его мощные преобразовательные способности. Казалось бы, лучше уж всё делать через XQuery. Он тоже предлагает немало возможностей, а код на нём будет короче и выразительнее. XQuery – удобный язык без побочных эффектов, созданный для преобразования одной структуры XML в другую. Мы и без того, чтобы создать корректный документ XML, пользуемся XQuery, так что можем вообще обойтись без последующего преобразования.