Приложения Silverlight
142Silverlight 5 --- Приложения Silverlight
В Silverlight используется традиционная технология расширения функциональности браузеров — надстройки (plug-ins).
Преимущество модели надстроек состоит в том, что для просмотра содержимого, созданного разными людьми и компаниями, пользователю нужно установить единственный компонент — надстройку Silverlight. Для этого пользователю достаточно бесплатно загрузить с сайта Microsoft один небольшой файл и ввести подтверждение в единственном диалоговом окне. Вся процедура занимает не более минуты. Когда надстройка будет установлена, браузер сможет обрабатывать любое совместимое с ней содержимое без вмешательства пользователя.
На рисунке ниже показаны два вида страницы, содержащей объект Silverlight. Вверху приведена страница, которую пользователь видит, когда надстройка Silverlight не установлена. В этот момент пользователь может щелкнуть на кнопке Click now to install (Установить сейчас), чтобы перейти на сайт Microsoft, где будет предложено установить надстройку. Внизу показана та же страница после установки надстройки Silverlight:
На данный момент надстройка Silverlight установлена на 75% компьютеров, подключенных к Интернету (включая настольные компьютеры и мобильные устройства). Если учитывать только компьютеры, на которых установлены Windows и браузер Internet Explorer, процент Silverlight будет выше. Такие показатели впечатляют, однако надстройки Flash все же установлены на большем количестве веб-устройств (96%).
Требования к системе, предъявляемые Silverlight
Очень важно, чтобы любая веб-технология была совместима с как можно более широким диапазоном компьютеров и устройств. Технология Silverlight в настоящий момент находится в стадии развития, однако она уже совместима с большинством операционных систем:
- Windows
Версия Silverlight 5 работает на компьютерах под управлением Windows 8, Windows 7, Windows Vista и Windows XP. Минимальные версии браузеров, поддерживающих Silverlight — Internet Explorer 6, Firefox 1.5 и Chrome 4.0. Надстройки работ также под управлением Windows 2000, но только с Internet Explorer 6. Другие браузеры, такие как Opera и Safari (для Windows) в настоящий момент тоже поддерживают надстройку Silverlight, однако она для них пока что не документирована.
- Macintosh
Надстройки Silverlight работают на компьютерах Mac с операционной системой версии OS X 10.4.8 или более поздней. Должен использоваться процессор Intel (оборудование PowerPC недопустимо). Для Silverlight минимальные версии браузеров — Firefox 2 и Safari 3. На мобильных устройствах Apple, включая iPhone, iPod Touch и iPad, приложения Silverlight не поддерживаются.
- Linux
В настоящее время надстройки Silverlight 5 на Linux не работают, однако команда Mono создает открытую библиотеку для Silverlight (проект Moonlight, одобряемый компанией Microsoft). Последняя стабильная официальная версия Moonlight поддерживает приложения Silverlight 2, но сейчас уже выпущена бета-версия, поддерживающая Silverlight 4. Прогресс медленный, поэтому пока что неизвестно, когда Moonlight будет поддерживать Silverlight 5, если вообще будет.
- Windows Phone
Silverlight — одна из двух официально поддерживаемых технологий разработки приложений для Windows Phone 7 и 8 (другая — Microsoft XNA).
Для установки надстройки Silverlight необходим небольшой файл (менее 10 Мбайт), который легко загрузить, поэтому установить надстройку Silverlight не сложнее, чем Flash.
Silverlight и Flash
В настоящее время самая успешная и популярная надстройка браузера — Adobe Flash — установлена в более чем 96% браузеров по всему миру. Технология Flash имеет долгую историю — более десяти лет. Изначально Flash была простым инструментом добавления анимированной графики, но со временем она постепенно превратилась в мощную платформу разработки интерактивного содержимого.
Для разработчиков .NET создание веб-сайтов с использованием содержимого Flash выглядит вполне естественным. Однако для Flash нужны отдельные инструменты разработки — совершенно другой язык программирования (ActionScript) и другая среда программирования (Flex).
Хуже всего то, что не существует простых способов интеграции содержимого Flash с серверным кодом .NET. В частности, для обращения объекта Flash к компоненту .NET потребуется приложить немалые усилия. Использование серверного кода .NET для вывода содержимого Flash (например, для создания элемента управления ASP.NET, который манипулирует содержимым Flash) — еще более тяжелая задача.
По сравнению с Flash, Silverlight существенно облегчает манипулирование содержимым .NET. Главная цель Silverlight — обеспечить создание приложений, столь же мощных и кроссплатформенных, как и Flash, на основе первоклассной платформы программирования .NET. Благодаря этому разработчики могут создавать клиентский код Silverlight на том же языке (C# или VB), что и серверный код. Кроме того, разработчики могут применять в клиентском коде Silverlight те же абстракции, что и в серверном коде, включая потоки ввода-вывода, элементы управления, коллекции, обобщенные объекты и средства LINQ.
Silverlight и HTML5
Когда создавалась технология Silverlight, предполагалось, что ее главным назначением будет разработки мощных веб-страниц, а ее главным конкурентом — технология Adobe Flash. Однако после выпуска нескольких версий Silverlight мир изменился. Приложения Adobe Flash по-прежнему поддерживаются практически каждым настольным компьютером, но они оказались исключенными из таких популярных продуктов Apple, как iPhone и iPad. В результате ниша мобильных устройств стала тяготеть к другим решениям, таким как одноплатформенные специализированные приложения (выполняющиеся только в одной операционной системе) и HTML5.
На данный момент все согласны с тем, что HTML5 — это будущее Интернета (но не сейчас, а когда-нибудь потом, причем когда именно — неизвестно). Однако средства, обещаемые платформой HTML5 в неопределенном будущем, уже сейчас реализованы в технологиях Flash и Silverlight. К тому же Flash и Silverlight предоставляют много дополнительных средств. Для некоторых приложений эти дополнительные средства не очень нужны.
Без сомнения, позиции HTML5 со временем будут усиливаться. Но до того времени разработчики вынуждены выбирать между средствами, которые поддерживаются уже сейчас (Silverlight и Flash), но никогда не будут поддерживаться мобильными устройствами, и средствами, которые не поддерживаются сейчас, но в будущем будут поддерживаться всеми устройствами, включая мобильные. В последнем случае разработчик предпочтет HTML5. Эта дилемма выбора между мощными и доступными средствами. Технология Silverlight относится к мощным средствам, a HTML5 — к доступным, потому что сейчас она поддерживается всеми настольными браузерами (но не всеми мобильными устройствами).
В связи с указанными тенденциями многие разработчики Silverlight не уверены в том, что этой технологии уготовано место в будущем Интернета. Поскольку в данный момент будущее довольно неопределенное, учитывайте следующие факторы:
Реализация и поддержка HTML5 еще не завершены. В частности, в Internet Explorer поддерживаются не все средства HTML5. В IE 10 некоторые средства HTML5 были обещаны, но так и не появились. Многие средства доступны в IE 9, а в IE 8 средств HTML5 почти нет. Это очень плохо, потому что IE 8 — все еще самый популярный браузер для операционной системы Windows XP, которая и не думает уходить со сцены (она по-прежнему установлена на большинстве настольных компьютеров). По этим причинам HTML5 остается менее поддерживаемой технологией, чем Silverlight, и данная ситуация не изменится еще как минимум в течение нескольких лет.
В Silverlight есть средства, которых нет в HTML5. Даже браузеры, полностью поддерживающие HTML5, далеко отстают от Silverlight в некоторых ключевых областях. Они не предоставляют мощные средства потокового видео, аппаратного ускорения графики, вызова компонентов Windows, доступа к файлам, запуска приложений вне браузера, работы в сети и т.д. Тяжело себе представить, что платформа HTML5 когда-нибудь сможет состязаться с некоторыми специальными средствами Silverlight, такими как элементы PivotViewer, объединяющие задачи анимации, фильтрации данных и масштабирования изображений в одном пакете, удобном для использования.
Silverlight базируется на высокоуровневых средствах API. Можно создавать приложения, не пользуясь такими средствами, как связывание данных, шаблоны и стили, но они позволяют это делать быстро и эффективно. Многие задачи, которые можно решить в HTML5, требуют жесткой дисциплины и тщательного планирования. Их можно решать с помощью JavaScript, но его синтаксис не поддерживает строгую типизацию, в результате чего создавать на JavaScript крупные приложения практически невозможно. Кроме того, на JavaScript все процедуры анимации нужно писать вручную, а поддержка многопоточности чрезвычайно неуклюжая, что не позволяет выполнять сложные задачи в фоновом режиме.
Silverlight поддерживается высокоуровневыми инструментами разработки. Благодаря Visual Studio разрабатывать приложения Silverlight так же легко, как обычные настольные приложения. Программа Expression Blend существенно облегчает создание сложных пользовательских интерфейсов, содержащих мощные графические эффекты и анимацию.
Silverlight легко интегрируется с ASP.NET. В частности. Silverlight позволяет передавать запросы к серверной базе данных посредством веб-службы. Благодаря этому многие эксперты считают, что даже после того, как HTML5 завоюет Интернет, Silverlight останется предпочтительной технологией для закрытых корпоративных сетей.
Будущее платформы Silverlight сейчас довольно туманное. Она может остаться предпочтительной платформой для разработчиков корпоративных приложений на основе .NET или постепенно превратиться в узкопрофильный инструмент создания мощных компьютерных игр и видеоплееров. Одно можно сказать определенно: Silverlight никогда не заменит HTML в качестве главного языка создания традиционных открытых веб-сайтов. Впрочем, это никогда и не планировалось.
Silverlight и Metro/Windows 8
Когда компания Microsoft объявила о создании Windows 8 на основе новой модели программирования мощных клиентских приложений (она называется Metro), развитие платформы Silverlight приостановилось. Многие разработчики задумались: не станет ли в ближайшем будущем новая модель программирования "убийцей" Silverlight?
Ответ на это вопрос — категорическое "Нет!". Технология Metro предназначена для облегчения создания приложений совершенно другого типа: легковесных, ориентированных на сенсорные экраны и интенсивный обмен данными. Эти приложения предназначены для будущих поколений планшетных компьютеров на базе Windows 8. Технология Metro (как и ее ближайшая родственница WPF) конкурирует с платформой iPad. Приложения Metro не могут выполняться на платформах, не принадлежащих Microsoft, и даже более того — на любой версии Windows, отличной от Windows 8. По этой причине технология Metro не является конкурентом и не представляет интереса для разработчиков Silverlight.
В будущем ниша Silverlight может сузиться. Она как бы оказалась зажатой между кроссплатформенными приложениями HTML5, постепенно завоевывающими все большую долю рынка, и приложениями Metro и iPad для мобильных устройств. Однако пока что Silverlight занимает (и еще долгое время будет занимать) обширное пространство между этими технологиями.
Silverlight и WPF
Один из наиболее интересных аспектов технологии Silverlight заключается в том, что она позаимствовала у .NET мощную модель WPF, используемую для создания сложных клиентских интерфейсов.
Технология WPF предназначена для создания сложных приложений Windows. Средства WPF не только упрощают процесс разработки благодаря удобным высокоуровневым средствам, но и обеспечивают более высокую производительность благодаря выводу любого содержимого непосредственно через конвейер DirectX.
Очевидно, что Silverlight не может дублировать все средства WPF, поскольку многие из них зависят от возможностей операционной системы, включая специфичные для Windows драйверы и средства DirectX. И все же, вместо того чтобы изобретать для клиентской стороны совершенно новый набор элементов управления и классов, разработчики Silverlight применили подмножество модели WPF. Если у вас есть опыт работы с WPF, вы будете удивлены тем, как сильно Silverlight похожа на WPF. Ниже перечислено несколько общих особенностей:
Для определения пользовательского интерфейса Silverlight (коллекции элементов, заполняющих область содержимого) используется разметка XAML, как и в WPF. В Silverlight можно даже отображать данные с помощью того же синтаксиса связывания данных, что и в WPF.
Silverlight позаимствовала у WPF многие базовые элементы управления и механизм шаблонов (для изменения внешнего вида стандартных элементов управления).
Для рисования двухмерных изображений в Silverlight используются фигуры, контуры, преобразования и кисти. Все эти средства практически такие же как в WPF.
Рабочая среда Silverlight предоставляет декларативную модель анимации, основанную на последовательности раскадровок и работающую так же, как и анимационная модель WPF.
Для воспроизведения аудио- и видеофайлов используется класс MediaElement, как и в WPF.
Развитие Silverlight
Версия Silverlight 1 была весьма "скромной". Она содержала средства поддержки двухмерного рисования и воспроизведения мультимедийных файлов. В ней не было даже драйвера среды выполнения CLR и компилятора языков .NET, поэтому разработчики были вынуждены писать код на JavaScript.
Версия Silverlight 2 была радикально изменена. В нее были добавлены среда CLR, подмножество классов .NET Framework и модель пользовательского интерфейса на основе WPF. В результате Silverlight 2 стала одной из наиболее ожидаемых технологий за всю историю Microsoft.
Следующие версии Silverlight не столь амбициозны, как Silverlight 2. В Silverlight 5 сохранена модель разработки Silverlight 2 и добавлено несколько тщательно отобранных новых средств. Перечислим преимущества последней версии:
- Повышение производительности
Приложения Silverlight 5 быстрее запускаются, поддерживают 64-разрядные браузеры и обеспечивают более четкое отображение сглаженных мелких шрифтов.
- Векторная печать
Улучшена модель печати путем добавления драйверов PostScript. В результате печать выполняется быстрее и требует меньше памяти.
- Аппаратное ускорение трехмерной графики
Silverlight предоставляет приложению часть инфраструктуры Microsoft XNA для создания игр XBox. Добавлен мощный низкоуровневый интерфейс отображения трехмерных сцен. Важнее всего то, что все вычисления выполняются аппаратно, обеспечивая существенное повышение производительности. Также можно отметить уменьшение задержки звука путем поддержки средств Microsoft XNA при воспроизведении аудиофайлов. Это особенно полезно в видеоиграх, в которых задержка недопустима.
- Гибкое воспроизведение
Воспроизводить видеоклип теперь можно быстрее или медленнее без изменения тональности звукового сопровождения. Это позволяет просматривать содержимое (например, видеоурок) с выбранной скоростью.
- Просмотр сводных таблиц
Добавлен элемент управления, позволяющий просматривать огромные коллекции данных. В одном элементе управления совмещены многие функции, такие как масштабирование рисунков, фильтрация данных и анимация переходов. Лучше всего то, что при использовании этого элемента управления разработчику почти не нужно писать код.
- Отладка XAML
Теперь можно устранять ошибки связывания данных путем установки точек прерывания в выражениях связывания.
- Дочерние окна
Приложения Silverlight, выполняющиеся вне браузера, теперь могут отображать дополнительные окна, как настольные приложения Windows. Для этого даже не нужны расширенные права доступа.
- Поддержка доступа к файлам и вызовам P/Invoke
Приложения, выполняющиеся с расширенными правами доступа, могут обращаться к любым файлам на жестком диске, к которым пользователь имеет доступ (за исключением требующих привилегий администратора). На компьютере Windows можно применять вызовы P/Invoke для обращения к унаследованным функциям языка С из библиотек Windows API.
Обратная совместимость Silverlight 5
Может ли существующее приложение Silverlight, разработанное в предыдущей версии, выполняться на компьютере, на котором установлена надстройка Silverlight 5? Это не такой уж простой вопрос, как может показаться на первый взгляд, потому что в Silverlight 5 внесены некоторые тонкие изменения и устранен ряд ошибок, что может повлиять на работу приложения и даже изменить его поведение.
Чтобы изменения не повлияли на работу существующих приложений, в Silverlight 5 используется режим quirks (нестандартный). Когда надстройка Silverlight 5 загружает приложение, скомпилированное для предыдущих версий Silverlight, она автоматически включает нестандартный режим, точно эмулирующий поведение среды выполнения предыдущей версии Silverlight.
Более подробную информацию о тонких различиях между Silverlight 5 и Silverlight 4 можно найти в статье Ensuring That Your Silverlight Applications Work with Silverlight 5 на сайте MSDN.