Разработка коллажей

on

Web-коллажи — это составные Web-приложения, разработанные с использованием контента и сервисов, имеющихся в Internet. Несмотря на то что последние два года интерес к коллажам быстро растет, полнофункциональных платформ и средств их разработки нет, и в большинстве случаев создание нового приложения требует серьезного программирования, выполняемого вручную. В статье предлагается обзор существующих инструментальных средств и платформ, а также анализ тенденций в области разработки коллажей. Web-коллажи создаются путем объединения контента, описаний или функциональности приложений, получаемых из разнородных источников в WWW . Коллажи позволяют объединить все эти источники для создания новых приложений или сервисов. Контент и элементы внешнего представления, как правило, предоставляются в виде потоков RSS или Atom, в различных XML-форматах, в виде HTML, Shock-Wave Flash (SWF) и др. Открытые интерфейсы прикладного программирования (на JavaScript, например) обычно формируют функциональность приложений. Контент, функциональность и внешнее представление связываются вместе в браузере с помощью серверных языков скриптов, таких как Hypertext Preprocessor (PHP) или Ruby, либо средствами традиционных языков, таких как Java или C#. «Коллаж» (mashup) становится одним из самых популярных терминов в области Web-приложений. Многие организации спешат предложить свои средства их поддержки — или называют уже существующие интеграционные решения инструментами для создания коллажей. При такой путанице трудно различать коллажи и традиционные интеграционные решения, поэтому попытаемся внести определенную ясность в отношении того: • ·что собой представляет коллаж (а что им не является); • чем коллаж похож, а чем отличается от традиционных форм интеграции, таких как интеграция на уровне приложений, данных или представления; • каковы основные характеристики и параметры, используемые всеми подходами к созданию коллажей; как соотносятся друг с другом существующие инструменты по этим характеристикам и параметрам. Рассмотрим ряд популярных инструментальных средств создания коллажей и покажем, как они поддерживают разработку «функционально богатых Internet-приложений» (Rich Internet Application). Наша цель состоит не в том, чтобы установить, какие виды поддержки существуют для разработки коллажей, а в том, чтобы выявить новые характеристики и параметры, по которым можно сравнивать и анализировать появляющиеся инструменты и подходы. ПОДХОДЫ К РАЗРАБОТКЕ КОЛЛАЖЕЙ Разработка коллажей отличается от создания традиционных компонентных приложений главным образом тем, что коллажи, как правило, служат для конкретной «ситуационной» (краткосрочной) цели и формируются при помощи новейших, простых в использовании Web-технологий — таких как Web-сервисы на базе Representational State Transfer или потоки RSS/Atom. В силу этого Web представляет собой естественную среду для коллажей. Приложение HousingMaps (www. housingmaps.com) на рисунке — пример удачного коллажа, увязывающего каталог жилых помещений из Craigslist с картой из Google Maps и предназначенного для тех, кто переезжает из одного города в другой и ищет жилье. Как правило, когда люди просматривают список жилых помещений, адрес дома им ни о чем не говорит, если они не знакомы с новой местностью. HousingMaps предоставляет пользователям список домов и указывает их местонахождение, а также дает описание жилья и показывает его на карте при выборе соответствующего объекта из списка. Мы могли бы вручную создать такое приложение-коллаж с помощью традиционных технологий Web-программирования, однако специализированные средства для создания коллажей существенно упрощают задачу, позволяя составлять свои собственные коллажи даже конечным пользователям. Создание коллажей вручную В общем случае интеграция данных и приложений предприятия в согласованное и решающее определенную задачу приложение требует навыков программирования и глубокого знания схем и семантики источников данных или соглашений бизнес-протоколов обмена сообщениями. К счастью, новые технологии, в частности, сервисы AJAX и RESTful, и микроформаты, подобные RSS и Atom, упрощают разработку коллажей. Кроме того, наличие изначально подготовленных компонентов существенно помогает при интеграции контента, логики приложений и пользовательских интерфейсов. Тем не менее создание коллажей вручную по-прежнему остается прерогативой опытных разработчиков. Предположим, никаких специальных средств разработки нет. Что в этом случае нужно сделать, чтобы вручную создать приложение, подобное HousingMaps? Прежде всего, ознакомиться с двумя приложениями-источниками (Craigslist и Google Maps) и определить, как извлекать данные с обоих сайтов. Если Google Maps предоставляет общедоступные JavaScript API, то Craigslist передает свои списки через RSS, и для извлечения данных о жилых помещениях и адресах необходимо проанализировать и интерпретировать поток RSS, получаемый из Craigslist. Чтобы сконфигурировать маркеры, появляющиеся по щелчку мыши, над которыми во всплывающем окне выводится информация о жилом помещении, необходимо использовать Google Maps JavaScript API. Для того чтобы такие всплывающие окна появлялись автоматически, требуется специальная функция JavaScript, которая фиксирует выбор жилого помещения и реагирует на это вызовом Google Maps API для выбора соответствующего маркера. Несмотря на то что карты Google Maps имеют свой собственный пользовательский интерфейс, пользователи смогут выбирать свойства, оформленные в Craigslist, только в том случае, если заполнить и должным образом отформатировать соответствующую таблицу. Наконец, необходимо расположить два компонента должным образом, чтобы сформировать пользовательский интерфейс композитного приложения. Столь сложные и отнимающие массу времени задачи не позволяют рядовым пользователям программировать собственные коллажи. Разработка коллажей с помощью инструментов Чтобы ускорить процесс разработки коллажей, но при этом дать возможность даже неопытным пользователям составлять коллажи из Web-приложений, предложено множество оболочек и инструментальных средств, реализующих разнообразные подходы к созданию композиций. Детальное рассмотрение данных решений поможет нам выяснить, какие вопросы остаются пока открытыми и с какими трудностями сталкиваются исследователи, занимающиеся проблемой создания коллажей. Мы выбрали наиболее характерные подходы к реализации инструментальных средств создания коллажей, ориентированных на конечных пользователей. Несколько альтернативных и дополняющих подходов приводятся во врезке «Работа с повторно используемыми компонентами». Yahoo Pipes. Yahoo Pipes (pipes.yahoo. com) позволяет объединять потоки данных для создания коллажей данных с помощью визуального редактора. «Каналом» называют конвейер обработки данных, поступающих из одного или нескольких источников (например, потоки RSS/Atom или источники XML), с использованием наборов взаимосвязанных операторов, выполняющих определенную задачу обработки. Сюда относятся операторы для манипулирования потоками данных (например, сортировка и фильтрация) и операторы для реализации циклов, регулярных выражений или счетчиков. Канал также поддерживает более совершенные возможности, такие как извлечение данных о местонахождении (например, географических координат, выявленных и преобразованных из информации о местонахождении, найденной в текстовых фрагментах) или выделение терминов (например, ключевых слов). Yahoo Pipes служит для того, чтобы предоставить пользователям возможности создавать конвейеры обработки данных, которые фильтруют, преобразуют, дополняют и объединяют потоки данных и снова представляют их в виде потоков RSS. Посмотрим, как Yahoo Pipes может помочь в разработке примера HousingMaps. Поскольку Pipes не предоставляет пользовательских интерфейсов, а выдает поток RSS, мы не можем явно реализовать пользовательский интерфейс из рис. 1. Вместо этого мы используем Pipes для обработки потока Craigslist и определения информации о местонахождении («геокодов») при помощи соответствующего экстрактора Pipes. Тогда мы сможем воспользоваться информацией, описывающей местонахождение, чтобы дополнить поток Craigslist ссылкой, которая позволит отображать адрес жилого помещения на карте, путем передачи геокодов в Google Maps. Google Mashup Editor. GME (editor. googlemashups.com) предоставляет среду для разработки коллажей на базе шаблонов, предлагая набор стандартных модулей, с помощью которых пользователи могут инкапсулировать и компоновать внешние данные. Так, модуль list представляет поток RSS/Atom в виде списка, а модуль item представляет отдельный элемент в потоке. Модули могут инициировать предопределенные события, которые другие модули способны перехватывать и затем выполнять соответствующие действия. Создание коллажей предусматривает разработку шаблонов пользовательского интерфейса, содержащих управляющие XML-теги и элементы компоновки HTML/CSS вместе со встроенным кодом JavaScript. Во время исполнения GME заполняет шаблоны пользовательского интерфейса и представляет их в виде Web-страниц. При реализации приложения HousingMaps мы могли бы интегрировать поток Craigslist с помощью модуля list и использовать модуль item для того, чтобы показать детали описания конкретного жилого помещения. Модуль map из GME изначально поддерживает Google Maps, и когда пользователь указывает на жилое помещение и щелкает клавишей мыши в модуле Craigslist, этот модуль инициирует событие «выбрать», которое модуль map может перехватывать и после этого выводить всплывающее окно над маркером, отображая в нем информацию о выбранном жилом помещении. Нам следует интегрировать модуль Craigslist и Google Maps в шаблон пользовательского интерфейса, который определяет компоновку приложения коллажа. Microsoft Popfly. Popfly (www.popfly. ms) предлагает визуальную среду на базе компонентов для разработки коллажей. В Popfly повторно используемые компоненты или блоки могут действовать как посредники между внешними сервисами (например, Web-сервисами ) или реализовывать полезную фу кцию на JavaScript (скажем, вычислять площадь круга данного радиуса). Блоки имеют операции с входными и выходными параметрами, которые указываются в специальном XML-дескрипторе. Блок также может действовать как поверхность для вывода изображения, а именно, как часть пользовательского интерфейса, которая извлекает данные из других блоков и отображает их, давая пользователю возможность взаимодействовать с ними и позволяя разработчику компоновать приложение коллажа. Чтобы создать приложение HousingMaps, нам необходимы три блока: блок потока RSS для потока Craigslist, блок map и блок table. Если мы используем Microsoft Virtual Earth (microsoft.com/virtualearth) вместо Google Maps, то все эти три блока уже имеются, и нужно поместить их на поверхность проектирования коллажа, а затем связать выходной параметр операции getItems из блока RSS с двумя блоками вывода изображения для RSS и Virtual Earth. Возможно, что для того, чтобы корректным образом сконфигурировать первоначальный набор маркеров, блок RSS придется дополнить подходящей операцией JavaScript. Intel Mash Maker. Mash Maker (mashmaker.intel.com) предоставляет среду для интеграции данных из аннотированных Web-страниц, базирующуюся на специальном подключаемом модуле для браузера. Вместо того чтобы использовать в качестве входных данных информацию из структурированных источников данных, таких как RSS или Atom, Mash Maker дает пользователям возможность аннотировать структуру Web-страниц при просмот ре и использовать такие аннотации для вырезки данных из аннотированных страниц. Опытные пользователи могут с помощью интегрированного редактора структур вводить выражения XPath посредством DOM Inspector (дополнительный модуль для браузера Firefox) в FireBug. Составление коллажей с помощью Mash Maker выполняется путем копирования и вставки в двух режимах слияния контента: слияние целых страниц, при котором пользователь вставляет контент одной страницы как заголовок в другую; поэлементное слияние, при котором пользователь объединяет контент из двух страниц на уровне строк с учетом дополнительных аннотаций пользователя. Для слияния более чем двух страниц можно использовать оба метода. В случае с HousingMaps мы сначала аннотируем структуру соответствующей страницы Craigslist, поскольку Mash Maker работает с обычным контентом HTML, а не с RSS. Затем объединяем страницу Craigslist со страницей Google Maps, используя механизм копирования и вставки. Точнее, мы применяем поэлементное слияние, поскольку выводим каждый элемент со страницы Craigslist как отдельный маркер на карте. Quick and Easily Done Wiki. QedWiki (services.alphaworks.ibm.com/qedwiki )- средство от IBM для «автора коллажей» на базе вики, выполняемое в браузере клиента и обеспечивающее доступ к IBM Mashup Hub (services.alphaworks. ibm.com/mashuphub). Mashup Hub поддерживает создание потоков данных и виджетов пользовательского интерфейса и включает в себя средство Data Mashup Fabric for Intranet Applications (DaMIA) для сбора данных и работы с ними . ^стема позволяет редактировать и просматривать коллажи, а также обмениваться ими. Коллажи составляются из виджетов на базе JavaScript или PHP, структура которых определяет поведение коллажа. Виджеты представляют собой компоненты приложения и могут иметь или не иметь свой собственный пользовательский интерфейс. Для того чтобы собрать коллаж, пользователь выбирает компоновку страницы (шаблон HTML), а затем буксирует виджеты на сетку страницы и конфигурирует их в интерактивном режиме. Чтобы создать приложение HousingMaps с помощью QedWiki, сначала мы создаем новую страницу wiki и выбираем «компоновочную сетку» (grid layout). В нашем случае мы выбираем компоновку, которая позволяет разместить Google Maps и предложения жилых помещений рядом друг с другом (в двух колонках). Затем ищем виджет GoogleMap в палитре виджетов, буксируем его на компоновочную сетку и помещаем в левую колонку. Мы используем вид-жет LoadFeed для доступа к RSS-потоку Craigslist и заполняем виджет ShowData предложениями жилых помещений, сообщая ShowData, что он должен брать данные из виджета LoadFeed. Для того чтобы расположить жилые помещения на карте, мы можем теперь во время исполнения просто брать адреса из виджета ShowData и помещать их на виджет GoogleMap. ОСОБЕННОСТИ ПОДХОДОВ К СОЗДАНИЮ КОЛЛАЖЕЙ Приведенные выше средства различаются в подходе к созданию коллажа и в программном инструментарии реализации выбранного подхода. Во многом так же, как и при интеграции данных и приложений, сначала описывается парадигма создания коллажей путем анализа объектов интеграции (компоненты) и способа их объединения друг с другом (логика композиции). Что же касается программного инструментария, важно отдельно рассмотреть предоставляемую поддержку среды разработки и среды исполнения. Компонентная модель Компонентная модель определяет природу компонентов и влияет на то, как эти компоненты можно объединять. Четко определенный компонентный интерфейс, например, поддерживает повторное использование, в то время как гибкий