WPF против Silverlight

Возможный дубликат:
В чем разница между WPF и Silverlight?

Каковы точные различия между WPF и Silverlight?

4 ответа

Решение

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

РЕДАКТИРОВАТЬ: Как и было обещано, вот ссылка на технический документ на Codeplex:

http://wpfslguidance.codeplex.com/

Однако я постараюсь подвести итог.

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

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

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

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

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

  6. Silveright не поддерживает MultiBinding.

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

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

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

  10. Silverlight еще не поддерживает: Командование, Проверка, Печать, Документы XPS, Речь, 3D, Freezable объекты или Взаимодействие с рабочим столом Windows; все из которых доступны в WPF.

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

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

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам