вторник, 28 июля 2009 г.

Пробуем Silverlight 3.0

Насколько удобно вести разработку приложений для Silverlight? Приблизился ли продукт Microsoft к своему конкуренту их стана Adobe? Пробуем.

Изначальный релиз медиа-плеера-для-браузера от Microsoft был примечателен в основном отсутствием многих возможностей Flash. Версия 1.0 больше походила на бету, чем на полноценный продукт. Текущий второй релиз уже значительно лучше, однако его по-прежнему с большой натяжкой можно назвать конкурентом Flash.

Недавно выпущенная бета-версия Silverlight 3.0 наконец стала серьезной заявкой на полноценное соперничество. Версия 3.0 содержит новые API, аудио-кодеки и серьезно развитую видео-часть, включая Smooth Streaming, H264, AAC и поддержку аппаратных графических акселераторов.

Нашей тестовой задачей станет создание галереи картинок, содержащей 40 изображений. Задачка хороша тем, что позволяет отработать загрузку по протоколу XML и применение визуальных эффектов для смены кадров.

Инструменты
При создании API для Silverlight 3.0, Microsoft заявляла своей стратегической целью упрощение процесса разработки, поскольку большинство веб-разработчиков прежде были весьма далеки от инструментария Microsoft - семейства языков .NET.

Новичкам платформа .NET показаться более сложной, чем традиционные в Adobe языки JavaScript или ActionScript. Однако для создания приложений Silverlight нет нужды становиться экспертом в .NET.

Использование платформы .NET обеспечивает программистов Silverlight 3.0 более солидными инструментами, чем их конкурентов на Flash. Сравнение интегрированной среды разработки Flash c Visual Studio 2008 заставляет цитировать слова персонажа Чехова: "всё равно, что плотник против столяра". Вовсе не случайно большинство Flash-разработчиков давно перешли на альтернативную среду Eclipse (кстати, будет Silverlight-плагин к Eclipse).

Наиболее серьезный недостаток Flash IDE - это чехарда кода. Код может содержаться в бесконечном числе мест: внешних файлах, клипах, тайм-фреймах, фреймах внутри клипов. Живой проект в процессе развития стремительно превращается в уродца.

В Visual Studio 2008 интеграция с Subversion и другими средствами управления версиями позволяет поддерживать код логично организованным с самого начала, упрощая обновления, поддержку и повторное использование. Здесь нет анимации, основанной на фреймах. Разработка идет более привычным для программиста образом: набор исходных файлов компилируется в конечное приложение.

При этом Silverlight дает вам доступ к "настоящим" языкам программирования. Да, на ActionScript можно создать кое-какие серьезные приложения, однако среда Flash, как и Flex, уступает тому, что может предложить .NET: свободный выбор от C до Ruby.

Дизайн
Если вы дизайнер, работающий с Photoshop, Illustrator и Flash, вы безусловно возненавидите Microsoft Expression Studio - основное средство для построения интерфейсов Silverlight. Expression Studio - это привет из прошлого. Основной компонент Studio, Expression Design, был бы неплох в сравнении с Illustrator 3.0, однако Adobe уже давно отряхнула его тленный прах со своих ног.

Expression Studio в действительности нужен лишь для подготовки графики для проектов Windows Presentation Foundation (WPF, бывшая WinFX). Он серьезно уступает средствам редактирования из Photoshop. Единственное преимущество Expression Studio - способность к экспорту в формат XAML, что необходимо для разработчиков Silverlight.

Что же с анимацией, основой Flash и Silverlight? Flash содержит несколько библиотек для обеспечения анимации, однако большинство проектов Flash основаны на кадрозависимой временной шкале. В отличие от него, Silverlight использует анимационную модель WPF с времязависимой шкалой. Это серьезный плюс.

WPF также позволяет определить начальные и конечные условия и автоматически вычислить движение между ними. На деле, если однажды понять принцип работы WPF, в дальнейшем он сэкономит вам массу времени. Например, анимация открытия картинок в нашей тестовой задаче потребовала всего десятка строк кода (кстати, банально скопированных из документации).

Прощай, LAMP
Оба конкурента, Flash 10 и Silverlight 3, способны воспроизводить видео-поток с качеством 1080p HD и поддержкой аппаратной акселерации на графической карте. Silverlight к этому добавляет новый трюк: нечто, что Microsoft называет Smooth Streaming.

Smooth Streaming ("плавный поток") позволяет получать и отображать видеопоток в Silverlight 3.0, изменяя при этом качество изображения в зависимости от скорости интернет-соединения и загрузки процессора. Если скорость соединения понижается (например, вы подключились к медленному общественному WiFi), сервер понизит качество картинки чтобы просмотр не прерывался для накопления данных в буфере.

В обычном для Microsoft стиле, Smooth Streaming поставляется в пакете. Прежде чем схватить наживку, следует задуматься о блестящем из-под нее крючке.

Для Smooth Streaming необходим веб-сервер Internet Information Services 7.0 из Windows Server 2008. Таким образом серверы, построенные на Linux, Apache, MySQL, Perl, Python или PHP смогут использовать лишь часть возможностей Silverlight 3.0 и никакого "плавного потока".

Это может быть серьезным ограничением, если у вас относительно небольшой бродкаст-проект, для которого не выгодно выстраивать самостоятельную серверную инфраструктуру.

Настольные приложения
Silverlight 3.0 дает возможность создавать самостоятельные, оффлайновые приложения для настольных систем, подобно платформе Adobe AIR.

Наиболее привлекательно в подобных приложениях то, что они строятся из онлайн-приложений без малейших изменений в коде. Достаточно создать XML-файл (AppManifest.xaml) и задать несколько параметров. С этого момента приложение может работать как в пределах браузера, так и вне его.

Однако это только часть возможностей. Функциональность приложений можно расширить через интерфейс локального хранения данных, названный Isolated Storage. В Silverlight данные пользователей могут храниться локально вне зависимости от того, используется ли веб-приложение, или настольная версия приложения, или же первое превращается во второе и наоборот.

К сожалению, от пользователей Microsoft требует сделать на несколько движений мышкой больше, чем Adobe. Для запуска приложения Silverlight вне браузера на нем придется щелкнуть правой кнопкой мышки и явно дать команду на инсталляцию в системе. Технология Adobe позволяет просто скачать приложение - и его сразу можно использовать.

В Silverlight этого тоже можно добиться, но тут уже разработчику придется приложить некоторые усилия: нужно создать собственный интерфейс и из него вызвать метод Detach() для типа Application.

Как бы то ни было, способность приложений Silverlight 3.0 к самостоятельной работе вне браузера является наиболее важным нововведением. Если учесть огромные наработки и базу ранее созданного на платформе .NET кода, можно без сомнений ожидать взрывного роста количества настольных приложений Silverlight.

Пусть грянет бой
Наш, пока скромный, опыт экспериментов с Silverlight показал, что создание приложений идет достаточно просто. Во многих случаях работать удобнее, чем с Flash. Среда неплохо документирована и, благодаря .NET, многие программисты уже с ней знакомы.

Настоящая схватка между Flash и Silverlight еще впереди, однако Silverlight 3.0 явно готов к ней. Возможности конкурентов настолько близки, что выбор той или иной платформы для новых проектов уже мало зависит от собственно технических ограничений платформы.

Комментариев нет: