Silverlight, HTML5 и непрозрачная стратегия развития Microsoft. Microsoft Silverlight что это за программа и нужна ли она? Давайте разбираться! Выполнение silverlight заблокировано так как установленная версия

Хотел спросить у спецов Микрософт, потому что все остальные методы исчерпаны, никто не может помочь. Проблема в том, что я захотел поставить Silverlight (точнее, мне он как таковой на хрен не нужен:) , но без него Netflix не работает).

Да, сразу скажу, система 7-ка 32 бит. Установлено несколько браузеров - IE10, FireFox, Chrome.

И вот любая попытка установки заканчивается неудачей. Пытался запускать из разных браузеров, без браузера вообще silverlight.exe - результат один и тот же - "Не удалось установить". Причем сначала кнопка "Дополнительные сведения" вообще не работала. Потом вдруг заработала и стала выводить на сайт Микрософт с сообщением:

Message ID: 1622

The installation log file could not be written. Verify that the Temp folder exists and that you can write to it.

Я не понял, отчего такой бред. Сколько программ ставил, и ни одна не жаловалась. Проблем с файловой системой нет. Директория windows\Temp существует и доступна. Более того, я ему даже специально C:\TEMP создал, думал, может он на это ругается. То же самое.

Соответственно, вопрос: что может не давать установиться программе? Я где-то прочел на сайте тут, что как вариант это может быть связано с языком системы? Но почему все остальные программы это не останавливает? Есть ли какой-то способ установить эту фигню все же? Мне уже просто интересно, в конце концов.

Приложения 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.

  • Перевод

По непонятным мне на данный момент причинам, похоже, что многие разработчики, присутствовавшие на недавней конференции PDC-2010 (Крупнейшая конференция Microsoft для разработчиков - Прим. переводчика ), были сильно удивлены тем, что Microsoft решила сместить акценты в разработке RIA с Silverlight на HTML5. Хотя это удивление разработчиков не менее удивительно - на недавних конференциях и анонсах (например, анонсы развития Internet Explorer 9 - Прим. переводчика ) представители Microsoft дали понять, хотя и не совсем явно, что приоритеты меняются на более кросс-платформенное решение. В чём же секрет?

Когда Microsoft выпустила первую версию Silverlight в 2007 году, подключаемый модуль позиционировался прессой как аналог Adobe Flash (хотя существует ряд других подобных решений: Adobe AIR, JavaFX, Google Gears (разработка которого закрыта, часть кода стала основой для HTML5), OpenLaszlo и др. - Прим. переводчика ). Хотя определённые различия всё же есть. Silverlight-таки нацелен в сторону разработчиков-программистов, тогда как Adobe Flash даёт крен в сторону веб-дизайнеров, хотя обе платформы охватывали один и тот же рынок сложных интерактивных приложений, поставляемых через веб-браузер.
Наивных разработчиков, пришедших послушать выступления, посвящённые MS Silverlight, постигло разочарование. Боб Маглиа (президент серверного подразделения Microsoft - Прим. переводчика ) заявил, что стратегия развития Microsoft в плане разработки RIA сместилась на HTML5.
В заявлении на ZDNet , в котором CEO Стив Балмер и Боб Маглиа объявили, что Silverlight будет продолжать развиваться, но вот в Сети приоритет получит язык разметки HTML5.
Вполне можно понять разработчиков, которые польстились на многократные заверения Microsoft в недавнем прошлом, что Silverlight выбьет Flash со сцены и станет необычайно перспективным мощным средством для реализации проектов. А теперь разработчики, которые собрались создавать свои проекты на базе Silverlight, слышат от компании, что, де-мол, да Silverlight хорош, но мы на него забьём, ибо HTML5 хлёще и круче. Да, есть от чего скрипеть зубами, но, надо быть объективным - Microsoft об этом говорила и раньше (Во время разработки браузера Gazelle который ныне трансформировался в абсолютно иной проект) и первых превью IE9 некоторые разработчики в своих блогах и интервью указывали, что HTML5 будет основой - Прим. переводчика ).

Разработка IE 9 должна была стать первым звоночком программистам, нацелившимся на Silverlight. Microsoft трубила на каждом шагу о том, что браузер соответствует просто всем веб-стандартам, что IE лучше всех поддерживает CSS3 и HTML5 (Тогда это было чистым враньем, в чём многие интернет-ресурсы уличали корпорацию, хотя сейчас это реальность. IE 9 PP6 ничуть не уступают в среднем Chromium 9. Тестирование Chromium 9 на W3C проводил я, так что не пинайте сильно - Прим. переводчика ). Теперь же Microsoft почти создала высокопроизводительный, совместимый с веб-стандартами браузер, который не просто звоночек разработчикам RIA на Silverlight, а просто колокол.
При этом ладно бы команда разработчиков браузера об этом твердила, так ещё и разработчики Silverlight, во-первых, мягко намекают о том , что Silverlight станет лишь небольшой примочкой для HTML5, ибо новый язык разметки, например, пока не умеет передавать потоковое DRM-защищённое видео. То есть, в итоге, Silverlight даже не позиционируется конкурентом HTML5, а остаётся конкурентом Adobe Flash, который пока занимает господствующее положение.
Во-вторых, разработчики Silverlight говорят об автономном использовании модуля. Отдельно от браузера плагин можно использовать как платформу для настольных приложений (Пример Seesmic) или же, что куда важнее, написание приложений для Windows Phone 7. Игры, конечно, удобнее будет писать на XNA, но неигровые приложения для новой мобильной ОС проще писать на Silverlight (Об этом много говорилось на конференции День Студента в МГУ 1 ноября, и будет говориться завтра в Киеве - Прим. переводчика ).
По сути, Боб Маглия не объявлял о новых стратегиях, а просто разложил всё по полочкам. Silverlight уезжает на Windows Phone, а всё остальное - на откуп HTML5. В чём же причина? А вот в чём:

Проблема Apple
Несмотря на все попытки Microsoft сделать Silverlight кросс-платформенным, задача не удалась. Windows был охвачен, Mac OS X с горем пополам поддержали, Linux отдали в руки Novell, которая принялась писать костыль в виде Moonlight, лишь «пародируя» закрытый Silverlight. Сложности начались на мобильном рынке, а именно с iOS. Как известно, Apple запретила исполнять плагины в среде мобильного Safari, что вызвало шумиху у пользователей приложений на Adobe Flash, хотя затрагивало и Silverlight, но в виду малой популярности модуля, большого резонанса это не вызвало. Получается, что Microsoft отдаёт без боя рынок интернет-планшетов и дико популярных iPhone. (Microsoft пытается стимулировать производителей выпускать планшеты под Windows 7, но на фоне Android, iOS, webOS, Jolicloud это выглядит бледно - Прим. переводчика ). Поэтому единственная возможность закрепиться там - HTML5.
Похожая проблема настигла и Flash, но Adobe вывернулась рядом обходящих инструментов (а также ряд сторонних разработок фанатов и других разработчиков, как, например, браузер SkyFire, который по образу и подобию Opera Mini со сжатием трафика будет обрабатывать Flash-контент у себя на серверах - Прим. переводчика ).
И всё-таки неясно, что же будет основным фокусом для «Сервелата»: автономные приложения для ПК, приложения для Windows Phone 7 или «примочка» над HTML5?
Новое направление развития Silverlight
Как ни парадоксально, но Silverlight остался не менее важен, чем раньше, хотя отнюдь не в том направлении, как первоначально предполагалось.
Вся эта клоунада в прошлом, где Silverlight позиционировался, как «убийца Flash» не выглядела хоть сколько-нибудь серьёзной. У Adobe есть удобный бесплатный открытый фреймворк Adobe Flex, который вытеснить Visual Studio и Expression Blend очень трудно, которые, к тому же, платны или содержат ряд ограничений. При таких раскладах вытеснить Flash очень трудно. Поэтому отдача всего веб-сегмента языку HTML5 вполне оправдано. Объективно Silverlight не имел сколько-нибудь больших шансов вытеснить Flash.
Silverlight же имеет большие шансы в качестве платформы для разработки приложений под Windows Phone 7. И тут возникает большой вопрос: сможет ли Windows Phone 7 откусить кусок от пирога, который яростно делят Nokia, Google, Apple, Research in Motion и HP со своей webOS? Если нет, то все средства, вложенные в разработку Silverlight окажутся потрачены впустую. Но у Microsoft есть поводы позитивно мыслить - рынок смартфонов потенциально перспективный рынок (за год доля мобильных устройств в интернет-трафике выросла на 2% - Прим. переводчика ). Если в динамике рынка Microsoft удастся откусить кусочек пирога и его удержать в зубах, то появятся шансы для экспансии на доли конкурентов. Имея столь мощную платформу для разработки приложений как Silverlight, у MS есть будущее в этом сегменте (И именно поэтому на всех конференциях и блогах представители Microsoft отчаянно скандируют «Начинайте программировать под Windows Phone прямо сейчас!». Если не будет сторонних приложений, то WP 7 умрёт не родившись толком - Прим. переводчика ).
Silverlight на рабочем столе
Silverlght далеко не худший фреймворк для разработки автономных приложений под персональные компьютеры, учитывая Expression Blend и Visual Studio - мощнейшие инструменты для разработки. Вместе с ними можно относительно легко создавать дизайн и кодовую базу для подобных приложений на Silverlight. Проблема в другом - в политике Microsoft.
На последнем PDC-2010 мало говорилось о Silverlight, но о настольных приложениях не говорили вообще. Да, этому есть оправдания: в этом году у Microsoft основная тема - Windows Phone 7 и Windows Azure, которые были приоритетными, а вот о Windows 7 подзабыли уже. О разработке Windows 8 мы услышим скорее всего в следующем году и то не факт. Отсюда ясно, что Microsoft «улетела» в «облака», отправив всё остальное в долгий ящик.
Настольный Silverlight зверь особый. Он является по сути производной от.NET Framework и Windows Presentation Foundation (WPF). Он исключает функции, которые не нужны за пределами веб-приложений для получения более быстрого и производительного выполнения. То есть, если вы можете писать приложения на C# или WPF, то вы без труда сможете писать и на Silverlight, и наоборот.
Тем не менее, изначально модуль Silverlight задумывался плагином для браузера. Да, разработчики могут выбирать между.NET/WPF и Silverlight (у него даже преимущества для работы под Mac OS X), но с помощью более мощных.NET/WPF куда шире диапазон разрабатываемых приложений. По функциональности WPF и Silverlight в некоторых аспектах перекрывают друг друга.
Такое «соперничество» между двумя продуктами показательны в некоторых недочётах политики Microsoft на поприще настольных приложений. Вернёмся в прошлое, когда только начала разрабатываться Windows Vista, тогда известная как Longhorn. Тогда код.NET расценивался как будущее в разработке Windows-приложений, и всё было ясно: WPF - платформа разработки приложений, а Silverlight (тогда ещё WPF/Everywhere) был урезанной версией для мультиплатформенных веб-приложений. В первых сборках Windows Vista даже были возможности для написания масштабируемых WPF-приложений, что оказалось бы мощным рывком к современной концепции «трёх экранов»
Однако, как известно, сам проект Longhorn оказался перезапущен, была выпущена пресловутая Windows Vista, а.NET оказался в глубокой тени. Выглядело это так, будто Microsoft боялась использовать.NET, во всяком случае на настольных системах. Вместо того, чтобы выпустить систему, построенную на базе WPF, WPF оказался проигнорированным, и только с запуском Visual Studio 2010, Microsoft начала делать приложения, построенные на этой технологии. При этом, в Windows Vista было удалено то самое умное масштабирование при установке первого пакета обновлений. По каким причинам - непонятно.
Глядя на все эти метания, не совсем ясно, что собирается делать Microsoft (похоже даже она не сильно понимает, что нужно делать). Основные принципы WPF очень внушительны, и разработка Windows-приложений на WPF куда предпочтительнее, чем под Win32, хотя остаётся ещё немало сомнений.
С Windows 7 редмондский гигант предоставил технологию Direct2D, которую не используют ни WPF, ни Silverlight, но которая лежит в основе высокопроизводительной обработки HTML5 в Internet Explorer 9. Получается, что WPF может умереть, хотя может и сосуществовать с Silverlight вместе, или же, наоборот, обе технологии могут уйти в тень. До появления Windows Phone 7 я думал, что случится именно последнее, но теперь с мобильной ОС и Visual Studio Lightswitch я понимаю, что WPF уйдёт на задворки, уступив Silverlight.
Silverlight в Сети всё ещё имеет смысл
Теперь, когда Silverlight потерял приоритет в разработке веб-приложений, и имеет неясное будущее на настольных приложениях, можно видеть разочарование многих разработчиков, сообразивших, что их приложения теперь не сильно-то нужны в том виде, в котором они задумывались. Самое странное и озадачивающее это то, что стратегия Microsoft не совсем ясна, так как они заявляют лишь общие фразы, не раскрывая их конкретикой.
Я не думаю, что остались какие-то сомнения в том, что HTML5 займёт господствующее положение на рынке (политика Google, Apple и действия Adobe действительно не позволяют в этом усомниться - Прим. переводчика ), но не сейчас. Пока Internet Explorer занимает господствующее положение на рынке браузеров, а поддержка HTML5 в них колеблется от нулевой (Internet Explorer 6) до незначительной (Internet Explorer 8)
Да, Internet Explorer 9 значительно и качественно изменяет существующую поддержку (а точнее не поддержку) веб-стандартов браузером, но абсолютно неизвестно, когда он будет выпущен официально. За 18 месяцев существования Internet Explorer 8 отвоевал около 50% общей доли, тогда как оставшиеся 50% делят морально и технически устаревшие IE 6/7. То есть, даже, если Microsoft прямо сейчас выпустит «девятку», то пройдёт около года, пока она займёт какую-то значимую долю. Тогда как Silverlight и Flash доступны прямо сейчас любой версии браузера.
Даже если бы сейчас HTML5 занимал большую часть рынка веб-технологий, то разработка была бы затруднённой. Многие спецификации существуют, но далеки от завершающей стадии разработки, браузеры на разных движках воспринимают разметку по своему, показывая абсолютно разный результат. Получается, что у разработчиков два выхода - работать с HTML5 и тратить кучу времени на то, чтобы настраивать, пилить, тестировать разметку в каждом браузере или же взять плагин Silverlight, который выглядит одинаково во всех поддерживаемых браузерах и системах. И не забывайте о том, что толковых средств разработки и дизайна на HTML5 пока не придумали. Да, Adobe представила средство для конвертации Flash в HTML5, но это инструмент будущего, но никак не сегодняшнего дня, тогда как и Microsoft, и Adobe имеют мощные средства разработки и надстройки к ним для работы с Silverlight и Flash соответственно. Поэтому не стоит рьяно закапывать оба модуля.
Не стоит также забывать о том, что HTML5 многое не умеет. Например, DRM-защищённое видео, которое используется в сервисе Hulu. Потоковое видео очень трудно создавать с помощью HTML5, да и работа с веб-камерами и микрофонами очень далека от идеала. Короче, HTML5 многое не умеет из того, что умеют Flash и Silverlight.
HTML5, или даже нечто, что может вскоре появиться на его основе не сможет занять большую популярность даже в следующем году и, возможно, через год. Ещё немало направлений, где Flash и Silverlight намного предпочтительнее HTML5 как плагины и как средства разработки.
На таком фоне решение Microsoft начать сворачивать веб-направленность Silverlight выглядит по меньшей мере страннно. Да, через год это было бы необходимо, но сейчас? Консорциум Всемирной Паутины (W3C) принимает большие усилия для создания стандарта, но работы столь далеки от завершения, что убивать такие технологии как Silverlight и Flash, не имея полноценной замены - просто самое настоящее безумие.
А вот Microsoft пора принять решение и перестать пудрить мозги разработчикам. Что же станет платформой для написания приложения на десктопах? Win32 (с или без Direct2D уже не важно)? Silverlight? WPF? Или вообще что-то другое? Три способа разработки, извините, но это жесть. Альтернатива хорошо, но если сегодня три способа разработки, и разработчики разделятся поровну и начнут писать приложения, а завтра Microsoft закопает два способа, что же, разработчикам сидеть у разбитого корыта? Если будущее за Silverlight и WPF, то подключите к ним Direct2D, чтоб работали шустро и выглядели одинаково с другими приложениями, но если на десктопах не они будущее, то пусть заявят об этом разработчикам, чтобы они были готовы к переменам, а не водить их за нос.
Хотя можно догадаться о планах Microsoft. На данный момент Direct2D лучший способ написания разработчиками высокопроизводительных пользовательских интерфейсов, а также лучший способ для работы с HTML5 в IE9. Сможет ли Редмонд охватить своим взгядом и возможностями весь HTML5, заткнуть вместе с W3C дыры, которые не позволяют HTML5 «одолеть» Flash и Silverlight, а затем всё это использовать в Windows? Нечто подобное начинает делать Apple в iOS.
Странные вещи происходят, странные.