Презентацию к данной лекции Вы можете скачать здесь.
16.1. Введение в RIA
16.1.1. Общие сведения
RIA ( Rich Internet application, "богатое Интернет-приложение" или Rich Interactive Applications, "богатое интерактивное приложение") – это приложение, доступное через Интернет, богатое функциональностью традиционных настольных приложений, не поддерживаемой браузерами непосредственно [1]. Как правило, приложение RIA:
передает веб-клиенту необходимую часть пользовательского интерфейса, оставляя большую часть данных (ресурсы программы, данные и пр.) на сервере;
запускается в браузере и не требует дополнительной установки ПО;
запускается локально в среде безопасности, называемой "песочница" (sandbox).
На рис. 16.1 с помощью диаграммы Венна демонстрируется место Rich Internet Applications среди других технологий программных систем [2].
(рис 16.1) Место Rich Internet Applications среди технологий создания программных систем Традиционные веб-приложения большей частью работают на сервере – в клиентской программе-браузере (Internet Explorer, Firefox или Opera) отображается контент, размеченный языком разметки HTML [3]. В силу такого подхода традиционные веб-приложения:
имеют достаточно ограниченный уровень интерактивности;
постоянно взаимодействуют с сервером – отправляют на него данные, получают ответы и загружают новые страницы.
В RIA значительная часть функционала вынесена в клиентскую часть, т.е. исполняется на стороне клиента (по сути, в том же браузере, но с использованием плагинов и/или технологии Ajax ), что позволяет получить приложение, которое:
работает быстрее, за счет меньшего количества обращений к серверу и отсутствия перегрузок страниц;
обеспечивает близкий к традиционным настольным приложениям уровень интерактивности и удобства интерфейса (например, такую возможность как drugdrop).
Термин " RIA " впервые был упомянут компанией Macromedia в официальном сообщении от марта 2002 года. Эта концепция существовала несколькими годами ранее со следующими названиями:
Remote Scripting, Microsoft, около 1998 года;
X Internet, Forrester Research в октябре 2000 года;
Rich (web) client;
Rich web application.
Работа традиционных веб-приложений сконцентрирована вокруг клиент-серверной архитектуры с тонким клиентом. Такой клиент переносит все задачи по обработке информации на сервер, а сам используется лишь для отображения статического контента (например, HTML-кода). Основной недостаток этого подхода в том, что все взаимодействие с приложением должно обрабатываться сервером, что требует постоянной отправки данных на него, ожидания ответа сервера и загрузки страницы обратно в браузер. При использовании технологии запуска приложений на стороне клиента, RIA могут обойти этот медленный цикл синхронизации за счет большего взаимодействия с пользователем. Эта разница примерно аналогична разнице между архитектурой с "тонким клиентом" (Thin client) и архитектурой с " толстым клиентом " (Fat client), а также между терминалом и мейнфреймом.
На рис. 16.2 представлено историческое развитие приложений [4].
(рис 16.2) Историческое развитие приложенийРассмотрим архитектурные особенности построения RIA-приложений.
Сравнение принципов работы веб-приложения и RIA-приложения представлен на рис. 16.3 [5].
(рис 16.3) Сравнение принципов работы традиционного веб-приложения и RIA-приложенияВ табл. 16.1 приведены сравнительные данные профилирования традиционного веб-приложения (на примере сайта mail.ru) и RIA -приложния (на примере сайта gmail.com) [5].
Сравнение данных профилирования традиционного веб-приложения и RIA-приложения
| Действие |
mail.ru |
gmail.com |
| Начальная страница |
24 запроса
116Kb |
33 запроса
379 Kb |
| Открыть письмо |
17 запросов
71 Kb |
3 запроса 2 Kb |
Также можно сравнить архитектуры толстого клиента и RIA-приложения.
Толстый клиент – это высокопроизводительное интерактивное приложение с богатым пользовательским интерфейсом, которое работает в различных сценариях независимо от наличия Интернета.
Обычно архитектура представлена следующими компонентами (рис. 16.4) [6]:
уровень представления – отвечает за взаимодействие приложения с пользователем, он формирует, отрисовывает и проверяет введенные пользователям данные;
уровень бизнес логики – включает бизнес потоки и логику, которые собственно и управляют приложением, также на этом уровне находятся бизнес сущности – элементы, которыми обмениваются компоненты логики;
уровень данных – содержит модели и провайдеры, которые позволяют получать данные.
(рис 16.4) Архитектура толстого клиента
Богатые Интернет приложения ( RIA ) выполняются в "песочнице" браузера.
Архитектура Веб-сервера представлена следующими компонентами (рис. 16.5) [6]:
уровень сервисов предоставляет интерфейсы клиентской части для взаимодействия с уровнем логики;
уровень бизнес логики идентичен уровню логики толстого клиента ;
уровень данных идентичен уровню данных толстого клиента.
(рис 16.5) Архитектура RIA-приложения
В табл. 16.2 представлено сравнение толстого клиента и RIA-приложения [6].
Сравнение "толстого" клиента и RIA-приложения
| Архитектура |
Преимущества |
Проблемы |
| Толстый клиент |
Может расходовать клиентские ресурсы
Интерактивность, богатый пользовательский функционал
Высокая способность к реагированию
Поддержка работы без сети
|
Требует установки (Click Once, Windows Installer, Copy)
Контроль версий
Зависимость от платформы
|
| RIA |
Тот же богатый пользовательский интерфейс, как и у толстого клиента
Поддержка 3D и медиа высокого качества
Простой способ распространения
Простой механизм контроля версий
Кросс-платформенность и кросс-браузерность
|
Небольшой размер приложений
Ограничения по использованию клиентских ресурсов
Требует установленного плагина для браузера
|
Если обобщить все вышесказанное, то RIA-приложения включили в себя [2]:
От толстого клиента:предоставление пользователю интерактивного интерфейса;
быстрое время отклика интерфейса без обновления страницы;
привычные средства пользовательского интерфейса, такие как: drag-and-drop и возможность работы как в режиме онлайн и оффлайн;
От интернет-приложения:быстрое развертывание;
кросс-платформенность;
использование прогрессивной загрузки для получения информации и данных;
использование большинства Интернет-стандартов;
От средств передачи данных:интерактивные аудио- и видео- технологии.
Основными достоинствами и преимуществами RIA-приложений являются [1, 3, 4, 5]:
RIA предлагают пользовательский интерфейс, не ограниченный лишь использованием языка HTML, применяемого в стандартных веб-приложениях (drag-and-drop, использование ползунка для изменения данных, возможность производить вычисления, которые не отправляются обратно на сервер);
интерфейсы RIA более интерактивны, чем стандартные интерфейсы веб-браузеров, которые требуют постоянного взаимодействия с удаленным сервером;
использование вычислительных ресурсов клиента и сервера лучше сбалансировано, что освобождает вычислительные ресурсы сервера, позволяя обрабатывать большее количество сессий одновременно за счет одного и того же аппаратного обеспечения;
движок клиента может взаимодействовать с сервером, не дожидаясь, пока пользователь совершит действие в приложении, нажав на кнопку или ссылку, что позволяет пользователю просматривать страницу и взаимодействовать с ней асинхронно с помощью коммуникации между движком и сервером;
приложения, доступные через браузер, не требуют установки;
кросс-платформеность и кросс-браузерность;
автоматическое обновление версий (версия программы обновляется на сервере);
меньше опасность заражения вирусами для пользователей за счет использования "песочницы";
частичная возможность работы в режиме offline.
Основными недостатками и ограничениями RIA являются [1, 3, 4, 5]:
поскольку RIA загружаются в локальной среде безопасности "песочница", они имеют ограниченный доступ к системным ресурсам;
как правило, для работы RIA требуется JavaScript или другие скриптовые языки, а, соответственно, если пользователь отключил активные сценарии в своем браузере, RIA может не функционировать должным образом или вообще не работать;
чтобы обеспечить платформенную независимость, некоторые RIA используют скриптовый язык на стороне клиента, например, такой как JavaScript, с частичной потерей производительности;
даже если нет необходимости в установке скрипта, движок клиента RIA должен быть передан клиенту сервером (поскольку большинство скриптов сохраняются в кэше, он должен быть передан хотя бы один раз);
если приложение основано на XHTML, возможны конфликты между целями приложения (которое хочет иметь контроль над его представлением и действиями) и целями X/HTML (которое хочет отдать контроль);
поисковые системы могут оказаться не в состоянии проиндексировать содержимое приложения RIA ;
идеальная замена для настольных приложений должна позволять пользователям подключаться к сети "эпизодически", однако типичные приложения RIA требуют подключения к Интернету (регулярного или постоянного);
известно множество проблем веб-совместимости с RIA (одна из распространенных заключается в том, что пользователю, читающему текст с экрана, сложно выявлять динамические изменения (вызванные JavaScript) в контенте HTML);
RIA нельзя расширять плагинами и модами, как это возможно в традиционных приложениях;
сложность интеграции с браузером – сохранения истории и адресной строки, перетаскивания файлов из операционной системы;
Accessability issues (проблемы доступности), в силу преобладания мультимедийного контента, который, например, не прочитают программы – "читалки" для слепых;
дорогая разработка.
Появление технологии RIA сопровождалось значительными сложностями в разработке веб-приложений. Традиционные веб-приложения, созданные на основе стандартного HTML, имеющего сравнительно простую архитектуру и довольно ограниченный набор функций, были относительно просты в разработке и управлении.
Основными аспектами, осложняющими процесс разработки RIA, являются:
Большая технологическая сложность делает разработку труднее ;
Архитектура RIA ломает парадигму веб-страницы ( традиционные веб-приложения представляют из себя набор веб-страниц, каждая из которых требует отдельного скачивания, инициированного запросом HTTP GET , когда как RIA вностит дополнительный сервер асинхронной коммуникации для поддержки более интерактивного интерфейса);
Асинхронная коммуникация осложняет выявление проблем производительности (клиент RIA может быть запрограммирован таким образом, чтобы постоянно загружать новый контент и обновлять дисплей, или (в приложениях, использующих подход Comet) движок на стороне сервера может постоянно передавать новый контент браузеру через постоянно открытое соединение);
Движок клиента усложняет измерение времени отклика приложения.
16.1.2. Ключевые термины
RIA, Rich Internet application, Традиционные веб-приложения, Толстый клиент, Архитектура RIA-приложения.
16.2. Технологии RIA
Рассмотрим, какие технологии создания RIA-приложений существуют на сегодняшний день.
16.2.1. Технологии Adobe
Фирма Adobe последовательно продвигает свои RIA -технологии на базе Flash-платформы и предоставляет полный стек решений и инструментов для создания визуальной и медийной составляющих, а также серверных решений [5]. Flash-плеер доступен на всех основных платформах и во всех основных браузерах. Кроме того, существует версия для мобильных устройств.
Стек технологий Adobe для создания RIA-приложений выглядит, как показано на рис. 16.6.
(рис 16.6) Стек технологий Adobe для создания RIA-приложенийИсточник: Adobe Flash Platform ActionScript reference for RIA development [7]
16.2.1.1. Adobe Flash
Adobe Flash (ранее известная как Macromedia Flash) – мультимедийная платформа, используемая для создания векторной анимации и интерактивных приложений (в том числе, игр), а также для интеграции видеороликов в веб-страницы [8].
Разработка Flash была начата компанией FutureWave, создавшей пакет анимации FutureSplash Animator. В 1996 году FutureWave была приобретена компанией Macromedia, которая переименовала FutureSplash Animator в Flash. Под этим наименованием платформа продолжает развиваться и поныне (хотя после того, как в 2005 году компания Macromedia была поглощена Adobe, Macromedia Flash стал официально называться Adobe Flash ).
Adobe Flash позволяет работать с векторной, растровой и ограниченно с трехмерной графикой, а также поддерживает двунаправленную потоковую трансляцию аудио и видео. Для КПК и других мобильных устройств выпущена специальная "облегченная" версия платформы Flash Lite, чья функциональность ограничена в расчете на возможности мобильных операционных систем и их аппаратных показателей.
В качестве основных средств разработки используются пакеты Adobe Flash Professional и Adobe Flash Builder 4, позволяющие создавать интерактивные приложения (в том числе, веб-приложения, игры и мультфильмы) (рис. 16.7).
(рис 16.7) Adobe Flash CS4Стандартным расширением для скомпилированных Flash-файлов (анимации, игр и интерактивных приложений) является SWF (Shockwave Flash или Small Web Format). Видеоролики в формате Flash представляют собой файлы с расширением FLV (при этом Flash в данном случае используется только как контейнер для видеозаписи). Расширение FLA соответствует формату рабочих файлов в среде разработки.
Flash-контент воспроизводится с помощью целого ряда программных средств, но доминирующее положение на рынке занимает официальный Adobe Flash Player, распространяемый в качестве бесплатного плагина для большинства современных браузеров. Также SWF-файлы можно просматривать с помощью различных свободных плееров, например, Gnash или swfdec. FLV-файлы воспроизводятся через Adobe Flash Player или через мультильтимедийные проигрыватели, такие как Quicktime и Windows Media Player, при наличии соответствующих плагинов.
В основе Flash лежит векторный морфинг, то есть плавное "перетекание" одного ключевого кадра в другой. Это позволяет делать сложные мультипликационные сцены, задавая лишь несколько ключевых кадров для каждого персонажа.
Flash использует язык программирования ActionScript, основанный на ECMAScript.
Основной недостаток Flash-приложений – чрезмерная требовательность к ресурсам процессора. Недостаточная мощность компьютера может повлиять на производительность операционной системы в целом, либо привести к искажению результатов работы Flash-приложения, связанных с отображением анимации или подсчетом времени. Иногда это связано с недостатками программного обеспечения отвечающего за обработку Flash-компонентов, либо низким качеством самого Flash-приложения.
Другой важный недостаток заключается в том, что не всегда есть возможность запустить Flash-приложение, либо она связана с некоторыми трудностями (например, необходимо установить плагин или обновить его до последней версии). Некоторые пользователи (или системные администраторы в рамках целой сети) отключают в настройках браузера возможность загружать контент, обрабатываемый плагинами или загружаемый во фреймах в целях информационной безопасности (в связи с возможной угрозой со стороны контента, например, перехват буфера обмена), экономии системных ресурсов, или для избавления от надоевшей рекламы.
Это делает технологию в целом ненадежной также для разработчиков, которым никто не гарантирует, что веб-приложение на основе Flash будет вообще воспроизведено. Поэтому Flash, в основном, используется для написания игр, небольших полуинтерактивных анимаций и для красиво оформленной рекламы, то есть в сфере развлечений и дизайна. Для серьезных веб-приложений, где взаимодействие с пользователем должно быть без ущерба красоте, обычно используется JavaScript, либо вообще не используются никакие технологии кроме тех, что 100 % работают (HTML, CGI).
В Интернете можно найти сайты, полностью оформленные в виде Flash-приложения (весь контент, а также элементы навигации). Обычно это сайты, посвященные играм, дизайнерские студии, личные странички и прочие сайты, целью которых является поразить посетителя красотой и необычностью реализации. Крупные порталы и информационные ресурсы стараются избегать использования Flash (за исключением вставки рекламных баннеров, невозможность вывода которых не вызывает неудобств для пользователей).
Использование Flash для размещения текстовой информации препятствует ее индексированию поисковыми системами. Однако существует множество способов решить эту проблему.
16.2.1.2. Adobe Flex
Adobe Flex также позволяет разрабатывать приложения на базе Flash-платформы, но без применения временной шкалы [5]. Вместо этого появляется язык разметки MXML, дающий возможность в декларативной форме задавать изменения состояний и переходы между ними. Adobe Flex предназначен исключительно для разработчиков. С его помощью создаются сложные интернет-приложения для бизнес-задач и для повседневного применения. Вся разработка во Flex ориентирована на применение готового набора расширяемых компонентов, подходящих почти для всех задач. CSS позволяет гибко настраивать внешний вид, как отдельных компонентов, так и всего приложения. Связывание данных помогает отображать измененную информацию практически без единой строки кода.
Flex приложение может компилироваться на сервере (для этого потребуется mod_flex.so или mod_flex.dll в зависимости от ОС и веб-сервера), а может – из IDE или непосредственно из командной строки с помощью компилятора mxmlc (начиная с Flex 2). Как и во Flash, результатом является файл swf, исполняемый Flash Player [9].
Принцип работы Flex показан на рис. 16.8 [10].
(рис 16.8) Принцип работы FlexFlex – это большой набор классов (Flex SDK), содержащий многие не вошедшие во Flash компоненты. Достоинства Flex тесно связаны с его спецификой, MXML. Например, Flex компоненты для построения графиков сделаны удобными для использования и выглядят очень приемлемо для использования "как есть".
Основными преимуществами технологии Flex являются [4]:
быстрый цикл освоения и разработки;
развитое community;
много учебных материалов и документации;
интеграция с дизайнерскими инструментами от Adobe;
надежная простая и эффективная платформа.
Основными недостатками технологии Flex являются [4]:
предрассудок "Flex это для мультиков", несмотря на надуманность и не серьезность одна из очень серьезных проблем;
существенные (по сравнению с Java) ограничения "песочницы";
многие разработчики акцентированы на визуализации, как следствие плохой серверный код.
Бесплатный инструментарий Adobe Flex SDK предлагается с июня 2006 г. Он содержит все необходимое для построения эффективных Flex-программ, включая компилятор MXML и библиотеки ActionScript 3.0.
Kомпания Adobe решила открыть исходный код среды Flex к концу 2007 года и начать распространение этого продукта на условиях Mozilla Public License (MPL).
Интегрированная среда разработки Flex Builder 3, которая обеспечивает более высокую производительность, создана на свободно распространяемой платформе разработки Eclipse. Поскольку многие разработчики уже используют Eclipse при программировании на Java, Flex Builder 3 предоставляет им знакомую среду для создания и Java-приложений, и полнофункциональных клиентов (рис. 16.9).
(рис 16.9) Adobe Flex Builder 3Источник: Adobe Flex Builder 3 [11]
Кроме того, возможна разработка Flex (ActionScript 3) проектов с помощью средств OpenSource – в частности, FlashDevelop (Windows), axdt, flex2ant (оба последних средства являются плагинами Eclipse и кроссплатформенны, однако по удобству работы с ними значительно уступают FlashDevelop).
Flex 2, помимо скорости разработки, предоставляет полные мультимедийные возможности платформы Flash: включая потоковое видео, звук (в том числе и программный), бинарные сокеты и большое число прочих новых возможностей ActionScript 3.
Благодаря Flex 2, веб-сервисы могут использоваться для связи с сервером при частом обращении к данным при небольшой полезной нагрузке. Для более ресурсоемких приложений Adobe предлагает программное обеспечение Flex Data Services 2 Express, которое может поддерживать связь между источником данных и уровнем представления. Flex Data Services 2 способен передавать данные с сервера на клиент. Серверный компонент может, например, извлечь данные из серверного приложения SAP и переслать их клиенту. Теперь функции Flex Presentation Server встроены в Flex Data Services.
Еще одно неоспоримое достоинство технологии Flex, тесно связанное с достоинствами ActionScript 3 – это возможность OpenSource разработки Flash-проектов без использования Adobe Flash IDE, с помощью "чистого" программирования. При этом Flash-разработка становится принципиально доступна в том числе и на платформе Linux.
16.2.1.3. Adobe Air
Adobe AIR (Adobe Integrated Runtime) позволяет запускать веб-приложения на Рабочем столе персонального компьютера [5]. Это могут быть приложения как на базе HTML, так и на базе Flash-платформы с возможностью просмотра PDF-документов. Таким образом, веб-разработчики могут создавать настольные приложения, используя уже существующие навыки. Adobe AIR предоставляет ряд возможностей по интеграции с операционной системой: окна, доступ к файловой системе, защищенное локальное хранилище, локальную базу данных и технологию перетаскивания объектов (drag-n-drop). AIR-приложения могут устанавливаться прямо из Интернета.
Приложения, написанные с использованием AIR, могут быть запущены на нескольких платформах, для которых Adobe поставляет среду выполнения, а именно [12]: Microsoft Windows NT (XP, Vista, Windows 7), Mac OS X (PowerPC и Intel), GNU/Linux (только для 32-хбитных процессоров x86).
В связи с кросс-платформенностью отсутствует прямой доступ к API, существующим только для некоторых из этих платформ.
Архитектура платформы Air представлена на рис. 16.10 [10].
(рис 16.10) Архитектура платформы AirОсновными преимуществами технологии Air являются [4]:
используя AIR, можно легко перенести готовое HTML или Adobe Flex приложение на компьютер пользователя;
приложения имеют доступ к файловой системе, буферу обмена, имеется поддержка нескольких окон, технологии drag-and-drop.
Основными недостатками технологии Air являются [4]:
ограниченный доступ к SQLite и веб-сервисам;
приложения, написанные на AIR, являются однопоточными;
это проприетарное программное обеспечение, приложения, написанные на AIR, зависят от среды выполнения Adobe.
16.2.2. Ajax
Ajax представляет собой смесь технологий, в основе которых лежат язык JavaScript и объект XMLHttpRequest [5]. Благодаря этому приложения могут получать данные с сервера и отображать их без перезагрузки страницы. Формально Ajax не является RIA -технологией, так как не интегрирует в себе медиа-возможности, не обладает стандартными средствами прорисовки векторной графики, а JavaScript по-разному исполняется в различных браузерах.
Эти проблемы, так или иначе, решены большинством существующих Ajax -библиотек, но они основаны на гибриде технологий (например, использование Flash для видео). С проблемой кросс-браузерности также, в основном, справились, но она снова может возникнуть при выходе новых версий браузеров.
Сейчас существует множество Ajax -библиотек, имеющих свои особенности и сферы применения. Однако нет единого стандарта, и при переходе с одной библиотеки на другую разработчик вынужден заново изучать документацию.
Использование Ajax позволяет значительно обогатить традиционные веб-страницы и сделать работу с ними очень комфортной. Тому существует множество ярких примеров. Применять Ajax при создании сайтов-презентаций и интернет-приложений, предлагающих пользовательский опыт, максимально приближенный к уровню настольных приложений, скорее всего, нецелесообразно.
Основными преимуществами технологии Ajax являются [4]:
есть в любом браузере;
прост в освоении;
быстрый цикл разработки;
развитый инструментарий;
развитое сообщество.
Основными недостатками технологии Ajax являются [4]:
иногда кросс-браузерная несовместимость;
сложно/дорого разрабатывать большие приложения;
сложно отлаживать, дорого поддерживать;
низкая производительность.
16.2.3. Технологии Microsoft
В корпорации Microsoft также почувствовали, насколько актуальны RIA -технологии, и решили предложить разработчикам средства создания насыщенных интернет-приложений.
16.2.3.1. ActiveX
Технология ActiveX – средство, при помощи которой Internet Explorer (IE) использует другие приложения внутри себя [13]. С помощью ActiveX IE загружает Windows Media Player, Flash, Quicktime и другие приложения, которые могут воспроизводить файлы, внедренные в веб-страницы. Элементы управления ActiveX активизируются при щелчке по такому объекту на веб-странице, например, WMV-файлу, чтобы загрузить его для отображения в окне браузера Internet Explorer.
Являясь продуктом Microsoft, ActiveX была специально спроектирована для работы с системами Windows. ActiveX не поддерживается другими операционными системами, такими как Mac или Linux.
Firefox и другие кросс-платформенные браузеры используют систему Программный интерфейс подключаемых модулей Netscape (Netscape Plugin Application Programming Interface, NPAPI)). NPAPI выполняет функции, подобные таковым из ActiveX.
Управляющие элементы ActiveX – эквивалент подключаемых модулей NPAPI. Однако ActiveX и технология подключаемых модулей имеют отличия. В то время как с помощью надстройки ActiveX можно нанести вред компьютеру, подключаемые модули по своему существу имеют лучшие функции безопасности. Они имеют меньше контроля над веб-страницей, в которую они внедрены, и не могут использоваться в приложениях, отличных от веб-браузера. ActiveX имеет более широкое применение для большего числа приложений
Как технология для RIA технология ActiveX обладает рядом серьезных недостатков [4]:
платформа только IE и Windows;
нетривиален в разработке и отладке;
большой период освоения технологии;
имеются некоторые проблемы с безопасностью.
Основное достоинство технологии ActiveX для RIA [4]:
исполняется native-код.
16.2.3.2. Технология WPF
Windows Presentation Foundation (WPF, кодовое название – Avalon) – графическая (презентационная) подсистема в составе .NET Framework 3.0, имеющая прямое отношение к XAML (Extensible Application Markup Language) [14]. WPF вместе с .NET Framework 3.0 предустановленна в Windows Vista и Windows 7, а также доступна для установки в Windows XP SP2 и Windows Server 2003 и 2008.
Это первое реальное обновление технологической среды пользовательского интерфейса со времени выпуска Windows 95. Оно включает новое ядро, которое призвано заменить GDI и GDI+, используемые в нынешней Windows-платформе. WPF представляет собой высокоуровневый объектно-ориентированный функциональный слой (framework), позволяющий создавать 2D- и 3D-интерфейсы. В будущем WPF должен объединить Windows и Web-разработку (в том числе AJAX). WPF для отрисовки использует не GDI+, а DirectX. Также WPF поддерживает темы и нестандартные для WinForms контролы. Производительность WPF выше, чем у GDI+ за счет использования видеокарты.
WPF в составе .NET Framework изображено на рис. 16.11 [15].
(рис 16.11) Состав .NET FrameworkПосле появления Microsoft .NET Framework 3.0, а в частности WPF, разрешилась проблема дизайна приложений [16]. В данном случае дизайнер может взять на себя роль программиста и описать необходимый ему интерфейс на простом и доступном языке XAML. При этом одновременно решается 2 задачи:
разгрузка программиста от процесса "рисования форм" – теперь ему не надо заботиться о внешнем виде программы, об этом позаботится дизайнер;
отделение данных от их представления – это означает, что в любой момент можно сменить внешний вид программы, при этом, не затрагивая логику работы.
Также благодаря уже написанным расширениям для популярных графических редакторов, возможен прямой экспорт из программ в файл xaml. Уже есть плагины для таких программ как: Blender, Maya, Adobe Fireworks, LightWave, Adobe Illustrator. Есть и готовые решения для работы с XAML: Microsoft Expression Blend, Microsoft Expression Design, Aurora [17].
Основа WPF – это независимый от разрешения экрана и основанный на векторной графике механизм отрисовки, который был построен для использования всех преимуществ современного графического оборудования [18]. WPF расширяет эту основу исчерпывающим набором средств разработки приложений, включающих язык XAML, элементы управления, привязку данных, структуру, графику двухмерный и трехмерный, анимацию, стили, шаблоны, документы, мультимедиа, текст и типографию.
16.2.3.3. Технология Silverlight
Microsoft Silverlight предоставляет графическую систему, схожую с Windows Presentation Foundation, и объединяет мультимедиа, графику, анимацию и интерактивность в одной программной платформе. Он был разработан, чтобы работать с XAML и с языками Microsoft .NET. XAML используется для разметки страниц, использующих векторную графику и анимацию. Текст, содержащийся в Silverlight приложениях, доступен для поисковых систем, так как он не компилируется, а доступен в виде XAML. Silverlight также можно использовать для того, чтобы создавать виджеты для Windows Sidebar в Windows Vista.
Также Silverlight – это плагин для браузера, который позволяет запускать приложения, содержащие анимацию, векторную графику и аудио-видео ролики, что характерно для RIA ( Rich Internet application ) [19]. Версия 2.0, выпущенная в октябре 2008, добавила поддержку для языков .NET и интеграцию с IDE. 10 июля 2009 года Microsoft выпустила Silverlight 3, а на данный момент готовится к выходу Silverlight 4.
Silverlight реализован для ОС Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows 7, Mac OS X 10.4, Mac OS X 10.5 и браузеров Internet Explorer 6.0/7.0/8.0, Mozilla Firefox 1.5/2.0/3, Safari 3.1, Google Chrome 3.0. В будущем также планируется поддержка Opera, мобильных устройств, начиная с Windows Mobile 6 и Symbian (Series 60), и, возможно, других платформ.
Silverlight поддерживает воспроизведение WMV, WMA и MP3 для всех поддерживаемых браузеров, не требуя при этом дополнительных компонентов, таких как Windows Media Player.
Silverlight позволяет динамически загружать XML и использовать DOM для взаимодействия с ним так же, как это делается в Ajax. Silverlight содержит объект Downloader, благодаря которому можно скачивать скрипты, медиа-файлы и т. д., если это необходимо приложению. Начиная с версии 2.0, логика программы может быть описана в любом из языков .NET, включая динамические языки программирования, такие как Iron Ruby и Iron Python, которые в свою очередь исполняются в DLR (Dynamic Library Runtime) , а не CLR (Common Language Runtime).
Silverlight 1.0
Первая бета-версия Silverlight была выпущена в декабре 2006 года. Microsoft рассчитывала выпустить стабильную версию в середине 2007 года. Ходили слухи, что в Microsoft планируется частичное открытие исходного кода Silverlight, однако они были опровергнуты. Тем не менее, часть Dynamic Language Runtime включенная в Silverlight, доступна на портале Microsoft для хостинга открытых и проприетарных проектов CodePlex под Microsoft Permissive License.
Silverlight v.1.0 является подключаемым модулем обозревателя для обработки XAML и кодеки для воспроизведения мультимедийного содержимого в форматах WMV, WMA и MP3. Он представляет обозревателю внутреннюю модель DOM, управляемую из JavaScript кода. Язык XAML основан на XML, поэтому документ, определяющий загружаемый клиенту пользовательский интерфейс – текстовый и вполне пригоден для индексирования поисковыми системами. Используя представленную модель DOM, JavaScript может динамически обновлять содержимое Silverlight, аналогично DHTML. Также можно вызывать методы управления презентацией (запуска анимации или приостановки воспроизведения видео, например).
Архитектура Silverlight 1.0 представлена на рис. 16.12.
(рис 16.12) Архитектура Silverlight 1.0Silverlight приложение начинается с вызова объекта Silverlight из HTML страницы, загружающего XAML файл. XAML файл содержит объект Canvas, выступающий подложкой для других элементов. Объекты XAML способны генерировать события, перехватываемые из JavaScript.
В комплекте к Visual Studio 2005 SP1 прилагаются "Silverlight Tools for VS 2005".
Участники проекта Mono 16 мая 2008 года выпустили реализацию плагина Silverlight на базе открытого ПО, работающую на Linux – Moonlight, однако ни открытым, ни свободным ПО она считаться не может, так как разрешение на использование патентов предоставляется только получателям кода от Novell, и только для создания плагинов. Moonlight 2.0 находится в состоянии Preview 3.
Silverlight 2.0
Версия Silverlight 2.0 была выпущена 14 октября 2008 года и включала в себя подмножество библиотек .NET Framework.
Архитектура Silverlight 2.0 представлена на рис. 16.13.
(рис 16.13) Архитектура Silverlight 2.0Среди возможностей Silverlight 2.0 можно отметить [20]:
поддержка .NET Framework вместе с библиотекой Rich Base Class Library: совместимое подмножество полной версии .NET Framework;
мощные встроенные элементы управления, включающие в себя DataGrid, ListBox, Slider, ScrollViewer, Calendar controls и другие;
поддержка усовершенствованных образов и шаблонов;
технология Deep Zoom, обеспечивающая интерактивность и навигацию по изображениям с высоким разрешением;
комплексная поддержка работы в сети;
расширенная языковая поддержка .NET Framework: Visual Basic, C#, JavaScript, IronPython и IronRuby;
улучшенная защита контента – Silverlight DRM на основе защиты контента PlayReady для связанных сред Silverlight;
улучшенная масштабируемость сервера и расширенная поддержка рекламных носителей;
кросс-платформенная и кросс-браузерная поддержка: Mac, Windows и Linux в Firefox, Safari, Internet Explorer.
Кроме этого стали доступны для скачивания Microsoft Silverlight Tools for Visual Studio 2008, которые включали в себя:
шаблоны для проектов Visual Basic и C#;
интеллисенс и генераторы кода для XAML;
отладку приложений Silverlight;
поддержку Web reference;
интеграцию с Expression Blend.
Silverlight 3.0
18 марта 2009 года на конференции MIX09 в Лас-Вегасе Microsoft продемонстрировала бета-версию. 10 июля 2009 года в ходе мероприятия See the Light Microsoft объявила об официальном выпуске RTM версии. В настоящее время последняя версия доступна для загрузки на сайте Microsoft.
Среди особенностей новой версии [21, 22]:
Поддержка высококачественного видео и аудио:прямое вещание и доступность по запросу видео в формате HD (720p и выше) с динамическим изменением качества сигнала в зависимости от текущего канала;
поддержка форматов H.264/AAC Audio, основанных на MPEG-4;
видео высокой четкости в полноэкранном режиме, используя аппаратное ускорение GPU;
поддержка формата Raw AV для создания сторонних кодеков;
возможность защиты контента через DRM;
плавное потоковое воспроизведение (в режиме реального времени и по требованию) видео высокой четкости HD с разрешением 1080 точек и более с помощью службы IIS Media, поддерживающей технологию Smooth Streaming;
Новые графические возможности:трехмерная графика, учитывающая перспективу;
поддержка аппаратного ускорения при работе с трехмерной графикой;
новый программный интерфейс растровых рисунков;
кэширование в виде растровых рисунков;
новый API для отрисовки графики;
поддержка приложений, использующих темы;
новые эффекты анимации, такие как эффекты пружины и отскока, делающие анимацию более естественной, и возможность создания собственных математических функций для описания анимации;
усовершенствованные обложки элементов управления, что позволяет разным приложениям совместно использовать стили и обложки элементов управления;
усовершенствованная поддержка визуализации текста и локальных шрифтов;
Новые возможности для создания интерактивных приложений ( RIA ):более 60 готовых элементов управления с исходными кодами;
глубокое связывание (Deep linking), позволяющее создавать закладки для страниц в RIA-приложениях ;
Silverlight 3 разрешает выполнять поисковую оптимизацию в соответствии с потребностями, которые возникают при работе RIA-приложений ;
новые возможности по работе с данными – связывание между элементами, Data Forms, валидация данных, поддержка бизнес-объектов;
улучшенная производительность – кэширование библиотек, новые возможности Deep Zoom, бинарный XML, локальное связывание между Silverlight-приложениями;
Возможности работы без браузера:поддержка ярлыков на рабочем столе и в меню "Пуск";
позволяет не запускать браузер при работе с приложениями;
высокая надежность, безопасность и использование "песочницы";
установка, не требующая прав администратора;
поддержка автоматического обновления;
проверка подключения к Интернету (с браузером и без него);
интеграция с Windows 7;
поддержка устройств с multitouch-интерфейсом;
Другие возможности:доступ ко всем системным цветам для создания контрастных интерфейсов для слабовидящих пользователей;
управление цифровыми правами Silverlight, основанное на защите контента PlayReady, позволяет отображать в веб-браузере защищенный контент, используя шифрование по протоколу AES (Advanced Encryption Standard) или управление цифровыми правами Windows Media.
Silverlight 4.0
В четвертой версии Silverlight введена возможность передачи видеопотока от клиента на сервер в любых приложениях Silverlight иначе, чем это было организовано ранее.
В ранних версиях потоковая передача от клиента на сервер передавались при помощи Flash-приложения или при помощи программы Expression Encoder; видеопоток передавался от клиента на сервер, а потом проигрывался с сервера в приложении Silverlight.
Для прямой трансляции аудио/видео с микрофона/веб-камеры, в четвертой версии, можно уже обходиться без Flash и Expression Encoder.
В табл. 16.3 отражена совместимость Silverlight различных версий с браузерами и операционными системами [19].
Совместимость Silverlight с браузерами и ОС
| ОС/Браузер |
IE 6 SP1 |
IE 7 |
IE 8 |
Firefox |
Safari |
Opera |
Google Chrome |
| Windows Vista/2008 |
— |
1.0, 2.0, 3.0 |
2.0, 3.0 |
1.0, 2.0, 3.0 |
1.0, 2.0; через NPAPI |
Неофициально |
2.0 |
| Windows XP/2003/Home Server |
— |
1.0, 2.0, 3.0 |
2.0, 3.0 |
1.0, 2.0, 3.0 |
1.0, 2.0; через NPAPI |
Неофициально |
2.0 |
| Windows 2000 |
2.0 |
— |
— |
2.0
Неофициально |
2.0; через NPAPI |
Запланирована |
— |
| Windows Mobile 6 |
2.0 |
— |
— |
— |
— |
— |
— |
| Mac OS 10.4/10.5 PowerPC |
— |
— |
— |
1.0 |
1.0 |
Запланирована |
— |
| Mac OS 10.4/10.5 Intel |
— |
— |
— |
1.0, 2.0 |
1.0, 2.0 |
Запланирована |
— |
Opera получит официальную поддержку в следующих версиях. Silverlight уже поддерживает Opera неофициально, с помощью хака.
Для ОС GNU/Linux, функциональность будет доступна через Moonlight.
Silverlight for Mobile будет использоваться для того, чтобы сделать доступным Silverlight приложения на мобильных устройствах.
Silverlight требует x86-процессор с поддержкой SSE. Поддерживаются процессоры Intel Pentium III и выше, и AMD Athlon XP и выше. Некоторые модели AMD Duron тоже поддерживаются.
Основными преимуществами технологии Silverlight являются [4]:
общий с .Net язык и среда разработки;
Silverlight открыто все сообщество .Net разработчиков;
активно развивается и продвигается Microsoft;
автоматически доступен в новых инсталляциях Windows;
плагин Silverlight уже установлен на примерно 60% операционных систем.
Основными недостатками технологии Silverlight являются [4]:
доступен не для всех комбинаций платформа/браузер;
на технологии Silverlight все еще создано недостаточно много приложений (по сравнению с Adobe Flash /Flex);
небольшое количество библиотек и компонентов, в том числе open source компонент (по сравнению с другими платформами).
16.2.4. Технологии Oracle (Sun)
Рассмотрим также RIA -технологии компании Sun Microsystems, которая с января 2010 года входит в состав Oracle Corporation.
Если обратиться к истории, то Java-апплеты были самой первой RIA -технологией, которая стала доступной еще в 1995 г. [5]. Однако апплеты не получили такого широкого распространения, как, например, Flash-плеер. Это обусловлено рядом причин. Так, для запуска Java-апплета может требоваться специфическая версия виртуальной машины Java, обладающая большим "весом", при этом не предусмотрено прозрачной для пользователя процедуры ее установки и обновления в браузере. Для старта апплета необходим запуск виртуальной машины, что требует достаточно продолжительного времени. С точки зрения внешнего вида большинство апплетов также оставляют желать лучшего. Кроме того, отсутствуют специальные инструменты для дизайнера.
Сейчас в Sun решают эти проблемы, и многие минусы уже устранены в рамках проекта Java SE 6 Update N. А еще появились и новая визуальная тема Nimbus, обладающая современным дизайном, и набор средств по определению и установке требуемой версии JRE (причем для ее запуска не обязательно дожидаться скачивания всех библиотек), и возможность быстрого запуска виртуальной машины.
16.2.4.1. Технология JavaFX
JavaFX – это платформа для создания Rich Internet Applications ( RIA s), которые могут запускаться на персональных компьютерах и мобильных устройствах [23]. Технология JavaFX позволяет создавать приложения для работы с мультимедийным контентом, графические интерфейсы пользователя для бизнес-приложений, игры для персональных компьютеров и мобильных устройств, насыщенные графикой, мультимедиа веб-сайты и др.
JavaFX был разработан специалистом по пользовательским интерфейсам Кристофером Оливером, когда он работал в компании See Beyond, и на уровне проекта язык назывался F3 (Form Follows Function), что можно перевести как "форма, следующая за функцией" [24]. В 2005 году компания See Beyond была куплена Sun Microsystems, после чего состоялось первое переименование языка F3 в Java F3, а затем и второе – в JavaFX.
Впервые от лица Sun объявление о выпуске JavaFX было сделано на конференции JavaOne в мае 2007 года, а с июля 2008-го открылась возможность загружать JavaFX SDK для Windows и Mac OS, а также плагин JavaFX для NetBeans 6.1. Развитием мультимедийных возможностей JavaFX занимаются специализирующиеся в этой области компании On2 Technologies и TrueMotion Video.
Платформа JavaFX 1.0 включает в себя следующие компоненты [25] (рис. 16.14):
Средства разработки JavaFX 1.0 SDK – компилятор и среда исполнения JavaFX, язык программирования JavaFX Script, а также графические, медийные и веб-библиотеки для создания RIA-приложений для настольных компьютеров, веб-сайтов и мобильных устройств.
Среда разработки NetBeans IDE 6.5 с поддержкой JavaFX 1.0 – интегрированная среда разработки для создания, просмотра и отладки приложений, написанных на JavaFX Script. В редакторе JavaFX Script есть возможность быстрого добавления объектов JavaFX с уже готовыми геометрическими фигурами, компонентами интерфейса пользователя, средствами преобразования и анимацией.
JavaFX 1.0 Production Suite – набор инструментов и плагинов для экспорта графических объектов в приложения JavaFX. Включает следующие компоненты:Плагины JavaFX 1.0 для графических редакторов Adobe Photoshop CS3 и Adobe Illustrator CS3. С помощью плагинов можно экспортировать графические объекты из этих приложений в код JavaFX Script.
JavaFX 1.0 Media Factory: набор инструментов для конвертирования SVG-графики в код JavaFX и просмотра графических объектов, импортированных в JavaFX из других форматов. Также включает примеры приложений, учебные курсы, статьи, API-документацию и примеры кода.
(рис 16.14) Компоненты для создания RIA-приложенийИсточник: JavaOne: Sun rolls out JavaFX [26]
Приложения JavaFX создаются с помощью декларативного языка программирования JavaFX Script. Для разработки приложений на языке JavaFX Script необходимо скачать и установить JavaFX 1.0 SDK.
Из кода, написанного на языке JavaFX Script, можно обращаться к любым библиотекам Java. Поэтому совместное использование языков Java и JavaFX Script позволяет решать разнообразные задачи, например, логика бизнес-приложения может быть написана на Java, а графический интерфейс пользователя – на JavaFX Script.
Приложения, написанные на языке JavaFX Script, могут запускаться на компьютерах с установленной средой исполнения Java 1.5 и выше. В настоящее время поддерживаются следующие операционные системы: Windows, Mac OS X, GNU/Linux и Solaris.
Для создания приложений для мобильных устройств разработчикам предлагается мобильный эмулятор, входящий в состав JavaFX 1.0 SDK.
16.2.5. Другие технологии
Существуют и другие технологии создания RIA-приложений [4].
Одной из таких технологий является Google Gears – модуль расширения для браузера, позволяющий AJAX-приложениям расширить ограничения песочницы. К осноным возможностям Google Gears относятся:
доступность ресурсов offline;
локальная SQL Lite база данных, синхронизация данных с сервером;
асинхронные задачи;
выбор нескольких файлов для загрузки;
превью картинок;
drag-and-drop.
Однако осенью 2009 года представители Google остановили работы по развитию технологии Google Gears в пользу HTML 5.0, продолжая только ее поддержку.
Спецификация HTML 5.0, находящаяся сейчас в разработке, поддерживает многие элементы RIA:
рисование 2D-картинок в реальном времени;
контроль над проигрыванием медиафайлов;
хранение данных в браузере;
drag-and-drop;
работа с сетью, push технология.
12.2.6.
16.2.7. Сравнение технологий
Приведем сравнение технологий создания RIA-приложений (табл. 16.4) [10, 27, 28].
Сравнение технологий создания RIA-приложений
| Технологии |
WPF |
Silverlight 3.0 |
Flex |
Flash |
Air |
JavaFX |
| Основные характеристики |
| OS |
Windows |
Windows
MacOS
Linux |
Windows
MacOS
Linux |
Windows
MacOS
Linux |
Windows
MacOS
Linux |
Windows
MacOS
Linux |
| Браузеры |
IE, Firefox |
IE, Firefox, Safari, Chrome |
IE, Firefox, Safari, Opera, Netscape, Chrome |
IE, Firefox, Safari, Opera, Netscape, Chrome |
- |
IE, Firefox, Safari, Opera, Netscape, Chrome |
| Опенсорность |
+/- |
- |
+/- |
- |
+/- |
+ |
| Разработка |
| Языки |
XAML+CLS (C#, VB…) |
XAML+
JavaScript/
CLS(C#, VB…)/DLR
(Python) |
MXML+
ActionScript |
ActionScript |
MXML/
ActionScript/JavaScript/
HTML |
JavaFX Script, Java platform (Java, Groovy…) |
| Data Binding |
+ |
+ |
+ |
- |
+ |
+ |
| Декларативный язык разметки |
+ |
+ |
+ |
- |
+ |
+ |
| Смешивание разметки и кода |
+ |
+ |
+ |
- |
+ |
+ |
| Code Behind |
+ |
+ |
+ |
- |
+ |
+ |
| Инструментарий |
| Инструментарий |
Visual Studio, Microsoft Expression
(Blend…), XamlPad, Notepad… |
Visual Studio, Microsoft Expression
(Blend…), Notepad |
Flex Builder, Thermo, Notepad… |
Flash, Flash
Develop, FDT |
Flex Builder, Aptana Studio, Notepad… |
NetBeans, Eclipse, JavaFX Pad, JFXBuilder, Notepad |
| WYSIWYG-редакторы |
Expression Blend, Visual Designer for WPF |
Expression Blend |
Flex Builder, Thermo |
Flash |
Flex Builder, Thermo, Flash |
JFXBuilder |
| Платформы для разработки |
Windows |
Windows |
Windows
MacOS
Linux |
Windows
MacOS |
Windows
MacOS
Linux |
Windows
MacOS
Linux |
| Стоимость SDK |
Бесплатно |
Бесплатно |
Бесплатно |
~$699 |
Бесплатно |
Бесплатно |
| Фрэймворки |
| GUI-фрэймворк |
Компоненты и
лэйауты |
Компоненты
лэйауты |
Компоненты и
лэйауты |
Компоненты |
Компоненты и
лэйауты |
Компоненты и
лэйауты |
| Расширяемость |
+ |
+ |
+ |
+ |
+ |
+ |
| Drag-n-drop |
+ |
+ |
+ |
- |
+ |
+ |
| Компоненты сторонних разработ-чиков |
+ |
+ |
+ |
+ |
+ |
- |
| Поддержка accessibility |
+ |
+ |
+ |
+ |
+ |
+ |
| GUI Automation |
+ |
+ |
+ |
+ |
- |
+ |
| Кастомизация/скинизация |
| Кастомизация внешнего вида компонент |
+ |
+ |
+ |
+ |
+ |
+ |
| Designtime skinning (styling) |
+ |
+ |
+ |
+ |
+ |
+ |
| Runtime skinning (styling) |
+ |
+ |
+ |
- |
+ |
+ |
| Видео |
| Кодеки |
(Windows Media Player) |
WMV, VC-1, H.264, ACC Video, DRM |
Sorenson Spark, On2 VP6-E, On2 VP6-S, H.264,
flv |
Sorenson Spark, On2 VP6-E, On2 VP6-S, H.264 ,
flv |
Sorenson Spark, On2 VP6-E, On2 VP6-S, H.264 ,
flv |
- |
| Hardware Acceleration |
+ |
+ |
+ |
+ |
+ |
|
| HD-видео |
+ |
+ |
+ |
+ |
+ |
|
| DRM |
+ |
+ |
- |
- |
- |
|
| Streaming |
+ |
+ |
+ |
+ |
+ |
|
| Звук |
| Форматы |
(Windows Media Player) |
MP3, WMA, DRM |
MP3, AAC |
MP3, AAC |
MP3, AAC |
AU, AIFF, WAV, MIDI |
| VoIP |
- |
- |
- |
- |
- |
- |
| Наличие VoIP-решений |
+ |
- |
+ |
+ |
+ |
_ |
| Графика |
| Встроенная поддержка 3D |
+ |
+ |
- |
- |
- |
- |
| Векторная графика |
+ |
+ |
+ |
+ |
+ |
+ |
| Загрузка JPG |
+ |
+ |
+ |
+ |
+ |
+ |
| Загрузка PNG |
+ |
+ |
+ |
+ |
+ |
- |
| Загрузка GIF |
+ |
- |
+ |
+ |
- |
+ |
| Hardware acceleration |
+ |
+ |
- |
- |
- |
+ |
| Битмап-эффекты |
+ |
+ |
+ |
+ |
+ |
+ |
| Дополнительно |
| Поддержка микрофона |
+ |
-* |
+ |
+ |
+ |
- |
| Поддержка вебкамеры |
+ |
-* |
+ |
+ |
+ |
- |
| Полноэкранный режим |
+ |
+ |
+ |
+ |
+ |
- |
| Клиент/сервер
Протоколы |
Все, что поддерживает .NET |
XML(JSON, Web services, RSS, POX, REST), WCF Services |
HTTP, Socket, XML, AMF, RTMP |
HTTP, Socket, XML, AMF, RTMP |
HTTP, Socket, XML, AMF, RTMP |
Все, что поддерживает Java-платформа |
* Ожидается в версии Silverlight 4.0.
Колонка для WPF касается XBAP, а колонка JavaFX – апплетов на базе JavaFX, так как эти виды приложений ориентированы на веб, когда JavaFX и WPF-приложения могут быть, а могут и не быть связанными с Веб.
16.2.8. Ключевые термины
Adobe Flash, Adobe Flex, Adobe AIR, Ajax, XMLHttpRequest, ActiveX, Windows Presentation Foundation, Microsoft Silverlight, JavaFX, Google Gears, HTML 5.0.
16.3. Примеры RIA-приложений
16.3.1. Технологии Adobe
Рассмотрим примеры построения RIA-приложений на технологиях компании Adobe (Flash/Flex) [3]:
Adobe Photoshop Express. Онлайновая версия известного графического редактора от компании Adobe, которая является основным поставщиком решений длясоздания RIA.Адрес в интернете: https://www.photoshop.com/express/
Flauntr – также как Photoshop Express позволяет проводить различные операции с фотографиями – кадрирование, наложение различных эффектов, добавление подписей, изменение характеристик фото и т.п.Адрес в интернете: http://www.flauntr.com
RIA – интернет-магазин новозеландских сыроделовАдрес в интернете: http://www.whitestonecheese.co.nz
Интернет-магазин французских винАдрес в интернете: http://www.vinotinto.fr
Демонстрационная версия программного обеспечения, которое используется для создания разнообразных графиков и диаграммАдрес в интернете: http://visudemos.ilog.com/webdemos/charts3d/charts3d.html
Текстовый процессор Buzzword компании Adobe:Адрес в интернете: http://www.buzzword.com

Другие примеры RIA приложений (на платформе Adobe Flex ) можно посмотреть на по ссылке: http://flex.org/showcase/.
16.3.2. Технология Ajax
Самым ярким примером построения RIA-приложений на технологии AJAX являются продукты компании Google [4]:
GmailВеб-интерфейс Gmail целиком построен на браузерном сценарном языке программирования JavaScript, что дает необычные для веб-среды возможности, такие как прием команд с клавиатуры, обновление страницы без перезагрузки (технология AJAX), ниспадающие списки выбора адресатов и другие.
Адрес в интернете: http://gmail.com.
Google DocsАдрес в интернете: http://docs.google.com/.
16.3.3. Технологии Microsoft
Рассмотрим примеры построения RIA-приложений на технологиях компании Microsoft (Silverlight) [29]:
Проект Радикал-Фото, представляющий собой сервис для оперативной публикации фотографий в интернет-форумах, блогах, досках объявлений, чатах.На данном сайте используется технология Deep Zoom.
Адрес в интернете: http://www.radikal.ru/admintopdz.aspx.
Сайт фанатов рок'н'роллаНа данном сайте используется технология Deep Zoom.
Адрес в интернете: http://memorabilia.hardrock.com/
Спортивный портал sportbox.ruНа данном сайте используется технология Smooth Streaming.
Адрес в интернете: http://sportbox.ru
Музыкальный портал station.ruДанный портал позволяет использовать музыкальный плеер, построенный на технологии Silverlight, без браузера.
Адрес в интернете: http://station.ru
Сайт технологии SilverlightАдрес в интернете: http://www.microsoft.com/rus/silverlight/.
Картографический сервис MicrosoftАдрес в интернете: http://www.bing.com/Maps/explore/
Интерактивный сериал "Погружение"На данном сайте используется технология Гипервидео (новый медиа-формат, в основе которого лежит управляемое видео).
Адрес в интернете: http://immersion.actio.tv/

Другие примеры RIA приложений (на платформе Microsoft Silverlight ) можно посмотреть по ссылке: http://www.microsoft.com/rus/silverlight/.
16.4. Краткие итоги
RIA – это приложение, доступное через Интернет, богатое функциональностью традиционных настольных приложений, не поддерживаемой браузерами непосредственно.
В RIA значительная часть функционала вынесена в клиентскую часть, т.е. исполняется на стороне клиента.
Богатые Интернет приложения ( RIA ) выполняются в песочнице браузера.
Adobe Flash – мультимедийная платформа, используемая для создания векторной анимации и интерактивных приложений, а также для интеграции видеороликов в веб-страницы.
Adobe Flex также позволяет разрабатывать приложения на базе Flash-платформы, но без применения временной шкалы.
Adobe AIR позволяет запускать веб-приложения на Рабочем столе.
Ajax представляет собой смесь технологий, в основе которых лежат язык JavaScript и объект XMLHttpRequest.
Технология ActiveX – средство, при помощи которой Internet Explorer использует другие приложения внутри себя.
Windows Presentation Foundation – графическая (презентационная) подсистема в составе .NET Framework 3.0.
Microsoft Silverlight предоставляет графическую систему, схожую с Windows Presentation Foundation, и объединяет мультимедиа, графику, анимацию и интерактивность в одной программной платформе.
JavaFX – это платформа для создания Rich Internet Applications, которые могут запускаться на персональных компьютерах и мобильных устройствах.
Презентацию к данной лекции Вы можете скачать здесь.
16.1. Введение в RIA
16.1.1. Общие сведения
RIA ( Rich Internet application, "богатое Интернет-приложение" или Rich Interactive Applications, "богатое интерактивное приложение") – это приложение, доступное через Интернет, богатое функциональностью традиционных настольных приложений, не поддерживаемой браузерами непосредственно [1]. Как правило, приложение RIA:
передает веб-клиенту необходимую часть пользовательского интерфейса, оставляя большую часть данных (ресурсы программы, данные и пр.) на сервере;
запускается в браузере и не требует дополнительной установки ПО;
запускается локально в среде безопасности, называемой "песочница" (sandbox).
На рис. 16.1 с помощью диаграммы Венна демонстрируется место Rich Internet Applications среди других технологий программных систем [2].
(рис 16.1) Место Rich Internet Applications среди технологий создания программных систем Традиционные веб-приложения большей частью работают на сервере – в клиентской программе-браузере (Internet Explorer, Firefox или Opera) отображается контент, размеченный языком разметки HTML [3]. В силу такого подхода традиционные веб-приложения:
имеют достаточно ограниченный уровень интерактивности;
постоянно взаимодействуют с сервером – отправляют на него данные, получают ответы и загружают новые страницы.
В RIA значительная часть функционала вынесена в клиентскую часть, т.е. исполняется на стороне клиента (по сути, в том же браузере, но с использованием плагинов и/или технологии Ajax ), что позволяет получить приложение, которое:
работает быстрее, за счет меньшего количества обращений к серверу и отсутствия перегрузок страниц;
обеспечивает близкий к традиционным настольным приложениям уровень интерактивности и удобства интерфейса (например, такую возможность как drugdrop).
Термин " RIA " впервые был упомянут компанией Macromedia в официальном сообщении от марта 2002 года. Эта концепция существовала несколькими годами ранее со следующими названиями:
Remote Scripting, Microsoft, около 1998 года;
X Internet, Forrester Research в октябре 2000 года;
Rich (web) client;
Rich web application.
Работа традиционных веб-приложений сконцентрирована вокруг клиент-серверной архитектуры с тонким клиентом. Такой клиент переносит все задачи по обработке информации на сервер, а сам используется лишь для отображения статического контента (например, HTML-кода). Основной недостаток этого подхода в том, что все взаимодействие с приложением должно обрабатываться сервером, что требует постоянной отправки данных на него, ожидания ответа сервера и загрузки страницы обратно в браузер. При использовании технологии запуска приложений на стороне клиента, RIA могут обойти этот медленный цикл синхронизации за счет большего взаимодействия с пользователем. Эта разница примерно аналогична разнице между архитектурой с "тонким клиентом" (Thin client) и архитектурой с " толстым клиентом " (Fat client), а также между терминалом и мейнфреймом.
На рис. 16.2 представлено историческое развитие приложений [4].
(рис 16.2) Историческое развитие приложенийРассмотрим архитектурные особенности построения RIA-приложений.
Сравнение принципов работы веб-приложения и RIA-приложения представлен на рис. 16.3 [5].
(рис 16.3) Сравнение принципов работы традиционного веб-приложения и RIA-приложенияВ табл. 16.1 приведены сравнительные данные профилирования традиционного веб-приложения (на примере сайта mail.ru) и RIA -приложния (на примере сайта gmail.com) [5].
Сравнение данных профилирования традиционного веб-приложения и RIA-приложения
| Действие |
mail.ru |
gmail.com |
| Начальная страница |
24 запроса
116Kb |
33 запроса
379 Kb |
| Открыть письмо |
17 запросов
71 Kb |
3 запроса 2 Kb |
Также можно сравнить архитектуры толстого клиента и RIA-приложения.
Толстый клиент – это высокопроизводительное интерактивное приложение с богатым пользовательским интерфейсом, которое работает в различных сценариях независимо от наличия Интернета.
Обычно архитектура представлена следующими компонентами (рис. 16.4) [6]:
уровень представления – отвечает за взаимодействие приложения с пользователем, он формирует, отрисовывает и проверяет введенные пользователям данные;
уровень бизнес логики – включает бизнес потоки и логику, которые собственно и управляют приложением, также на этом уровне находятся бизнес сущности – элементы, которыми обмениваются компоненты логики;
уровень данных – содержит модели и провайдеры, которые позволяют получать данные.
(рис 16.4) Архитектура толстого клиента
Богатые Интернет приложения ( RIA ) выполняются в "песочнице" браузера.
Архитектура Веб-сервера представлена следующими компонентами (рис. 16.5) [6]:
уровень сервисов предоставляет интерфейсы клиентской части для взаимодействия с уровнем логики;
уровень бизнес логики идентичен уровню логики толстого клиента ;
уровень данных идентичен уровню данных толстого клиента.
(рис 16.5) Архитектура RIA-приложения
В табл. 16.2 представлено сравнение толстого клиента и RIA-приложения [6].
Сравнение "толстого" клиента и RIA-приложения
| Архитектура |
Преимущества |
Проблемы |
| Толстый клиент |
Может расходовать клиентские ресурсы
Интерактивность, богатый пользовательский функционал
Высокая способность к реагированию
Поддержка работы без сети
|
Требует установки (Click Once, Windows Installer, Copy)
Контроль версий
Зависимость от платформы
|
| RIA |
Тот же богатый пользовательский интерфейс, как и у толстого клиента
Поддержка 3D и медиа высокого качества
Простой способ распространения
Простой механизм контроля версий
Кросс-платформенность и кросс-браузерность
|
Небольшой размер приложений
Ограничения по использованию клиентских ресурсов
Требует установленного плагина для браузера
|
Если обобщить все вышесказанное, то RIA-приложения включили в себя [2]:
От толстого клиента:предоставление пользователю интерактивного интерфейса;
быстрое время отклика интерфейса без обновления страницы;
привычные средства пользовательского интерфейса, такие как: drag-and-drop и возможность работы как в режиме онлайн и оффлайн;
От интернет-приложения:быстрое развертывание;
кросс-платформенность;
использование прогрессивной загрузки для получения информации и данных;
использование большинства Интернет-стандартов;
От средств передачи данных:интерактивные аудио- и видео- технологии.
Основными достоинствами и преимуществами RIA-приложений являются [1, 3, 4, 5]:
RIA предлагают пользовательский интерфейс, не ограниченный лишь использованием языка HTML, применяемого в стандартных веб-приложениях (drag-and-drop, использование ползунка для изменения данных, возможность производить вычисления, которые не отправляются обратно на сервер);
интерфейсы RIA более интерактивны, чем стандартные интерфейсы веб-браузеров, которые требуют постоянного взаимодействия с удаленным сервером;
использование вычислительных ресурсов клиента и сервера лучше сбалансировано, что освобождает вычислительные ресурсы сервера, позволяя обрабатывать большее количество сессий одновременно за счет одного и того же аппаратного обеспечения;
движок клиента может взаимодействовать с сервером, не дожидаясь, пока пользователь совершит действие в приложении, нажав на кнопку или ссылку, что позволяет пользователю просматривать страницу и взаимодействовать с ней асинхронно с помощью коммуникации между движком и сервером;
приложения, доступные через браузер, не требуют установки;
кросс-платформеность и кросс-браузерность;
автоматическое обновление версий (версия программы обновляется на сервере);
меньше опасность заражения вирусами для пользователей за счет использования "песочницы";
частичная возможность работы в режиме offline.
Основными недостатками и ограничениями RIA являются [1, 3, 4, 5]:
поскольку RIA загружаются в локальной среде безопасности "песочница", они имеют ограниченный доступ к системным ресурсам;
как правило, для работы RIA требуется JavaScript или другие скриптовые языки, а, соответственно, если пользователь отключил активные сценарии в своем браузере, RIA может не функционировать должным образом или вообще не работать;
чтобы обеспечить платформенную независимость, некоторые RIA используют скриптовый язык на стороне клиента, например, такой как JavaScript, с частичной потерей производительности;
даже если нет необходимости в установке скрипта, движок клиента RIA должен быть передан клиенту сервером (поскольку большинство скриптов сохраняются в кэше, он должен быть передан хотя бы один раз);
если приложение основано на XHTML, возможны конфликты между целями приложения (которое хочет иметь контроль над его представлением и действиями) и целями X/HTML (которое хочет отдать контроль);
поисковые системы могут оказаться не в состоянии проиндексировать содержимое приложения RIA ;
идеальная замена для настольных приложений должна позволять пользователям подключаться к сети "эпизодически", однако типичные приложения RIA требуют подключения к Интернету (регулярного или постоянного);
известно множество проблем веб-совместимости с RIA (одна из распространенных заключается в том, что пользователю, читающему текст с экрана, сложно выявлять динамические изменения (вызванные JavaScript) в контенте HTML);
RIA нельзя расширять плагинами и модами, как это возможно в традиционных приложениях;
сложность интеграции с браузером – сохранения истории и адресной строки, перетаскивания файлов из операционной системы;
Accessability issues (проблемы доступности), в силу преобладания мультимедийного контента, который, например, не прочитают программы – "читалки" для слепых;
дорогая разработка.
Появление технологии RIA сопровождалось значительными сложностями в разработке веб-приложений. Традиционные веб-приложения, созданные на основе стандартного HTML, имеющего сравнительно простую архитектуру и довольно ограниченный набор функций, были относительно просты в разработке и управлении.
Основными аспектами, осложняющими процесс разработки RIA, являются:
Большая технологическая сложность делает разработку труднее ;
Архитектура RIA ломает парадигму веб-страницы ( традиционные веб-приложения представляют из себя набор веб-страниц, каждая из которых требует отдельного скачивания, инициированного запросом HTTP GET , когда как RIA вностит дополнительный сервер асинхронной коммуникации для поддержки более интерактивного интерфейса);
Асинхронная коммуникация осложняет выявление проблем производительности (клиент RIA может быть запрограммирован таким образом, чтобы постоянно загружать новый контент и обновлять дисплей, или (в приложениях, использующих подход Comet) движок на стороне сервера может постоянно передавать новый контент браузеру через постоянно открытое соединение);
Движок клиента усложняет измерение времени отклика приложения.
16.1.2. Ключевые термины
RIA, Rich Internet application, Традиционные веб-приложения, Толстый клиент, Архитектура RIA-приложения.
16.2. Технологии RIA
Рассмотрим, какие технологии создания RIA-приложений существуют на сегодняшний день.
16.2.1. Технологии Adobe
Фирма Adobe последовательно продвигает свои RIA -технологии на базе Flash-платформы и предоставляет полный стек решений и инструментов для создания визуальной и медийной составляющих, а также серверных решений [5]. Flash-плеер доступен на всех основных платформах и во всех основных браузерах. Кроме того, существует версия для мобильных устройств.
Стек технологий Adobe для создания RIA-приложений выглядит, как показано на рис. 16.6.
(рис 16.6) Стек технологий Adobe для создания RIA-приложенийИсточник: Adobe Flash Platform ActionScript reference for RIA development [7]
16.2.1.1. Adobe Flash
Adobe Flash (ранее известная как Macromedia Flash) – мультимедийная платформа, используемая для создания векторной анимации и интерактивных приложений (в том числе, игр), а также для интеграции видеороликов в веб-страницы [8].
Разработка Flash была начата компанией FutureWave, создавшей пакет анимации FutureSplash Animator. В 1996 году FutureWave была приобретена компанией Macromedia, которая переименовала FutureSplash Animator в Flash. Под этим наименованием платформа продолжает развиваться и поныне (хотя после того, как в 2005 году компания Macromedia была поглощена Adobe, Macromedia Flash стал официально называться Adobe Flash ).
Adobe Flash позволяет работать с векторной, растровой и ограниченно с трехмерной графикой, а также поддерживает двунаправленную потоковую трансляцию аудио и видео. Для КПК и других мобильных устройств выпущена специальная "облегченная" версия платформы Flash Lite, чья функциональность ограничена в расчете на возможности мобильных операционных систем и их аппаратных показателей.
В качестве основных средств разработки используются пакеты Adobe Flash Professional и Adobe Flash Builder 4, позволяющие создавать интерактивные приложения (в том числе, веб-приложения, игры и мультфильмы) (рис. 16.7).
(рис 16.7) Adobe Flash CS4Стандартным расширением для скомпилированных Flash-файлов (анимации, игр и интерактивных приложений) является SWF (Shockwave Flash или Small Web Format). Видеоролики в формате Flash представляют собой файлы с расширением FLV (при этом Flash в данном случае используется только как контейнер для видеозаписи). Расширение FLA соответствует формату рабочих файлов в среде разработки.
Flash-контент воспроизводится с помощью целого ряда программных средств, но доминирующее положение на рынке занимает официальный Adobe Flash Player, распространяемый в качестве бесплатного плагина для большинства современных браузеров. Также SWF-файлы можно просматривать с помощью различных свободных плееров, например, Gnash или swfdec. FLV-файлы воспроизводятся через Adobe Flash Player или через мультильтимедийные проигрыватели, такие как Quicktime и Windows Media Player, при наличии соответствующих плагинов.
В основе Flash лежит векторный морфинг, то есть плавное "перетекание" одного ключевого кадра в другой. Это позволяет делать сложные мультипликационные сцены, задавая лишь несколько ключевых кадров для каждого персонажа.
Flash использует язык программирования ActionScript, основанный на ECMAScript.
Основной недостаток Flash-приложений – чрезмерная требовательность к ресурсам процессора. Недостаточная мощность компьютера может повлиять на производительность операционной системы в целом, либо привести к искажению результатов работы Flash-приложения, связанных с отображением анимации или подсчетом времени. Иногда это связано с недостатками программного обеспечения отвечающего за обработку Flash-компонентов, либо низким качеством самого Flash-приложения.
Другой важный недостаток заключается в том, что не всегда есть возможность запустить Flash-приложение, либо она связана с некоторыми трудностями (например, необходимо установить плагин или обновить его до последней версии). Некоторые пользователи (или системные администраторы в рамках целой сети) отключают в настройках браузера возможность загружать контент, обрабатываемый плагинами или загружаемый во фреймах в целях информационной безопасности (в связи с возможной угрозой со стороны контента, например, перехват буфера обмена), экономии системных ресурсов, или для избавления от надоевшей рекламы.
Это делает технологию в целом ненадежной также для разработчиков, которым никто не гарантирует, что веб-приложение на основе Flash будет вообще воспроизведено. Поэтому Flash, в основном, используется для написания игр, небольших полуинтерактивных анимаций и для красиво оформленной рекламы, то есть в сфере развлечений и дизайна. Для серьезных веб-приложений, где взаимодействие с пользователем должно быть без ущерба красоте, обычно используется JavaScript, либо вообще не используются никакие технологии кроме тех, что 100 % работают (HTML, CGI).
В Интернете можно найти сайты, полностью оформленные в виде Flash-приложения (весь контент, а также элементы навигации). Обычно это сайты, посвященные играм, дизайнерские студии, личные странички и прочие сайты, целью которых является поразить посетителя красотой и необычностью реализации. Крупные порталы и информационные ресурсы стараются избегать использования Flash (за исключением вставки рекламных баннеров, невозможность вывода которых не вызывает неудобств для пользователей).
Использование Flash для размещения текстовой информации препятствует ее индексированию поисковыми системами. Однако существует множество способов решить эту проблему.
16.2.1.2. Adobe Flex
Adobe Flex также позволяет разрабатывать приложения на базе Flash-платформы, но без применения временной шкалы [5]. Вместо этого появляется язык разметки MXML, дающий возможность в декларативной форме задавать изменения состояний и переходы между ними. Adobe Flex предназначен исключительно для разработчиков. С его помощью создаются сложные интернет-приложения для бизнес-задач и для повседневного применения. Вся разработка во Flex ориентирована на применение готового набора расширяемых компонентов, подходящих почти для всех задач. CSS позволяет гибко настраивать внешний вид, как отдельных компонентов, так и всего приложения. Связывание данных помогает отображать измененную информацию практически без единой строки кода.
Flex приложение может компилироваться на сервере (для этого потребуется mod_flex.so или mod_flex.dll в зависимости от ОС и веб-сервера), а может – из IDE или непосредственно из командной строки с помощью компилятора mxmlc (начиная с Flex 2). Как и во Flash, результатом является файл swf, исполняемый Flash Player [9].
Принцип работы Flex показан на рис. 16.8 [10].
(рис 16.8) Принцип работы FlexFlex – это большой набор классов (Flex SDK), содержащий многие не вошедшие во Flash компоненты. Достоинства Flex тесно связаны с его спецификой, MXML. Например, Flex компоненты для построения графиков сделаны удобными для использования и выглядят очень приемлемо для использования "как есть".
Основными преимуществами технологии Flex являются [4]:
быстрый цикл освоения и разработки;
развитое community;
много учебных материалов и документации;
интеграция с дизайнерскими инструментами от Adobe;
надежная простая и эффективная платформа.
Основными недостатками технологии Flex являются [4]:
предрассудок "Flex это для мультиков", несмотря на надуманность и не серьезность одна из очень серьезных проблем;
существенные (по сравнению с Java) ограничения "песочницы";
многие разработчики акцентированы на визуализации, как следствие плохой серверный код.
Бесплатный инструментарий Adobe Flex SDK предлагается с июня 2006 г. Он содержит все необходимое для построения эффективных Flex-программ, включая компилятор MXML и библиотеки ActionScript 3.0.
Kомпания Adobe решила открыть исходный код среды Flex к концу 2007 года и начать распространение этого продукта на условиях Mozilla Public License (MPL).
Интегрированная среда разработки Flex Builder 3, которая обеспечивает более высокую производительность, создана на свободно распространяемой платформе разработки Eclipse. Поскольку многие разработчики уже используют Eclipse при программировании на Java, Flex Builder 3 предоставляет им знакомую среду для создания и Java-приложений, и полнофункциональных клиентов (рис. 16.9).
(рис 16.9) Adobe Flex Builder 3Источник: Adobe Flex Builder 3 [11]
Кроме того, возможна разработка Flex (ActionScript 3) проектов с помощью средств OpenSource – в частности, FlashDevelop (Windows), axdt, flex2ant (оба последних средства являются плагинами Eclipse и кроссплатформенны, однако по удобству работы с ними значительно уступают FlashDevelop).
Flex 2, помимо скорости разработки, предоставляет полные мультимедийные возможности платформы Flash: включая потоковое видео, звук (в том числе и программный), бинарные сокеты и большое число прочих новых возможностей ActionScript 3.
Благодаря Flex 2, веб-сервисы могут использоваться для связи с сервером при частом обращении к данным при небольшой полезной нагрузке. Для более ресурсоемких приложений Adobe предлагает программное обеспечение Flex Data Services 2 Express, которое может поддерживать связь между источником данных и уровнем представления. Flex Data Services 2 способен передавать данные с сервера на клиент. Серверный компонент может, например, извлечь данные из серверного приложения SAP и переслать их клиенту. Теперь функции Flex Presentation Server встроены в Flex Data Services.
Еще одно неоспоримое достоинство технологии Flex, тесно связанное с достоинствами ActionScript 3 – это возможность OpenSource разработки Flash-проектов без использования Adobe Flash IDE, с помощью "чистого" программирования. При этом Flash-разработка становится принципиально доступна в том числе и на платформе Linux.
16.2.1.3. Adobe Air
Adobe AIR (Adobe Integrated Runtime) позволяет запускать веб-приложения на Рабочем столе персонального компьютера [5]. Это могут быть приложения как на базе HTML, так и на базе Flash-платформы с возможностью просмотра PDF-документов. Таким образом, веб-разработчики могут создавать настольные приложения, используя уже существующие навыки. Adobe AIR предоставляет ряд возможностей по интеграции с операционной системой: окна, доступ к файловой системе, защищенное локальное хранилище, локальную базу данных и технологию перетаскивания объектов (drag-n-drop). AIR-приложения могут устанавливаться прямо из Интернета.
Приложения, написанные с использованием AIR, могут быть запущены на нескольких платформах, для которых Adobe поставляет среду выполнения, а именно [12]: Microsoft Windows NT (XP, Vista, Windows 7), Mac OS X (PowerPC и Intel), GNU/Linux (только для 32-хбитных процессоров x86).
В связи с кросс-платформенностью отсутствует прямой доступ к API, существующим только для некоторых из этих платформ.
Архитектура платформы Air представлена на рис. 16.10 [10].
(рис 16.10) Архитектура платформы AirОсновными преимуществами технологии Air являются [4]:
используя AIR, можно легко перенести готовое HTML или Adobe Flex приложение на компьютер пользователя;
приложения имеют доступ к файловой системе, буферу обмена, имеется поддержка нескольких окон, технологии drag-and-drop.
Основными недостатками технологии Air являются [4]:
ограниченный доступ к SQLite и веб-сервисам;
приложения, написанные на AIR, являются однопоточными;
это проприетарное программное обеспечение, приложения, написанные на AIR, зависят от среды выполнения Adobe.
16.2.2. Ajax
Ajax представляет собой смесь технологий, в основе которых лежат язык JavaScript и объект XMLHttpRequest [5]. Благодаря этому приложения могут получать данные с сервера и отображать их без перезагрузки страницы. Формально Ajax не является RIA -технологией, так как не интегрирует в себе медиа-возможности, не обладает стандартными средствами прорисовки векторной графики, а JavaScript по-разному исполняется в различных браузерах.
Эти проблемы, так или иначе, решены большинством существующих Ajax -библиотек, но они основаны на гибриде технологий (например, использование Flash для видео). С проблемой кросс-браузерности также, в основном, справились, но она снова может возникнуть при выходе новых версий браузеров.
Сейчас существует множество Ajax -библиотек, имеющих свои особенности и сферы применения. Однако нет единого стандарта, и при переходе с одной библиотеки на другую разработчик вынужден заново изучать документацию.
Использование Ajax позволяет значительно обогатить традиционные веб-страницы и сделать работу с ними очень комфортной. Тому существует множество ярких примеров. Применять Ajax при создании сайтов-презентаций и интернет-приложений, предлагающих пользовательский опыт, максимально приближенный к уровню настольных приложений, скорее всего, нецелесообразно.
Основными преимуществами технологии Ajax являются [4]:
есть в любом браузере;
прост в освоении;
быстрый цикл разработки;
развитый инструментарий;
развитое сообщество.
Основными недостатками технологии Ajax являются [4]:
иногда кросс-браузерная несовместимость;
сложно/дорого разрабатывать большие приложения;
сложно отлаживать, дорого поддерживать;
низкая производительность.
16.2.3. Технологии Microsoft
В корпорации Microsoft также почувствовали, насколько актуальны RIA -технологии, и решили предложить разработчикам средства создания насыщенных интернет-приложений.
16.2.3.1. ActiveX
Технология ActiveX – средство, при помощи которой Internet Explorer (IE) использует другие приложения внутри себя [13]. С помощью ActiveX IE загружает Windows Media Player, Flash, Quicktime и другие приложения, которые могут воспроизводить файлы, внедренные в веб-страницы. Элементы управления ActiveX активизируются при щелчке по такому объекту на веб-странице, например, WMV-файлу, чтобы загрузить его для отображения в окне браузера Internet Explorer.
Являясь продуктом Microsoft, ActiveX была специально спроектирована для работы с системами Windows. ActiveX не поддерживается другими операционными системами, такими как Mac или Linux.
Firefox и другие кросс-платформенные браузеры используют систему Программный интерфейс подключаемых модулей Netscape (Netscape Plugin Application Programming Interface, NPAPI)). NPAPI выполняет функции, подобные таковым из ActiveX.
Управляющие элементы ActiveX – эквивалент подключаемых модулей NPAPI. Однако ActiveX и технология подключаемых модулей имеют отличия. В то время как с помощью надстройки ActiveX можно нанести вред компьютеру, подключаемые модули по своему существу имеют лучшие функции безопасности. Они имеют меньше контроля над веб-страницей, в которую они внедрены, и не могут использоваться в приложениях, отличных от веб-браузера. ActiveX имеет более широкое применение для большего числа приложений
Как технология для RIA технология ActiveX обладает рядом серьезных недостатков [4]:
платформа только IE и Windows;
нетривиален в разработке и отладке;
большой период освоения технологии;
имеются некоторые проблемы с безопасностью.
Основное достоинство технологии ActiveX для RIA [4]:
исполняется native-код.
16.2.3.2. Технология WPF
Windows Presentation Foundation (WPF, кодовое название – Avalon) – графическая (презентационная) подсистема в составе .NET Framework 3.0, имеющая прямое отношение к XAML (Extensible Application Markup Language) [14]. WPF вместе с .NET Framework 3.0 предустановленна в Windows Vista и Windows 7, а также доступна для установки в Windows XP SP2 и Windows Server 2003 и 2008.
Это первое реальное обновление технологической среды пользовательского интерфейса со времени выпуска Windows 95. Оно включает новое ядро, которое призвано заменить GDI и GDI+, используемые в нынешней Windows-платформе. WPF представляет собой высокоуровневый объектно-ориентированный функциональный слой (framework), позволяющий создавать 2D- и 3D-интерфейсы. В будущем WPF должен объединить Windows и Web-разработку (в том числе AJAX). WPF для отрисовки использует не GDI+, а DirectX. Также WPF поддерживает темы и нестандартные для WinForms контролы. Производительность WPF выше, чем у GDI+ за счет использования видеокарты.
WPF в составе .NET Framework изображено на рис. 16.11 [15].
(рис 16.11) Состав .NET FrameworkПосле появления Microsoft .NET Framework 3.0, а в частности WPF, разрешилась проблема дизайна приложений [16]. В данном случае дизайнер может взять на себя роль программиста и описать необходимый ему интерфейс на простом и доступном языке XAML. При этом одновременно решается 2 задачи:
разгрузка программиста от процесса "рисования форм" – теперь ему не надо заботиться о внешнем виде программы, об этом позаботится дизайнер;
отделение данных от их представления – это означает, что в любой момент можно сменить внешний вид программы, при этом, не затрагивая логику работы.
Также благодаря уже написанным расширениям для популярных графических редакторов, возможен прямой экспорт из программ в файл xaml. Уже есть плагины для таких программ как: Blender, Maya, Adobe Fireworks, LightWave, Adobe Illustrator. Есть и готовые решения для работы с XAML: Microsoft Expression Blend, Microsoft Expression Design, Aurora [17].
Основа WPF – это независимый от разрешения экрана и основанный на векторной графике механизм отрисовки, который был построен для использования всех преимуществ современного графического оборудования [18]. WPF расширяет эту основу исчерпывающим набором средств разработки приложений, включающих язык XAML, элементы управления, привязку данных, структуру, графику двухмерный и трехмерный, анимацию, стили, шаблоны, документы, мультимедиа, текст и типографию.
16.2.3.3. Технология Silverlight
Microsoft Silverlight предоставляет графическую систему, схожую с Windows Presentation Foundation, и объединяет мультимедиа, графику, анимацию и интерактивность в одной программной платформе. Он был разработан, чтобы работать с XAML и с языками Microsoft .NET. XAML используется для разметки страниц, использующих векторную графику и анимацию. Текст, содержащийся в Silverlight приложениях, доступен для поисковых систем, так как он не компилируется, а доступен в виде XAML. Silverlight также можно использовать для того, чтобы создавать виджеты для Windows Sidebar в Windows Vista.
Также Silverlight – это плагин для браузера, который позволяет запускать приложения, содержащие анимацию, векторную графику и аудио-видео ролики, что характерно для RIA ( Rich Internet application ) [19]. Версия 2.0, выпущенная в октябре 2008, добавила поддержку для языков .NET и интеграцию с IDE. 10 июля 2009 года Microsoft выпустила Silverlight 3, а на данный момент готовится к выходу Silverlight 4.
Silverlight реализован для ОС Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows 7, Mac OS X 10.4, Mac OS X 10.5 и браузеров Internet Explorer 6.0/7.0/8.0, Mozilla Firefox 1.5/2.0/3, Safari 3.1, Google Chrome 3.0. В будущем также планируется поддержка Opera, мобильных устройств, начиная с Windows Mobile 6 и Symbian (Series 60), и, возможно, других платформ.
Silverlight поддерживает воспроизведение WMV, WMA и MP3 для всех поддерживаемых браузеров, не требуя при этом дополнительных компонентов, таких как Windows Media Player.
Silverlight позволяет динамически загружать XML и использовать DOM для взаимодействия с ним так же, как это делается в Ajax. Silverlight содержит объект Downloader, благодаря которому можно скачивать скрипты, медиа-файлы и т. д., если это необходимо приложению. Начиная с версии 2.0, логика программы может быть описана в любом из языков .NET, включая динамические языки программирования, такие как Iron Ruby и Iron Python, которые в свою очередь исполняются в DLR (Dynamic Library Runtime) , а не CLR (Common Language Runtime).
Silverlight 1.0
Первая бета-версия Silverlight была выпущена в декабре 2006 года. Microsoft рассчитывала выпустить стабильную версию в середине 2007 года. Ходили слухи, что в Microsoft планируется частичное открытие исходного кода Silverlight, однако они были опровергнуты. Тем не менее, часть Dynamic Language Runtime включенная в Silverlight, доступна на портале Microsoft для хостинга открытых и проприетарных проектов CodePlex под Microsoft Permissive License.
Silverlight v.1.0 является подключаемым модулем обозревателя для обработки XAML и кодеки для воспроизведения мультимедийного содержимого в форматах WMV, WMA и MP3. Он представляет обозревателю внутреннюю модель DOM, управляемую из JavaScript кода. Язык XAML основан на XML, поэтому документ, определяющий загружаемый клиенту пользовательский интерфейс – текстовый и вполне пригоден для индексирования поисковыми системами. Используя представленную модель DOM, JavaScript может динамически обновлять содержимое Silverlight, аналогично DHTML. Также можно вызывать методы управления презентацией (запуска анимации или приостановки воспроизведения видео, например).
Архитектура Silverlight 1.0 представлена на рис. 16.12.
(рис 16.12) Архитектура Silverlight 1.0Silverlight приложение начинается с вызова объекта Silverlight из HTML страницы, загружающего XAML файл. XAML файл содержит объект Canvas, выступающий подложкой для других элементов. Объекты XAML способны генерировать события, перехватываемые из JavaScript.
В комплекте к Visual Studio 2005 SP1 прилагаются "Silverlight Tools for VS 2005".
Участники проекта Mono 16 мая 2008 года выпустили реализацию плагина Silverlight на базе открытого ПО, работающую на Linux – Moonlight, однако ни открытым, ни свободным ПО она считаться не может, так как разрешение на использование патентов предоставляется только получателям кода от Novell, и только для создания плагинов. Moonlight 2.0 находится в состоянии Preview 3.
Silverlight 2.0
Версия Silverlight 2.0 была выпущена 14 октября 2008 года и включала в себя подмножество библиотек .NET Framework.
Архитектура Silverlight 2.0 представлена на рис. 16.13.
(рис 16.13) Архитектура Silverlight 2.0Среди возможностей Silverlight 2.0 можно отметить [20]:
поддержка .NET Framework вместе с библиотекой Rich Base Class Library: совместимое подмножество полной версии .NET Framework;
мощные встроенные элементы управления, включающие в себя DataGrid, ListBox, Slider, ScrollViewer, Calendar controls и другие;
поддержка усовершенствованных образов и шаблонов;
технология Deep Zoom, обеспечивающая интерактивность и навигацию по изображениям с высоким разрешением;
комплексная поддержка работы в сети;
расширенная языковая поддержка .NET Framework: Visual Basic, C#, JavaScript, IronPython и IronRuby;
улучшенная защита контента – Silverlight DRM на основе защиты контента PlayReady для связанных сред Silverlight;
улучшенная масштабируемость сервера и расширенная поддержка рекламных носителей;
кросс-платформенная и кросс-браузерная поддержка: Mac, Windows и Linux в Firefox, Safari, Internet Explorer.
Кроме этого стали доступны для скачивания Microsoft Silverlight Tools for Visual Studio 2008, которые включали в себя:
шаблоны для проектов Visual Basic и C#;
интеллисенс и генераторы кода для XAML;
отладку приложений Silverlight;
поддержку Web reference;
интеграцию с Expression Blend.
Silverlight 3.0
18 марта 2009 года на конференции MIX09 в Лас-Вегасе Microsoft продемонстрировала бета-версию. 10 июля 2009 года в ходе мероприятия See the Light Microsoft объявила об официальном выпуске RTM версии. В настоящее время последняя версия доступна для загрузки на сайте Microsoft.
Среди особенностей новой версии [21, 22]:
Поддержка высококачественного видео и аудио:прямое вещание и доступность по запросу видео в формате HD (720p и выше) с динамическим изменением качества сигнала в зависимости от текущего канала;
поддержка форматов H.264/AAC Audio, основанных на MPEG-4;
видео высокой четкости в полноэкранном режиме, используя аппаратное ускорение GPU;
поддержка формата Raw AV для создания сторонних кодеков;
возможность защиты контента через DRM;
плавное потоковое воспроизведение (в режиме реального времени и по требованию) видео высокой четкости HD с разрешением 1080 точек и более с помощью службы IIS Media, поддерживающей технологию Smooth Streaming;
Новые графические возможности:трехмерная графика, учитывающая перспективу;
поддержка аппаратного ускорения при работе с трехмерной графикой;
новый программный интерфейс растровых рисунков;
кэширование в виде растровых рисунков;
новый API для отрисовки графики;
поддержка приложений, использующих темы;
новые эффекты анимации, такие как эффекты пружины и отскока, делающие анимацию более естественной, и возможность создания собственных математических функций для описания анимации;
усовершенствованные обложки элементов управления, что позволяет разным приложениям совместно использовать стили и обложки элементов управления;
усовершенствованная поддержка визуализации текста и локальных шрифтов;
Новые возможности для создания интерактивных приложений ( RIA ):более 60 готовых элементов управления с исходными кодами;
глубокое связывание (Deep linking), позволяющее создавать закладки для страниц в RIA-приложениях ;
Silverlight 3 разрешает выполнять поисковую оптимизацию в соответствии с потребностями, которые возникают при работе RIA-приложений ;
новые возможности по работе с данными – связывание между элементами, Data Forms, валидация данных, поддержка бизнес-объектов;
улучшенная производительность – кэширование библиотек, новые возможности Deep Zoom, бинарный XML, локальное связывание между Silverlight-приложениями;
Возможности работы без браузера:поддержка ярлыков на рабочем столе и в меню "Пуск";
позволяет не запускать браузер при работе с приложениями;
высокая надежность, безопасность и использование "песочницы";
установка, не требующая прав администратора;
поддержка автоматического обновления;
проверка подключения к Интернету (с браузером и без него);
интеграция с Windows 7;
поддержка устройств с multitouch-интерфейсом;
Другие возможности:доступ ко всем системным цветам для создания контрастных интерфейсов для слабовидящих пользователей;
управление цифровыми правами Silverlight, основанное на защите контента PlayReady, позволяет отображать в веб-браузере защищенный контент, используя шифрование по протоколу AES (Advanced Encryption Standard) или управление цифровыми правами Windows Media.
Silverlight 4.0
В четвертой версии Silverlight введена возможность передачи видеопотока от клиента на сервер в любых приложениях Silverlight иначе, чем это было организовано ранее.
В ранних версиях потоковая передача от клиента на сервер передавались при помощи Flash-приложения или при помощи программы Expression Encoder; видеопоток передавался от клиента на сервер, а потом проигрывался с сервера в приложении Silverlight.
Для прямой трансляции аудио/видео с микрофона/веб-камеры, в четвертой версии, можно уже обходиться без Flash и Expression Encoder.
В табл. 16.3 отражена совместимость Silverlight различных версий с браузерами и операционными системами [19].
Совместимость Silverlight с браузерами и ОС
| ОС/Браузер |
IE 6 SP1 |
IE 7 |
IE 8 |
Firefox |
Safari |
Opera |
Google Chrome |
| Windows Vista/2008 |
— |
1.0, 2.0, 3.0 |
2.0, 3.0 |
1.0, 2.0, 3.0 |
1.0, 2.0; через NPAPI |
Неофициально |
2.0 |
| Windows XP/2003/Home Server |
— |
1.0, 2.0, 3.0 |
2.0, 3.0 |
1.0, 2.0, 3.0 |
1.0, 2.0; через NPAPI |
Неофициально |
2.0 |
| Windows 2000 |
2.0 |
— |
— |
2.0
Неофициально |
2.0; через NPAPI |
Запланирована |
— |
| Windows Mobile 6 |
2.0 |
— |
— |
— |
— |
— |
— |
| Mac OS 10.4/10.5 PowerPC |
— |
— |
— |
1.0 |
1.0 |
Запланирована |
— |
| Mac OS 10.4/10.5 Intel |
— |
— |
— |
1.0, 2.0 |
1.0, 2.0 |
Запланирована |
— |
Opera получит официальную поддержку в следующих версиях. Silverlight уже поддерживает Opera неофициально, с помощью хака.
Для ОС GNU/Linux, функциональность будет доступна через Moonlight.
Silverlight for Mobile будет использоваться для того, чтобы сделать доступным Silverlight приложения на мобильных устройствах.
Silverlight требует x86-процессор с поддержкой SSE. Поддерживаются процессоры Intel Pentium III и выше, и AMD Athlon XP и выше. Некоторые модели AMD Duron тоже поддерживаются.
Основными преимуществами технологии Silverlight являются [4]:
общий с .Net язык и среда разработки;
Silverlight открыто все сообщество .Net разработчиков;
активно развивается и продвигается Microsoft;
автоматически доступен в новых инсталляциях Windows;
плагин Silverlight уже установлен на примерно 60% операционных систем.
Основными недостатками технологии Silverlight являются [4]:
доступен не для всех комбинаций платформа/браузер;
на технологии Silverlight все еще создано недостаточно много приложений (по сравнению с Adobe Flash /Flex);
небольшое количество библиотек и компонентов, в том числе open source компонент (по сравнению с другими платформами).
16.2.4. Технологии Oracle (Sun)
Рассмотрим также RIA -технологии компании Sun Microsystems, которая с января 2010 года входит в состав Oracle Corporation.
Если обратиться к истории, то Java-апплеты были самой первой RIA -технологией, которая стала доступной еще в 1995 г. [5]. Однако апплеты не получили такого широкого распространения, как, например, Flash-плеер. Это обусловлено рядом причин. Так, для запуска Java-апплета может требоваться специфическая версия виртуальной машины Java, обладающая большим "весом", при этом не предусмотрено прозрачной для пользователя процедуры ее установки и обновления в браузере. Для старта апплета необходим запуск виртуальной машины, что требует достаточно продолжительного времени. С точки зрения внешнего вида большинство апплетов также оставляют желать лучшего. Кроме того, отсутствуют специальные инструменты для дизайнера.
Сейчас в Sun решают эти проблемы, и многие минусы уже устранены в рамках проекта Java SE 6 Update N. А еще появились и новая визуальная тема Nimbus, обладающая современным дизайном, и набор средств по определению и установке требуемой версии JRE (причем для ее запуска не обязательно дожидаться скачивания всех библиотек), и возможность быстрого запуска виртуальной машины.
16.2.4.1. Технология JavaFX
JavaFX – это платформа для создания Rich Internet Applications ( RIA s), которые могут запускаться на персональных компьютерах и мобильных устройствах [23]. Технология JavaFX позволяет создавать приложения для работы с мультимедийным контентом, графические интерфейсы пользователя для бизнес-приложений, игры для персональных компьютеров и мобильных устройств, насыщенные графикой, мультимедиа веб-сайты и др.
JavaFX был разработан специалистом по пользовательским интерфейсам Кристофером Оливером, когда он работал в компании See Beyond, и на уровне проекта язык назывался F3 (Form Follows Function), что можно перевести как "форма, следующая за функцией" [24]. В 2005 году компания See Beyond была куплена Sun Microsystems, после чего состоялось первое переименование языка F3 в Java F3, а затем и второе – в JavaFX.
Впервые от лица Sun объявление о выпуске JavaFX было сделано на конференции JavaOne в мае 2007 года, а с июля 2008-го открылась возможность загружать JavaFX SDK для Windows и Mac OS, а также плагин JavaFX для NetBeans 6.1. Развитием мультимедийных возможностей JavaFX занимаются специализирующиеся в этой области компании On2 Technologies и TrueMotion Video.
Платформа JavaFX 1.0 включает в себя следующие компоненты [25] (рис. 16.14):
Средства разработки JavaFX 1.0 SDK – компилятор и среда исполнения JavaFX, язык программирования JavaFX Script, а также графические, медийные и веб-библиотеки для создания RIA-приложений для настольных компьютеров, веб-сайтов и мобильных устройств.
Среда разработки NetBeans IDE 6.5 с поддержкой JavaFX 1.0 – интегрированная среда разработки для создания, просмотра и отладки приложений, написанных на JavaFX Script. В редакторе JavaFX Script есть возможность быстрого добавления объектов JavaFX с уже готовыми геометрическими фигурами, компонентами интерфейса пользователя, средствами преобразования и анимацией.
JavaFX 1.0 Production Suite – набор инструментов и плагинов для экспорта графических объектов в приложения JavaFX. Включает следующие компоненты:Плагины JavaFX 1.0 для графических редакторов Adobe Photoshop CS3 и Adobe Illustrator CS3. С помощью плагинов можно экспортировать графические объекты из этих приложений в код JavaFX Script.
JavaFX 1.0 Media Factory: набор инструментов для конвертирования SVG-графики в код JavaFX и просмотра графических объектов, импортированных в JavaFX из других форматов. Также включает примеры приложений, учебные курсы, статьи, API-документацию и примеры кода.
(рис 16.14) Компоненты для создания RIA-приложенийИсточник: JavaOne: Sun rolls out JavaFX [26]
Приложения JavaFX создаются с помощью декларативного языка программирования JavaFX Script. Для разработки приложений на языке JavaFX Script необходимо скачать и установить JavaFX 1.0 SDK.
Из кода, написанного на языке JavaFX Script, можно обращаться к любым библиотекам Java. Поэтому совместное использование языков Java и JavaFX Script позволяет решать разнообразные задачи, например, логика бизнес-приложения может быть написана на Java, а графический интерфейс пользователя – на JavaFX Script.
Приложения, написанные на языке JavaFX Script, могут запускаться на компьютерах с установленной средой исполнения Java 1.5 и выше. В настоящее время поддерживаются следующие операционные системы: Windows, Mac OS X, GNU/Linux и Solaris.
Для создания приложений для мобильных устройств разработчикам предлагается мобильный эмулятор, входящий в состав JavaFX 1.0 SDK.
16.2.5. Другие технологии
Существуют и другие технологии создания RIA-приложений [4].
Одной из таких технологий является Google Gears – модуль расширения для браузера, позволяющий AJAX-приложениям расширить ограничения песочницы. К осноным возможностям Google Gears относятся:
доступность ресурсов offline;
локальная SQL Lite база данных, синхронизация данных с сервером;
асинхронные задачи;
выбор нескольких файлов для загрузки;
превью картинок;
drag-and-drop.
Однако осенью 2009 года представители Google остановили работы по развитию технологии Google Gears в пользу HTML 5.0, продолжая только ее поддержку.
Спецификация HTML 5.0, находящаяся сейчас в разработке, поддерживает многие элементы RIA:
рисование 2D-картинок в реальном времени;
контроль над проигрыванием медиафайлов;
хранение данных в браузере;
drag-and-drop;
работа с сетью, push технология.
12.2.6.
16.2.7. Сравнение технологий
Приведем сравнение технологий создания RIA-приложений (табл. 16.4) [10, 27, 28].
Сравнение технологий создания RIA-приложений
| Технологии |
WPF |
Silverlight 3.0 |
Flex |
Flash |
Air |
JavaFX |
| Основные характеристики |
| OS |
Windows |
Windows
MacOS
Linux |
Windows
MacOS
Linux |
Windows
MacOS
Linux |
Windows
MacOS
Linux |
Windows
MacOS
Linux |
| Браузеры |
IE, Firefox |
IE, Firefox, Safari, Chrome |
IE, Firefox, Safari, Opera, Netscape, Chrome |
IE, Firefox, Safari, Opera, Netscape, Chrome |
- |
IE, Firefox, Safari, Opera, Netscape, Chrome |
| Опенсорность |
+/- |
- |
+/- |
- |
+/- |
+ |
| Разработка |
| Языки |
XAML+CLS (C#, VB…) |
XAML+
JavaScript/
CLS(C#, VB…)/DLR
(Python) |
MXML+
ActionScript |
ActionScript |
MXML/
ActionScript/JavaScript/
HTML |
JavaFX Script, Java platform (Java, Groovy…) |
| Data Binding |
+ |
+ |
+ |
- |
+ |
+ |
| Декларативный язык разметки |
+ |
+ |
+ |
- |
+ |
+ |
| Смешивание разметки и кода |
+ |
+ |
+ |
- |
+ |
+ |
| Code Behind |
+ |
+ |
+ |
- |
+ |
+ |
| Инструментарий |
| Инструментарий |
Visual Studio, Microsoft Expression
(Blend…), XamlPad, Notepad… |
Visual Studio, Microsoft Expression
(Blend…), Notepad |
Flex Builder, Thermo, Notepad… |
Flash, Flash
Develop, FDT |
Flex Builder, Aptana Studio, Notepad… |
NetBeans, Eclipse, JavaFX Pad, JFXBuilder, Notepad |
| WYSIWYG-редакторы |
Expression Blend, Visual Designer for WPF |
Expression Blend |
Flex Builder, Thermo |
Flash |
Flex Builder, Thermo, Flash |
JFXBuilder |
| Платформы для разработки |
Windows |
Windows |
Windows
MacOS
Linux |
Windows
MacOS |
Windows
MacOS
Linux |
Windows
MacOS
Linux |
| Стоимость SDK |
Бесплатно |
Бесплатно |
Бесплатно |
~$699 |
Бесплатно |
Бесплатно |
| Фрэймворки |
| GUI-фрэймворк |
Компоненты и
лэйауты |
Компоненты
лэйауты |
Компоненты и
лэйауты |
Компоненты |
Компоненты и
лэйауты |
Компоненты и
лэйауты |
| Расширяемость |
+ |
+ |
+ |
+ |
+ |
+ |
| Drag-n-drop |
+ |
+ |
+ |
- |
+ |
+ |
| Компоненты сторонних разработ-чиков |
+ |
+ |
+ |
+ |
+ |
- |
| Поддержка accessibility |
+ |
+ |
+ |
+ |
+ |
+ |
| GUI Automation |
+ |
+ |
+ |
+ |
- |
+ |
| Кастомизация/скинизация |
| Кастомизация внешнего вида компонент |
+ |
+ |
+ |
+ |
+ |
+ |
| Designtime skinning (styling) |
+ |
+ |
+ |
+ |
+ |
+ |
| Runtime skinning (styling) |
+ |
+ |
+ |
- |
+ |
+ |
| Видео |
| Кодеки |
(Windows Media Player) |
WMV, VC-1, H.264, ACC Video, DRM |
Sorenson Spark, On2 VP6-E, On2 VP6-S, H.264,
flv |
Sorenson Spark, On2 VP6-E, On2 VP6-S, H.264 ,
flv |
Sorenson Spark, On2 VP6-E, On2 VP6-S, H.264 ,
flv |
- |
| Hardware Acceleration |
+ |
+ |
+ |
+ |
+ |
|
| HD-видео |
+ |
+ |
+ |
+ |
+ |
|
| DRM |
+ |
+ |
- |
- |
- |
|
| Streaming |
+ |
+ |
+ |
+ |
+ |
|
| Звук |
| Форматы |
(Windows Media Player) |
MP3, WMA, DRM |
MP3, AAC |
MP3, AAC |
MP3, AAC |
AU, AIFF, WAV, MIDI |
| VoIP |
- |
- |
- |
- |
- |
- |
| Наличие VoIP-решений |
+ |
- |
+ |
+ |
+ |
_ |
| Графика |
| Встроенная поддержка 3D |
+ |
+ |
- |
- |
- |
- |
| Векторная графика |
+ |
+ |
+ |
+ |
+ |
+ |
| Загрузка JPG |
+ |
+ |
+ |
+ |
+ |
+ |
| Загрузка PNG |
+ |
+ |
+ |
+ |
+ |
- |
| Загрузка GIF |
+ |
- |
+ |
+ |
- |
+ |
| Hardware acceleration |
+ |
+ |
- |
- |
- |
+ |
| Битмап-эффекты |
+ |
+ |
+ |
+ |
+ |
+ |
| Дополнительно |
| Поддержка микрофона |
+ |
-* |
+ |
+ |
+ |
- |
| Поддержка вебкамеры |
+ |
-* |
+ |
+ |
+ |
- |
| Полноэкранный режим |
+ |
+ |
+ |
+ |
+ |
- |
| Клиент/сервер
Протоколы |
Все, что поддерживает .NET |
XML(JSON, Web services, RSS, POX, REST), WCF Services |
HTTP, Socket, XML, AMF, RTMP |
HTTP, Socket, XML, AMF, RTMP |
HTTP, Socket, XML, AMF, RTMP |
Все, что поддерживает Java-платформа |
* Ожидается в версии Silverlight 4.0.
Колонка для WPF касается XBAP, а колонка JavaFX – апплетов на базе JavaFX, так как эти виды приложений ориентированы на веб, когда JavaFX и WPF-приложения могут быть, а могут и не быть связанными с Веб.
16.2.8. Ключевые термины
Adobe Flash, Adobe Flex, Adobe AIR, Ajax, XMLHttpRequest, ActiveX, Windows Presentation Foundation, Microsoft Silverlight, JavaFX, Google Gears, HTML 5.0.
16.3. Примеры RIA-приложений
16.3.1. Технологии Adobe
Рассмотрим примеры построения RIA-приложений на технологиях компании Adobe (Flash/Flex) [3]:
Adobe Photoshop Express. Онлайновая версия известного графического редактора от компании Adobe, которая является основным поставщиком решений длясоздания RIA.Адрес в интернете: https://www.photoshop.com/express/
Flauntr – также как Photoshop Express позволяет проводить различные операции с фотографиями – кадрирование, наложение различных эффектов, добавление подписей, изменение характеристик фото и т.п.Адрес в интернете: http://www.flauntr.com
RIA – интернет-магазин новозеландских сыроделовАдрес в интернете: http://www.whitestonecheese.co.nz
Интернет-магазин французских винАдрес в интернете: http://www.vinotinto.fr
Демонстрационная версия программного обеспечения, которое используется для создания разнообразных графиков и диаграммАдрес в интернете: http://visudemos.ilog.com/webdemos/charts3d/charts3d.html
Текстовый процессор Buzzword компании Adobe:Адрес в интернете: http://www.buzzword.com

Другие примеры RIA приложений (на платформе Adobe Flex ) можно посмотреть на по ссылке: http://flex.org/showcase/.
16.3.2. Технология Ajax
Самым ярким примером построения RIA-приложений на технологии AJAX являются продукты компании Google [4]:
GmailВеб-интерфейс Gmail целиком построен на браузерном сценарном языке программирования JavaScript, что дает необычные для веб-среды возможности, такие как прием команд с клавиатуры, обновление страницы без перезагрузки (технология AJAX), ниспадающие списки выбора адресатов и другие.
Адрес в интернете: http://gmail.com.
Google DocsАдрес в интернете: http://docs.google.com/.
16.3.3. Технологии Microsoft
Рассмотрим примеры построения RIA-приложений на технологиях компании Microsoft (Silverlight) [29]:
Проект Радикал-Фото, представляющий собой сервис для оперативной публикации фотографий в интернет-форумах, блогах, досках объявлений, чатах.На данном сайте используется технология Deep Zoom.
Адрес в интернете: http://www.radikal.ru/admintopdz.aspx.
Сайт фанатов рок'н'роллаНа данном сайте используется технология Deep Zoom.
Адрес в интернете: http://memorabilia.hardrock.com/
Спортивный портал sportbox.ruНа данном сайте используется технология Smooth Streaming.
Адрес в интернете: http://sportbox.ru
Музыкальный портал station.ruДанный портал позволяет использовать музыкальный плеер, построенный на технологии Silverlight, без браузера.
Адрес в интернете: http://station.ru
Сайт технологии SilverlightАдрес в интернете: http://www.microsoft.com/rus/silverlight/.
Картографический сервис MicrosoftАдрес в интернете: http://www.bing.com/Maps/explore/
Интерактивный сериал "Погружение"На данном сайте используется технология Гипервидео (новый медиа-формат, в основе которого лежит управляемое видео).
Адрес в интернете: http://immersion.actio.tv/

Другие примеры RIA приложений (на платформе Microsoft Silverlight ) можно посмотреть по ссылке: http://www.microsoft.com/rus/silverlight/.
16.4. Краткие итоги
RIA – это приложение, доступное через Интернет, богатое функциональностью традиционных настольных приложений, не поддерживаемой браузерами непосредственно.
В RIA значительная часть функционала вынесена в клиентскую часть, т.е. исполняется на стороне клиента.
Богатые Интернет приложения ( RIA ) выполняются в песочнице браузера.
Adobe Flash – мультимедийная платформа, используемая для создания векторной анимации и интерактивных приложений, а также для интеграции видеороликов в веб-страницы.
Adobe Flex также позволяет разрабатывать приложения на базе Flash-платформы, но без применения временной шкалы.
Adobe AIR позволяет запускать веб-приложения на Рабочем столе.
Ajax представляет собой смесь технологий, в основе которых лежат язык JavaScript и объект XMLHttpRequest.
Технология ActiveX – средство, при помощи которой Internet Explorer использует другие приложения внутри себя.
Windows Presentation Foundation – графическая (презентационная) подсистема в составе .NET Framework 3.0.
Microsoft Silverlight предоставляет графическую систему, схожую с Windows Presentation Foundation, и объединяет мультимедиа, графику, анимацию и интерактивность в одной программной платформе.
JavaFX – это платформа для создания Rich Internet Applications, которые могут запускаться на персональных компьютерах и мобильных устройствах.