Наверное, ни для кого не секрет, что Microsoft стремится (и не без успеха)
занять лидирующие позиции на рынке платформ и средств разработки.
Одно из полей текущей ее деятельности, это платформа
Web-решений. Набирающая в последнее время все большие обороты популярность Web
2.0, а с ним и функционально-богатых (rich) интерфейсов в Web, не прошла и мимо
Microsoft. Заявленная
около года назад под кодовым именем WPF/E технология, ныне известная как
SilverLight (звучит не просто приятнее, но и загадочнее – умеют все-таки люди
выбирать названия для продуктов!), увидела недавно свет в виде релиза версии
1.0.
Итак, что же представляет собой этот продукт?
Небольшая по размерам (установочный модуль ~1,41 Мб), но
весьма солидная по возможностям библиотека формирования 2D-графики на стороне
клиента, то есть в Web-браузере.
Планируется, что библиотека как сейчас, так и впредь будет
поддерживать работу в браузерах InternetExplorer
6 и выше, а также в браузере MozillaFirefox,
а также на платформе Macintosh
в браузере Safari.
Что же умеет SilverLight
1.0? А умеет она довольно много:
● Работать
с геометрическими фигурами: линиями, прямоугольниками, эллипсами, сложными
кривыми (в том числе Безье) и дугами, а также сложные композитными фигурами,
пересечениями, наложениями, отсечениями и т.д.
● Работать
с цветом, фоном и кистями: от однотонной заливки до градиентов и растровых
изображений в качестве фона;
● Выполнять
геометрические преобразования (вращение и сдвиг), заданные, в том числе, в
матричной форме.
● Реализовывать
анимацию - изменение какого-либо параметра изображения (координат, размеров,
цвета) с течением времени.
● Использовать
аудио и видео контент. В SilverLight
имеется специальный объект MediaElement, который умеет проигрывать media-контент
в форматах WindowsMediaVideo(WMV),
WindowsMediaAudio
(WMA), и MP3.
Еще одной интересной особенностью SilverLight является использование для
описания сцен языка XAML - родного языка “большой” WPF. Что, по всей видимости,
должно дать следующих два существенных плюса:
1. Упрощение перехода программистов с Web на Desktop и обратно, т.к. основа
построения интерфейса едина. Хотя, вот тут есть определенные сомнения: общим
будет только синтаксис языка, используемые же объекты будут, скорее всего,
координально различаться.
2. Создание единых инструментов проектирования
интерфейса как для Desktop,
так и для Web-приложений.
Вот, пожалуй, и все, чем знаменателен первый SilverLight.
Понятно, что называть его «убийцей Flash», как поспешили окрестить некоторые
компьютерные СМИ, никак нельзя.
Лишь некоторые, наиболее яркие, моменты конкурента:
● В
технологии Adobe Flex (ранее эта технология была известна как Macromedia Flash, однако позднее,
название Flash
закрепилось за самим плеером, а Flex стала называться среда разработки и Framework), проигрыватель Flash
является, по сути, миниатюрной виртуальной машиной, позволяющей выполнять
скомпилированный P-код. Это позволяет, потенциально, писать и выполнять
практически произвольный код, не привязываясь не только к особенностям среды,
но даже браузера.
● Для
Flex имеется огромная библиотека для самых разных нужд. Есть, например,
поддержка 3D-графики, работа с данными (от использования DataSet и XML, до
реализованных алгоритмов сжатия данных), поддержка сетевых протоколов (причем
как своих стандартов, например, некий аналог XML-RPC, до реализации стандартов
SOAP и WSDL, т.е. прямой выход на Web-сервисы).
● Если
чего-то не хватает в стандартной библиотеке, то есть уже не слабое Community, а также фирмы,
продающие свои решения на Flex.
В общем, получается, что сравнение явно не в пользу SilverLight? Да, если
говорить о версии 1.0 и … не уверен, если речь идет о версии 1.1, которая пока
представлена только как Alpha.
Что же меняется с приходом SilverLight 1.1? Буквально все,
не побоюсь такого утверждения!
Итак, судите сами… То, что добавляется к SilverLight 1.1
дополнительно к тому, что есть в версии 1.0:
● Самое
большое изменение – поддержка среды исполнения .Net, со всеми основными
возможностями: Jit-компиляцией, автоматическим управлением памятью и сборкой
мусора, управляемой обработкой исключений и пр.
● Поддержка
динамических языков JScript, IronPyton
и IronRuby, а также
специальная библиотека для работы с ними.
● Поддержка
некоторого (довольно солидного) подмножества библиотеки классов .Net, в том числе из
пространства System.Collections.Generic, System.IO, System.Text,
System.Xml и других;
● Частичная
поддержка классов WPF из System.Windows, включая поддержку элементов
управления, медиа-данных и документов …;
● Поддержка
web-сервисов в виде функциональности JSON и клиента WCF.
● Поддержка
LINQ.
Получается,
что SilverLight уже практически размывает грань между Desktop и
Web-приложением, причем и для того, и для другого используется единая
технологическая платформа, с языками и библиотеками. Даже если Microsoft не
будет реализовывать всю библиотеку контролей для SilverLight, это за нее сделают другие
компании, благо примеры уже есть.
Конечно,
писать приложения, одинаково легко работающие и как Web-клиент и как Desktop
пока затруднительно, хотя проблема, собственно, только в разнице библиотек
контролей и вполне можно допустить появление в ближайшее время таких
универсальных библиотек, пусть и сторонних производителей.
В
остальном же, разработка на SilverLight мало отличается от обычных .Net приложений,
и освоить ее грамотным .Net-разработчикам труда не составит.
Какие
последуют выводы?
Да,
в общем-то, очевидные:
Во-первых,
SilverLight 1.0 – неплохое решение, для придания уже имеющемуся web-решению
дополнительной привлекательности и функционала. В первую очередь, его хорошо
задействовать для внешних (не внутрикорпоративных) сайтов.
Во-вторых,
если начинается новый проект по разработке системы для внутрикорпоративного
использования и в качестве основного клиента (или одним из клиентов) будет Web-клиент,
то SilverLight 1.1 нужно, как минимум, очень внимательно рассмотреть в качестве
основной платформы.