Возможный дубликат:
В чем разница между WPF и приложением Silverlight?
Каковы точные различия между WPF и Silverlight?
Возможный дубликат:
В чем разница между WPF и приложением Silverlight?
Каковы точные различия между WPF и Silverlight?
Это очень широкий вопрос. Моя компания недавно написала документ, в котором излагаются различия между этими двумя технологиями и около 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.
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 необходимо будет сделать намного больше, чем просто рисовать на экране.