WPF против Silverlight 3.0 - PullRequest
       11

WPF против Silverlight 3.0

21 голосов
/ 20 марта 2009

Бета-версия Silverlight 3.0 только что была объявлена ​​на конференции Microsoft в Лас-Вегасе.

Две функции новой бета-версии - это 3D-графика и возможность запуска приложений вне браузера, что, как мне показалось, является одной из основных функций, которые WPF (Windows Presentation Foundation) ранее предлагала в Silverlight.

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

Кто-нибудь недавно внедрил новое приложение, использующее WPF, и если да, то что привело вас к этому решению? Учитывая объявленные изменения в silverlight, изменилось бы ваше решение, если бы вы приняли его сейчас, а если нет, то почему?

Любой совет будет оценен.

Ответы [ 10 ]

13 голосов
/ 20 марта 2009

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

Есть также некоторые ограничения, которые могут быть реальной проблемой, как отсутствие поддержки печати. ​​

Я бы порекомендовал Silverlight поверх WPF, когда:

- Нет необходимости в максимальной производительности (включая графику) - Может обойтись без поддержки печати (она придет, мы просто не знаем когда) - Поддержка камеры / микрофона не требуется - Может терпеть ассинк приложение / модель разработки - Может терпеть ограничения на WCF (на данный момент нет поддержки WS-Security) - Нет необходимости хранить огромное количество данных на клиенте. - Нет необходимости в прямой интеграции с приложениями на стороне клиента, такими как Office. - Имеет сервер для размещения вашего приложения
11 голосов
/ 20 марта 2009

Я бы сказал, что основное отличие состоит в том, что WPF требует, чтобы у клиента была .Net 3.0+ framework. Silverlight требует только времени выполнения. Теперь, как говорится, WPF больше ориентирован на контролируемые среды, такие как интрасеть. Silverlight предназначен для публичной сети. Другое отличие состоит в том, что Silverlight является кроссплатформенным (Windows, Mac, Linux в будущем и кросс-браузер). WPF предназначен только для Windows.

.NET Framework может быть огромной загрузкой для некоторых пользователей. Silverlight только 4-5 МБ. Это большая разница для запуска вашего приложения в Интернете, но не большая проблема, если это внутреннее приложение в вашей компании.

Silverlight - песочница, предназначенная для использования в Интернете. Так что если вашему приложению требуются дополнительные разрешения, вам понадобится WPF.

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

6 голосов
/ 20 марта 2009

Я только что работал над проектом WPF, который, оглядываясь назад, мы считаем, что могли бы выбрать SilverLight. Вероятно, более важно знать различия и выбирать тот, который наиболее подходит для того, что вы делаете.

Вот мой стартовый курс на десять о некоторых важных различиях - изначально были некоторые различия в доступных элементах управления, но теперь они в значительной степени сглажены.

Silverlight

  • Работает полностью на клиенте с AJAX звонки на сервер для данных
  • Может работать на любом сервере, включая Windows и Linux / Apache
  • Использует платформу COMPACT .NET

WPF

  • Запускается на клиенте ... обычно вызывает службы для данных
  • Работает в Windows XP / Vista с .NET 3.5
  • Использует весь .NET Framework
4 голосов
/ 20 марта 2009

Silverlight - это в основном урезанная версия WPF, чтобы сделать загрузочную библиотеку минимально возможной.

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

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

3 голосов
/ 20 марта 2009

Стоит отметить, что 3D в Silverlight - это не полная 3D-поддержка WPF, а только проекция 2D в 3D - т.е. взять плоскость 2D и разрешить вращение в направлениях X, Y и Z. WPF имеет полное 3D-моделирование с материалами, портами просмотра, освещением и позиционной поддержкой камеры и т. Д.

3 голосов
/ 20 марта 2009
  • Кто-нибудь недавно внедрил новое приложение, использующее WPF, и если да, то что подтолкнуло вас к этому решению : Хорошо, поскольку WPF был только для настольных компьютеров (или браузер с использованием XBAPS - но это была скорее система развертывания чем реальная система), это было хорошей причиной для этого.
  • "Если бы вы сделали это сейчас, изменилось бы ваше решение, а если нет, то почему?" - Никакой Silverlight, даже на настольном компьютере в v3, по-прежнему не содержит много песочницы, поэтому некоторые функции будут трудно / невозможно выполнить из-за песочницы. Кроме того, возможность использовать части DirectX в WPF по-прежнему даст еще одну область оптимизации, которую Silverlight и ее 3d не смогут использовать.
2 голосов
/ 20 марта 2009

Я в разработке нашего первого WPF-приложения для релиза. Silverlight 3 выглядит великолепно, но для этого приложения я бы все же выбрал WPF. Приложение сосредоточено вокруг представления и обработки очень больших наборов изображений, размещенных на центральном сервере в сетях наших клиентов. Кроме того, скорость обновления / изменения программного обеспечения будет минимальной. Массовый импорт новых образов с локального диска, отсутствие требований к подключению к Интернету, проблемы с производительностью и т. Д. Делают этот проект хорошо подходящим для WPF.

Однако для одного из наших будущих проектов многим удаленным пользователям потребуется доступ к одному хранилищу данных в нашей сети. Данные, с которыми они работают, требуют значительной проверки и обработки ошибок, поэтому запуск этого кода на локальном уровне идеален. Им потребуется возможность работать как в автономном режиме, так и в автономном режиме и оставаться синхронизированными (возможно, с помощью служб данных SQL). SLOOB (Silverlight Out Of Browser), скорее всего, будет нашим выбором, так что они могут иметь все преимущества Silverlight, но использовать его как регулярно устанавливаемое приложение, даже без подключения к Интернету.

Оба формата имеют свое место: хитрость заключается в том, чтобы избегать использования Silverlight для всего - у нас больше инструментов, чем просто 1 молоток. : -)

1 голос
/ 20 марта 2009

Другое отличие состоит в том, что с SL у вас есть только одно «окно», у вас не может быть диалогов (они могут быть смоделированы, но их размер ограничен главным окном), и вы не можете добавить поддержку нескольких мониторов.

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

0 голосов
/ 22 марта 2009

Хранилище : у вас есть только 25 МБ изолированного хранилища вне браузера. Если я правильно помню из некоторого видео mix09, этот предел ниже, если ваше приложение в браузере.

http://bliny.net/blog/post/Out-of-Browser-with-Silverlight-3.aspx

Нет FlowDocument : Значит, там тоже есть ограничения.

0 голосов
/ 20 марта 2009

Я недавно построил несколько внутренних инструментов, используя wpf, и я выбрал его просто потому, что мне было легче перейти с работы на win32. Я не думаю, что различия являются существенными, и на самом деле ... все, что я видел / слышал, указывает на то, что перенос между wpf и silverlight довольно прост.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...