Андрей Скляревский (snoralip) wrote,
Андрей Скляревский
snoralip

В ожидании Silverlight 2.0

В среде разработчиков сейчас образовалась некоторая туманность относительно Silverlight 2.0. Зачем использовать первую версию в сфере RIA не очень понятно (сейчас объективно удобнее использовать ASP.NET 3.5 с его реализацией принципов AJAX), а про вторую много вопросов, да и горы критики, свалившиеся на сам Silverlight и WPF в целом, поднимают закономерный вопрос относительно практичности применения Silverlight 2.0. Попробуем разобраться, зачем же нам нужен Silverlight 2.0 и что это такое.


  1. Silverlight 2.0 – это в первую очередь сверхкомпактный .NET Framework, обладающий самыми высокими ограничениями по безопасности за всю историю .NET. Код можно писать на C# 3.0 и использовать LINQ! Иногда Silverlight определяют так: "частное производное WPF" ("WPF subset"). Это некорректно, хоть Silverlight и содержит в себе компактную версию WPF, это лишь библиотека для вывода информации, т.е. в первую очередь нужно рассматривать Silverlight как платформу, хотя "WPF subset" и является главной составляющей Silverlight, без которой просто не было бы смысла его использовать.

    Из существенных ограничений Silverlight CLR (так же известной как AgCLR, от Ag – Argentum – Silver) стоит отметить:
    а) Нет доступа к файловой системе пользователя, любой такой запрос приведёт к исключению, при этом нет даже возможности запросить у пользователя этот доступ, однако есть доступ к IsolatedStorage;
    б) Нет доступа к библиотекам из GAC установленной на машине полной версии .NET;
    в) Существуют определённые ограничения для рефлексии: например, обращаться к приватным полям класса нельзя, если выполняющийся код находится за пределами этого класса;

  2. Silverlight включает в себя мини-версию WPF. В ней нет поддержки трёхмерной графики, однако трансформации, набор элементов управления и графических элементов весьма внушительный. В текущей версии Silverlight 1.1 Alpha Preview (напомню, что Silverlight 1.1 решили выпустить сразу как 2.0, по словам Тима Снита, это потому что в противном случае разница между 1.0 и 1.1 будет столь высока, что до 2.0 они никогда не доберутся) элементов управления экстремально мало – нет даже примитивного TextBox-a, однако ситуация обещает исправиться к следующему предвыпуску или, возможно, Beta-версии Silverlight 2.0 (которую обещают выпустить к весне 2008-го года). Зато уже сейчас есть возможности проигрывания видео с отличным качеством, и эта часть Silverlight в основном и используется на текущий момент.

    Так же как и у "большого брата", презентационный движок Silverlight основан на XAML. Я начинал работать HTML-верстальщиком, поэтому могу с уверенностью сказать – XAML сэкономит софтверным компаниям уйму времени и, соответственно, денег, позволив так же, опираясь на свою платформу – WPF или Silverlight, делать потрясающие эффекты. Во-первых, для XAML есть достаточно удобная программа для дизайнеров – Microsoft Expression Blend. Т.е. вместо обычного сейчас процесса, когда дизайнер рисует макет, например, в Adobe Illustrator, а потом верстальщик (или программист) верстает HTML и программист добавляет логику, нас ждёт светлое будущее, когда программисту уже будет приходить готовый XAML, который осталось лишь чуточку поправить в соответствии с логикой! Во-вторых, возможности у XAML гораздо-гораздо шире, чем у того, что используется сейчас большинством – Windows Forms и HTML. Т.е. вещи, которые в HTML/формах ранее было делать либо крайне сложно либо даже невозможно, теперь можно будет делать с лёгкостью. В-третьих, XAML один – и для Desktop, и для Веб-а, один XAML и не надо учить тысячу разных технологий.

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

    Скотт Гутри писал о том, что в следующем предвыпуске Silverlight 2.0 будет существенно улучшена модель элементов управления, поддержка их двухсторонней связки с данными (data-binding), поддержка шаблонов и настройки внешнего вида стандартных элементов управления. Это всё не новости для знатоков WPF и Silverlight 2.0 будет обладать совместимым с WPF из .NET 3.5 презентационным движком, следует понимать, что сейчас просто прилагаются усилия для того чтобы вынести из WPF максимум возможностей.

  3. Silverlight содержит в себе Dynamic Language Runtime. DLR - это, с одной стороны, лишь серия DLL-библиотек, работающих в среде CLR, а с другой - это целая среда для компиляции и выполнения динамических языков, в первую очередь, таких как JScript, Python и Ruby. И хотя на уровне IDE эти возможности пока не очень-то поддерживаются, это открывает потрясающие перспективы. Очень здорово, что DLR, выросшая из open source проекта IronPython, так же является open source проектом с супер либеральной лицензией Microsoft Permissive License.

    Впрочем, я вынужден отметить, что не всё так просто с DLR. Например, при разработке Oridea Alpha 1, с удивлением было обнаружено, что очень дорого стоит переключение контекста выполнения из CLR в DLR. Изначально, я хотел компилировать JScript выражение и запускать вычисление для каждого значения X в цикле на C# коде, однако потом обнаружил, что если обрамлять JScript выражение в цикл, заполняющий список точек, то вычисляться будет на порядок быстрее, что совершенно не ожиданно, т.к. при этом выполняется цикл for, написанный на JScript вместо C#. Кроме этого, я так и не понял как же можно описать дробное число на JScript (т.е. метод Evaluate даёт для "12/10" значение double 1.2, а для "1.2" – double Infinity, странно, да? :)). Ко всему прочему, по ощущениям, DLR использует столько ОЗУ, сколько браузер вообще согласен выделить. Чего-то вроде реализации IDisposable обнаружено не было.

  4. Silverlight 2.0 включает в себя значительное количество инструментов для работы с браузером-контейнером. Это начиная с того, чтобы посмотреть его версию, и заканчивая плотной работой с DOM-ом документа. Скотт Гутри писал, что эта поддержка будет рассширена в следующем предвыпуске.

  5. Среди библиотек Silverlight 2.0 так же можно найти инструменты для работы с данными по Сети, это Downloader, позволяющий отправлять GET/POST запрос на сервер и просто скачивать какой-либо файл и методы сериализации, такие как привычный AJAX-разработчикам JSON и стандартный XML. Следующий предвыпуск Silverlight 2.0 будет включать в себя поддержку cross-domain доступа, его детальная схема пока неизвестна, а на текущий момент Silverlight 1.1 Alpha позволяет лишь обращаться за данными к Веб-сайту, с которого был скачен оригинальный XAML.

  6. Silverlight 2.0 будет кросс-браузерным и кросс-платформенным дополнением (plug-in) к браузеру. Сегодня Silverlight 1.1 Alpha поддерживает Internet Explorer 6+ и Firefox для Windows, и ещё Safari для Mac OS X. В планах Microsoft стоит так же и поддержка Windows версии Opera. Для Linux Silverlight разрабатывает Novell в рамках проекта Moonlight. Скептикам напомню, что во-первых между Novell и Microsoft есть соглашение об отсутствии взаимных патентных претензий, во-вторых обозначено сотрудничество именно для реализации Silverlight на Linux. Т.е. в отличии от самой Mono, в случае Moonlight есть все основания полагать, что поддерживаться будут 100% возможностей Silverlight.

  7. Главный секрет грядущей Beta-версии Silverlight 2.0 состоит в том, что она уже будет обладать Go-Live лицензией, т.е. в ней будет отсутствовать пункт о том, что в промышленных масштабах внедрять технологию пока нельзя, как это было в случае с Silverlight 1.1 Alpha Preview. Т.е. ещё до релиза Silverlight 2.0 разработчики уже смогут делать Веб-сайты и системы для Silverlight и спокойно выкладывать их в Сеть.
Главные конкуренты Silverlight 2.0 – это Adobe Flash и Sun JavaFX. Среди .NET разработчиков уже сейчас есть некоторая прослойка, использующая связку Flex/Flash/ASP.NET в своих проектах. Однако мне кажется, что Silverlight 2.0 объективно стоит выше по технологическому уровню, и Flash, изначально ориентированный на мультики-рекламные ролики, не сможет удержать RIA разработчиков в своих объятиях.

Копия на блоге
Tags: microsoft, silverlight
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

  • 0 comments