Привет, Silverlight!
29 октября 2007
Рубрика: Технологии. Тэги:
Автор: Андрей Скляревский.

pic
«Silverlight — кросс-браузерный и кросс-платформенный внедряемый в браузер компонент для представления основанных на .NET мультимедийных возможностей и приложений с богатым интерактивным интерфейсом в Интернете».

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

Какие задачи решает Silverlight?

1. Обход ограничений, связанных с использованием только XHTML и JavaScript на клиенте. Когда нужно сделать парочку DOM элементов, добавить к ним множество эффектов и привязать это к данным, получаемым с сервера, мы получаем не самую простую XHTML вёрстку и не всегда понятный JavaScript код.
2. Трансляция видео и аудио потоков прямо в браузер.
3. Упрощение процесса тестирования Веб-сайта, которому нужен богатый интерфейс на клиенте. Silverlight является кросс-платформенной (поддержка Windows и Mac OS предоставляется самой Microsoft, Linux и других систем – Novell) и кросс-браузерной (Firefox, Safari и Internet Explorer) технологией, поэтому у разработчика не будет болеть голова о том, как же ему протестировать новый функционал во всех системах и браузерах (у которых, к тому же, ещё и масса версий).
4. Предоставление разработчику более полного набора библиотек, нежели чем стандартный набор JavaScript-интерпретатора конкретного браузера. В Silverlight 1.1 включена кросс-платформенная реализация специальной версии .NET CLR (Common Language Runtime) и ограниченный набор библиотек из состава .NET Framework 3.5, обеспечивая в то же время защиту от несанкционированного доступа Silverlight-приложения к локальным данным пользователя.

Как же он это всё делает?

1. В Silverlight используется основанный на XML открытый язык разметки приложений XAML (Extensible Application Markup Language). XAML позволяет декларативно определить расположение элементов на полотне, определить для них эффекты и анимацию, а так же и обработчики событий. XAML позволяет отлично отделить разработчика от дизайнера — дизайнер может сделать XAML макет, используя, например, Microsoft Expression Blend, а разработчику затем останется только его несколько модифицировать с целью добавления логики. Использование XAML позволяет разработчику освободиться от написания огромного количества JavaScript кода, отвечающего за представление и эффекты в Веб-интерфейсе.
2. Трансляция мультимедийных потоков осуществляется при помощи наличия в Silverlight соответствующих кодеков. Несколько сетевых сервисов из рода видео-по запросу и online TV уже используют эту возможность Silverlight.
3. В то время как оболочки Silverlight для разных браузеров, понятное дело, разные (встраиваемый компонент, предназначенный для Internet Explorer, в Safari точно никак не встроится), внутренняя технология одна и та же, поэтому разработчик может не беспокоится о кросс-браузерности решения. Дискуссии возникали о полноте поддержки Silverlight в Linux, которая осуществляется в рамках проекта Moonlight, последнюю точку в которых поставила сама Microsoft, предоставляя свои видеокодеки для Linux и заключив соглашение с Novell.
4. Silverlight основан на .NET, XAML впервые стал доступен внутри .NET Framework 3.0, поставляющегося в составе Windows Vista и доступного, как и Silverlight, для Windows XP SP2 и Windows Sever 2003 как отдельный компонент. Точно неизвестно, почему в Microsoft решили выпустить сначала Silverlight 1.0 (уже выпущен), а потом Silverlight 1.1 (сейчас в стадии Alpha Preview), возможно для того, чтобы как можно скорее Silverlight начали использовать. Тем не менее, .NET-программирование возможно только для Silverlight 1.1, который, по слухам, выйдет не раньше чем весной 2008-го года. Silverlight 1.1 также включает в себя и инструментарий, позволяющий использовать динамические языки, такие как Python и Ruby, и конечно же, C# 3.0 и VB9, с поддержкой LINQ (Вы всё ещё пишите на JavaScript? Тогда Silverlight идёт к Вам!)

О безопасности

Слова «поддержка .NET» могут вполне резонно испугать. Как поддержка .NET?! Это тот .NET, на котором работает приложение, сохраняющее кучу файлов у меня на компьютере? И любой сможет написать это на Silverlight и это будет использовать мои локальные данные? Конечно же, нет.

Если взглянуть на модель безопасности в Silverlight (на английском языке – это запись в блоге Microsoft о безопасности в .NET), а так же и на другие источники об архитектуре Silverlight, можно обобщить:

1. Silverlight-приложение запускается в изолированной «песочнице» (sandbox), никак не связанной с установленным на компьютере .NET Framework или Mono;
2. Нет разрешенных исключений, которые бы могли позволить Silverlight-приложению получить доступ к локальным ресурсам (какие бы атрибуты безопасности не устанавливали разработчики своим классам и методам, при вызове критических для безопасности методов мы увидим ошибку MethodAccessException).
3. Silverlight-приложение может использовать т.н. «изолированное хранилище» (IsolatedStorage) и хранить там свои файлы (например, для кеширования чего-либо). Это полностью прозрачная операция с точки зрения безопасности, т.к. разные Silverlight-приложения всё равно не имеют доступа к изолированым хранилищам друг друга.

Так есть же Flash?

Flash решает все задачи, которые решает Silverlight, и при этом, уже сейчас решает. Однако, изначально, у Flash несколько другая ориентация, нежели чем у Silverlight. Flash легко понятен дизайнерам и аниматорам. RIA (Rich Internet Applications – Веб-приложения с богатым пользовательским интерфейсом) для Flash являются не совсем родным занятием. В Macromedia (теперь Adobe) сделали Flex – среду разработки, позволяющую разрабатывать RIA на платформе Flash с большим удобством. Я сам никогда не использовал Flex, но похоже на то, что эта среда начала претендовать на роль ведущей среды разработки RIA в обозримом будущем. Это могло бы существенно сказаться на рынке ASP.NET, т.к. при передаче ответственности за отображение данных браузеру, роль серверной части во многом снижается.

Видимо, поэтому, а так же ещё и потому, что уже есть готовый WPF (Windows Presentation Foundation – движок представления в .NET 3.0), XAML и Expression Blend, Microsoft решила сделать Silverlight. Но Silverlight, в целом, больше ориентирован на разработчика, хотя и предоставляет достаточно хорошие возможности дизайнерам. Таким образом, скорее всего, постепенно начнёт появляться множество основанных на Silverlight Веб-сервисов, в то время как более творческие проекты (вроде простеньких online-игр, мультфильмов и т.д.) будут оставаться делом Flash. Хотя кто знает? Конкуренция – это всегда хорошо, будем наблюдать, как будут развиваться события :).

Ко всему прочему можно ещё добавить, что Silverlight поддерживает C# 3.0 и динамические языки, в то время как в активе Flash только ActionScript. Не думаю, что ActionScript лучше C# 3.0, как язык программирования, и в плюс к этому, уверен, для многих .NET-разработчиков будет очень здорово использовать и на клиенте, и на сервере один и тот же язык.

Orphus system
Подписывайтесь на канал infoCOM.UZ в Telegram, чтобы первыми узнавать об ИКТ новостях Узбекистана
В Telegram
В Одноклассники
ВКонтакте