Выбирая между WPF и Silverlight - часть 1 из 3

 

Безусловно, за последние два года Windows Presentation Foundation и Silverlight Silverlight сильно продвинулись на рынке. Технологии предоставляют гибкие средства,  как для разработчиков, так и для дизайнеров.  Но у многих возникает вопрос, когда нужно применять Silverlight, а когда WPF? В данной серии статей  я постараюсь помочь вам разобраться в этом вопросе.

Архитектуру клиент-серверных приложений можно разделить на два типа:  с использованием толстого или тонкого клиента. Для создания быстрых красивых тонких клиентов хорошо подойдет Silverlight, который не занимает много места и предоставляет богатый функционал. При проектировании толстого клиента желательно воспользоваться WPF, который дает нам дополнительные возможности. Хочу напомнить, Silverlight является подмножеством WPF, и часть функций являются общими. На основании таблицы приведенной ниже, можно сделать первые выводы о преимуществах и недостатках каждой из технологии.

 

Преимущества

Проблемы

Windows Presentation Foundation

  • Может использовать клиентские ресурсы
  • Предоставляет больше интерактивности
  • Богатый пользовательский функционал
  • Высокая производительность
  • Не требует Интернета

 

  • 1) Требует установки(Click Once, Windows Installer, Copy)
  • 2) Требует наличия .Net 3.0 +

Silverlight

  • Богатый пользовательский функционал
  • Богатые средства для работы с медиа
  • Простая схема развертывания
  • Компактность
  • Работает на большом количестве браузеров и ОС

 

  • 1) Требует установленного Silverlight Runtime
  • 2) Не большой размер приложений

 

Для начала несколько слов о WPF. Технология является новым средством для создания графических приложений взамен старым средствам таким, как Windows Forms и Win32 API. В основе WPF лежит векторная графика и DirectX, что позволяет использовать возможности современных видеокарт на всю мощь. Технология позволяет создавать более красочные приложения, чем при использовании Windows Forms. WPF также работает и на Windows XP, что никак не привязывает его к Windows Vista.   

WPF приложение может быть запущено на десктопе или в окне Internet Explorer'а. XBAP(XAML Browser Application) приложение выполняется в окне браузера, что позволяет пользователю, переходя по ссылке, с легкостью запустить ваше приложение не прибегаю к традиционной установке.  Давайте рассмотрим более подробно WPF и XBAP приложения.

Десктопные WPF приложения

 

Обычное десктопное WPF приложение собирается в EXE файл и размещается на жестком диске пользователя с помощью стандартных техник установки. Если приложение установлено на локальный диск, то по умолчанию оно имеет настройки безопасности, которые могут быть изменены администратором.

XAML Browser Applications (XBAPs)

 

XBAP является WPF приложением, которое не требует традиционных сценариев установки. Вместо привычных методов, пользователь переходит по специальной ссылке в веб-браузере. В данном случае ссылка будет заканчиваться расширением xbap (https://www.somesite.com/app.xbap). Используя поддерживаемый браузер(IE или Firefox), приложение незаметно загружается. В некоторых случаях такой сценарий развертывания называется Click-Zero, потому что пользователю не нужно самому устанавливать приложение.

Как уже было отмечено, XBAP приложения не устанавливаются традиционным способом, они размещаются в кэше браузера. Если версия не обновилась на сервере, приложение запускается из кэша. В случае если найдена более новая версия, браузер загрузит в кэш новую версию приложения, а потом уже запустит её.

Ключевой возможность XBAP приложений является простота развертывания. Недостаток данной технологии в том, что существует угроза безопасности, которая позволяет устанавливать и запускать приложения из Интернета. Поэтому все XBAP приложения выполняются в изолированной песочнице с частичным уровнем доверия. Другими словами, приложениям доступна только часть библиотек .Net'а.

Ниже приведены сравнения возможностей.

 

Возможности

Десктопные WPF

XBAP

Установка

Устанавливается на компьютер пользователя

Не устанавливается на компьютер клиента

Меню пуск

Появляется в меню пуск

Не появляется в меню пуск

Панель управления: Добавление/ Удаление программ

Появляется в меню Добавление/ Удаление программ

Не появляется в меню Добавление/ Удаление программ.

Методы установки

Установка с помощью копирования, Windows Installer (MSI) или Click Once.

Развертывается автоматически с помощью  Click Once.

Безопасность доступа к коду

Выполняется с полным уровнем доступа до модификации администратором.

Выполняется в Internet зоне.

Ограничения песочницы

Отсутствуют в уровне полного доверия

См. список ниже

Процесс

Запускается в стандартном окне Windows.

Выполняется в Presentation Host.exe, Presentation host является оболочкой для выполнения  *.xbap файлов.

Автоматические обновления

Стандартные приложения не обновляются автоматически. Разработчик должен создать сам систему обновления или воспользоваться Click Once.

Всегда используется самая новая версия приложения

Оффлайн  доступ

Работает в оффлайн режиме

Невозможно запустить  XBAP приложение пока пользователь не перейдет по ссылке на приложение.

Системные требования

Установленный .NET 3.0 +

  • 1) Установленный .NET 3.0 +
  • 2) Internet Explorer (6.0 +) Firefox (2.0 +).

Ограничения XBAP

XBAP приложение имеет некоторые ограничения возможностей .Net. С того момента, как они начинают выполняться в песочнице, они имеют уровень доступа, разрешенный приложениям Интернет зоны. Тем не менее, 99% стандартных WPF возможностей доступны в XBAP приложениях. Поэтому практически все WPF UI возможности можно использовать.

Доступны

  • UI контролы
  • Текстовый ввод (включая Rich Textbox)
  • Документы XPS
  • 2D рисование
  • 3D
  • Анимация
  • Аудио
  • Видео
  • Pages
  • MessageBoxes
  • Open File Dialog
  • Внутренний Drag and drop
  • Запросы к WCF сервисам
  • Запросы ASMX сервисам

Не доступны

  • Окна Windows
  • Большое количество диалогов
  • Взаимодействие с Windows контролами или ActiveX
  • OS Drag-drop
  • Bitmap эффекты
  • Shader эффекты

 

Все средства(Visual Studio) одинаковы при разработке десктопных и браузерных WPF приложений.

 

Silverlight

 

Вернемся к Silverlight'у, так же, как и браузерное WPF приложение, Silverlight выполняется в браузере. Но Silverlight приложение может быть загружено на большее количество операционных систем(OS X и Linux) и браузеров. Так же, как и за браузерные WPF приложения, приходиться расплачиваться функциональными возможностями. Многие хорошо знакомые нам WPF элементы не доступны в Silverlight'е.  Но не лучше ли включить все WPF возможности в Silverlight? Один из ответов - Нет, Silverlight - это компактная технология, которая включает в себя только основные элементы.

 

Технология позволяет отвязаться от .Net Framework'а. Silverlight - кросс платформенное, кросс браузерное приложение, позволяющие создавать пользовательские интерфейсы, используя XAML, в отличие от WPF, который может выполняться только на XP & Vista или XBAP работающего только в браузерах IE и Firefox. Ниже приведена таблица существенных различий

 

Возможности

XBAP

Silverlight

Поддерживаемые ОС

Windows Vista и XP

Windows XP, Vista, Linux, Mac OS X, WM(в будущем), Symbian (в будущем)

Поддерживаемые браузеры

Internet Explorer и Firefox

IE, Firefox, Safari, IE, Opera, Mobile(в будущем)

Системные требования

.Net Framework 3.0 +

Silverlight Runtime

Размер среды

.NET Framework 3.0 Redist: 50.3MB ( x86 ),

.NET Framework 3.0 Redist: 90.1MB ( x64 ),

.NET Framework 3.5 Redist: 197.0MB

Silverlight 1: 1.38 MB,

Silverlight 2.0: 4.3 Mb,

Silverlight 3.0: 4.69 Mb

Безопасность доступа к коду

Выполняется в песочнице

Выполняется в песочнице

Автоматические обновления

Всегда используется самая новая версия приложения

Всегда используется самая новая версия приложения

Оффлайн  доступ

Невозможно запустить  приложение пока пользователь не перейдет по ссылке на приложение.

Возможен

Функциональные возможности

  • 1. Расширенный набор пользовательских элементов
  • 2. Расширенные средства для работы с медиа

 

  • 3. Большой набор пользовательских элементов
  • 4. Средства для работы с медиа

 

Подробные технические различия будут рассмотрены в будущих статьях.

Архитектурные различия XBAP и Silverlight

 

Основы WPF сильно похожи на архитектуру привычного Win Forms с добавлением дополнительного слоя MIL(Media Integration Layer). MIL обернут двумя ключевыми сборками - Presentation Framework and Presentation Core. WPF приложения выполняются на клиентской Windows платформе, и, за исключением XBAP приложений, хостятся системой.

С тех пор как WPF приложения выполняются на клиенте, они имеют доступ к полноценному .Net Framework'у, программному стэку, включая XBAP.

С другой стороны, Silverlight приложения выполняются с помощью Silverlight Runtime'а, который является плагином размещенным в браузере. Плагин содержит все необходимые библиотеки, требуемые для запуска. Тем не менее, для уменьшения размера установочного файла Silverlight'а, полноценный .Net Framework не загружается, взамен, Microsoft разработал Core CLR, особый набор библиотек .Net Framework'а. 

Различия между двумя наборами библиотек создает проблемы при параллельной разработке под две платформы. Одна и та же сборка не может быть использована на обеих платформах из-за различия ссылок на базовые сборки. Библиотека может быть ориентированна только на одну платформу. Тем не менее, существует ряд техник позволяющих переносить исходный код между платформами, о которых я расскажу в будущих статьях.

Заключение:

При разработке ваших приложений следует обратить внимание на потенциальных пользователей вашего решения, на версии их браузеров и ОС, на наличие нужных платформ, на скорость Интернета и т.д.

  • WPF приложения выполняются на десктопах (Vista/XP) - доступны все возможности ОС.
  • Браузерные WPF приложения выполняются в песочнице Internet Explorer'а или Firefox

Для создания обоих решений, мы используем одинаковые средства и framework'и. При использовании третьего мы попадаем в новый мир:

  • Silverlight выполняется в песочнице на большинстве современных браузеров и операционных систем (Windows, Linux и OS X) - компактный вариант WPF (отсутствую некоторые 3D функции, виджеты и т.д.)

Если вы разрабатываете Rich Internet Application, перед вами стоит серьезный выбор между WPF и Silverlight, который будет ключевым в разработке вашего приложения. Надеюсь, данная статья поможет вам делать ваши приложения наилучшим образом.