Ответ 1

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

EDIT: Как и было обещано, здесь ссылка к документу на Codeplex:

http://wpfslguidance.codeplex.com/

Однако я попытаюсь обобщить.

  • WPF - это мощная клиентская платформа Windows, которая имеет доступ ко всей .NET Framework. Silverlight - это технология, основанная на браузере, которая имеет доступ к подмножеству .NET Framework (называемому CoreCLR). Таким образом, вы заметите различия, используя, казалось бы, ежедневные методы и объекты в рамках. Например, метод Split() в классе String имеет 3 переопределения в Silverlight, но 6 в .NET Framework. Вы увидите различия, подобные этому.

  • В WPF все визуально отображаемые элементы выводятся из базового класса Visual. В Silverlight они этого не делают; вместо этого они происходят из Control. Обе технологии, однако, в конечном итоге вытекают из класса DependencyObject по иерархии.

  • WPF, в настоящее время, отправляет или имеет больше пользовательских элементов управления, чем Silverlight; хотя эта разница смягчается с помощью Silverlight Toolkit и предстоящей версии Silverlight 3.

  • WPF поддерживает 3 типа маршрутизируемых событий (прямой, барботирование и туннелирование). Silverlight поддерживает только прямые и пузырьки.

  • Существует довольно много различий в отношении данных, которые будут несколько смягчены следующей версией Silverlight. В настоящее время Silverlight не поддерживает режим привязки, OneWayToSource или Explict UpdateSourceTriggers. Кроме того, Silverlight по умолчанию привязывает к OneWay привязку данных, если ни один не установлен, тогда как WPF использует режим по умолчанию, указанный свойством dependency.

  • Silverlight не поддерживает MultiBinding.

  • Silverlight поддерживает XmlDataProvider, но не ObjectDataProvider. WPF поддерживает оба.

  • Silverlight может выполнять только асинхронные сетевые вызовы. WPF имеет доступ к полному сетевому стеку .Net и может выполнять любой тип вызова. Кроме того, в настоящее время Silverlight поддерживает SOAP, но не может обрабатывать исключения SOAP изначально (это может измениться в Silverlight 3).

  • Существуют огромные различия в криптографии (Silverlight имеет 20 классов в пространстве имен, а WPF имеет доступ к 107). В принципе, Silverlight поддерживает только 4 алгоритма хэширования и протокол шифрования AES.

  • Silverlight еще не поддерживает: Commanding, Validation, Printing, XPS Documents, Speech, 3D, Freezable objects или InterOp с Windows Desktop; все из которых доступны в WPF.

  • Silverlight поддерживает взаимодействие браузера, другие параметры потоковой передачи мультимедиа, включая маркеры временной шкалы и Deep Zoom. WPF еще не поддерживает эти функции.

Это отнюдь не является полным, поскольку я пытался уменьшить 70-страничный документ в пулевые точки.

Наконец, даже при всех этих различиях Microsoft пытается закрыть разрыв между двумя технологиями. Инструментарий Silverlight Toolkit и набор инструментов WPF затрагивают некоторые недостатки каждой технологии. В Silverlight 3 будет добавлено много функций, недоступных в настоящее время (например, привязка данных от элемента к элементу). Однако из-за различий в основных библиотеках всегда будут некоторые различия в Framework.

Ответ 2

WPF - это настольная технология Windows для разработки приложения Windows в среде .NET.

Silverlight - это веб-технология, полностью поддерживаемая плагином браузера как на Windows, так и на MAC (аналогично Flash). Существует также плагин для запуска Silverlight в Linux (Moonlight).

Хотя существуют сходства между функциональностью, предоставляемой как WPF, так и Silverlight (с точки зрения компонентов пользовательского интерфейса и поддержки XAML) Silverlight - это очень небольшая структура, содержащая подмножество функциональных возможностей WPF. Более новые версии Silverlight фактически содержат некоторую функциональность, не найденную в WPF, поэтому она больше не является истинным подмножеством.

Ответ 3

В WPF нет Silverlight: полный 3d движок на основе DirectX, интеграция с Windows, например миниатюры на панели задач Windows 7 и доступ к системному реестру, а также доступ к полной платформе .NET Framework, включая поддержку базы данных Oracle. Кроме того, SL работает в безопасной изолированной программной среде, которая предотвращает доступ к таким вещам, как вся файловая система, где приложения WPF могут полностью доверять полноценному доступу к системе.

Как уже упоминалось выше, SL впервые разработала некоторые технологии, такие как VisualStateManager, которые делают их вторично в WPF с помощью инструментария WPF, поддерживаемого Microsoft.

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

Ответ 4

Можно сказать, что это [ОЧЕНЬ] примерно аналогично различию между Flex и Adobe Air, но это несколько вводит в заблуждение.

WPF относится к набору технологий (через API), к которым имеют доступ .NET Framework 3.0 и выше пользователи, чтобы рисовать на экране.

Многие из API WPF доступны для приложений Silverlight.

Есть, конечно, много других API, помимо WPF, которые доступны в Silverlight, поскольку приложениям SL необходимо будет сделать намного больше, чем просто рисовать на экране.