Каковы основные преимущества попадания в WPF? - PullRequest
9 голосов
/ 08 октября 2009

Недавно я начал использовать WCF, и я был очень впечатлен настолько, что мне стало интересно узнать больше о WPF, но мой первоначальный опыт работы с XAML был не таким уж большим, около 1 года назад.

Есть вещи, улучшенные, действительно ли доставка независима от браузера (может работать на браузерах, отличных от IE).

Увеличивается ли производительность разработки, улучшается ли разделение кода и пользовательского интерфейса? Требуется ли изучение Silverlight?

Если у вас был реальный опыт работы с WPF, укажите плюсы и минусы.

Ответы [ 4 ]

12 голосов
/ 08 октября 2009

Первый:

WPF не зависит от браузера, так как WPF не работает в браузере.

XBAP (теперь не рекомендуется) и Silverlight запускаются в браузере, но оба являются подмножествами WPF.

Второе:

Основным преимуществом WPF является иерархическая структура структур GUI, которые вы можете создавать. Если вы когда-либо занимались программированием на ASP.NET, WPF - более естественный шаг, чем WinForms.

Привязка данных в WPF отличается, но лучше, IMO.

Итог: XAML и его тонкости - это большая кривая обучения, а WPF и XAML идут рука об руку. Но как только вы поймете основы и сможете начать создавать базовые графические интерфейсы с ним, вам больше никогда не захочется использовать WinForms.

Что касается плюсов и минусов, я бы сказал, что единственное реальное con для WPF - это большая кривая обучения. Он может делать все, что может делать WinForms с точки зрения .NET, и его легче использовать (если вы это понимаете), чем WinForms. Единственное место, в котором оно может «отсутствовать», - это прямые манипуляции с GDI +, но вы, вероятно, захотите избежать этого, где это возможно. Если это становится необходимым в проекте WPF, просто создайте элемент управления WinForms и разместите его в WPF. Не самое элегантное решение, но оно может сделать работу.

4 голосов
/ 08 октября 2009

Против

  1. WPF не так прост в изучении.

  2. WPF еще молод. В качестве примера: чтобы использовать элемент управления сеткой данных, необходимо загрузить неподдерживаемый инструментарий WPF. Silverlight 3 теперь изначально поддерживает сетку данных, и я уверен, что в VS 2010 сетка данных будет свернута в WPF. Но для созревания требуется время.

  3. Как и с любой технологией, не всегда доверяйте образцам. Я видел довольно плохой XAML в дикой природе (даже от Microsoft).

Плюсы

  1. Пользовательский интерфейс декларативно выражается в виде иерархии объектов, представленных в XAML, вместо этого в визуальном конструкторе, который допускает взаимодействие только с помощью мыши. (Visual Studio и Expression Blend также имеют визуальный дизайнер, работающий поверх XAML.)

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

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

  4. Сильная поддержка привязки данных позволяет легко разделить логику приложения на управляемые уровни. Вам больше никогда не придется переключать бит пользовательского интерфейса внутри объекта модели домена.

  5. Модель рендеринга в WPF - это не модель GDI, где ваш метод OnPaint вызывается для рисования определенной области окна. Вместо этого вы добавляете элементы в граф сцены (обычно выражаемый в XAML), который затем визуализируется с использованием DirectX. Во многих отношениях это гораздо лучшая модель.

Я впечатлен общим дизайном WPF, и, по моему мнению, дизайнеры WPF - действительно умные люди, которые проделали большую работу. Но работа с WPF может по-прежнему разочаровывать либо потому, что вы не нашли «правильного» решения вашей проблемы, либо потому, что некоторые аспекты WPF просто раздражают (например, когда вы хотите настроить крошечную часть встроенного и вдруг столкнулись с изменением колоссального шаблона управления).

Как вы, наверное, уже поняли, WPF - это не Silverlight. Скорее Silverlight - это «облегченная» версия WPF в браузере. Поскольку Silverlight несколько менее сложен, на самом деле это очень хорошая отправная точка для получения опыта XAML, если вы не против написать изолированное браузерное приложение вместо настольного приложения.

4 голосов
/ 08 октября 2009

Если вы занимаетесь разработкой в ​​браузере, возможно, вы захотите использовать Silverlight. Он похож на WPF, но не зависит от браузера и получает много преимуществ в плане использования, а также много внимания со стороны Microsoft. (Например, новые сервисы RIA довольно хороши для бизнес-приложений.)

Как WPF, так и Silverlight предоставляют много одинаковых преимуществ по сравнению со старыми технологиями для разработки пользовательского интерфейса, такими как Windows Forms.

  • Привязка данных в WPF и Silverlight очень мощная и очень гибкая. Это может ускорить разработку и обеспечить уровень безопасности, который раньше было сложно создать.
  • Разработка пользовательского интерфейса, хотя и отличается, гораздо более гибкая. Отделение представления от поведения в WPF и Silverlight позволяет очень быстро создавать очень настраиваемый код пользовательского интерфейса, очень быстро.
  • Новый командный интерфейс в сочетании с DataTemplates позволяет значительно упростить разработку очень гибким, тестируемым и поддерживаемым способом (с использованием шаблона MVVM).

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

2 голосов
/ 08 октября 2009

Ну, у меня есть реальный опыт работы с WPF, но не с WinForms. Я использую WPF уже 8 месяцев и нахожу забавным, легким в освоении, сложным в освоении. Связывание, команды и стили, которые являются основными IMF-функциями WPF, действительно просты в освоении и использовании. Я знаю, что команд и стиля не было в WinForms, привязка была, но, как сказал Рэндольфо, все было иначе.

Кроме того, WPF использует DirectX для рисования своей графики, теперь GDI или GDI +, что также дает ему гораздо больше гибкости для рисования продвинутой 2D-графики или даже 3D-графики. Кроме того, поскольку он расположен поверх DirectX, графический процессор используется для рисования всей графики вместо процессора (например, GDI), поэтому, в некотором смысле, вы используете меньше вычислительной мощности процессора.

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