Является ли WPF хорошим выбором для разработки линейки бизнес-пользовательских интерфейсов? - PullRequest
10 голосов
/ 21 марта 2010

Мы обсуждаем, будет ли наша будущая разработка пользовательского интерфейса Windows WinForms или WPF. Как некоторые из вас приняли это решение? Большинство наших приложений являются LOB-приложениями, и я не уверен, что вижу явное и подавляющее преимущество WPF для этих типов приложений. Тем не менее, мои знания WPF ограничены. Я также немного обеспокоен тем, что WPF будет в моде еще пару лет, а затем Microsoft устанет от этого и подтолкнет к чему-то другому. Я предполагаю, что одним из аргументов против этого является тот факт, что Visual Studio 2010 является приложением WPF.

Спасибо.

Ответы [ 11 ]

14 голосов
/ 21 марта 2010

Здесь нужно учитывать множество факторов.

Причины не выбирать WPF:

  • В настоящее время он имеет меньшую поддержку, чем WinForms, для обычных элементов управления больших объектов, таких как средства выбора даты, виджеты числовых записей и т. Д., Хотя это улучшается с помощью набора инструментов WPF, в WPF 4 и сторонних поставщиков элементов управления.
  • Инструмент не подходит, чтобы целовать сапоги дизайнера Windows Forms. (Хотя, если быть честным, это отчасти потому, что инструментальные средства должны справляться с гораздо более сложными способами построения представлений. И Blend определенно добивается этого.)
  • Совсем другая ментальная модель для Windows Forms. Чтобы получить реальную выгоду от WPF, вам нужно думать совершенно иначе, чем вы привыкли. Таким образом, может существовать существенная кривая обучения - не только с точки зрения изучения технологии, но и с точки зрения усвоения идиом и шаблонов (хотя сейчас вокруг идиоматического WPF ресурсов сообщества намного больше, чем раньше).

Причины выбрать WPF:

  • Достойная архитектурная поддержка. WPF (если вы все делаете правильно) имеет приличное разделение кода и встроенного интерфейса, что значительно упрощает тестирование и развитие приложений WPF.
  • Большая гибкость. Например, если вам нужно простое отображение карты, вы можете создать его за пару часов из ListBox вместо того, чтобы искать и приобретать сторонний компонент или писать элемент управления карты с нуля. Простая визуализация данных - убийственная функция для WPF.
  • WinForms - это тупик. Он не увидит каких-либо улучшений от Microsoft, и поставщики элементов управления уже начинают переходить на WPF по мере насыщения рынка WinForms.
  • Большая часть вашего опыта работы с WPF может быть перенесена в Silverlight, что (а) дает вам гибкость при переносе ваших приложений в браузер и на телефон и (б) дает вам дополнительную уверенность в том, что Microsoft не потеряет интерес, даже если они «устали» от WPF, они проявят очень сильную приверженность Silverlight.

Лично, если бы я запускал настольное приложение Windows сейчас, я бы выбрал WPF. Тем не менее, я уже поднялся на кривой обучения. Для команды, которая не имеет опыта работы с WPF, стоимость его приобретения должна быть более значительным фактором, чем для меня.

11 голосов
/ 21 марта 2010

Нужно иметь в виду, что это Silverlight. Возможно ли, что вы захотите написать свое приложение для запуска из браузера в будущем или, возможно, даже с устройства Windows Phone 7? Хотя Silverlight и WPF не совсем одинаковы, они чрезвычайно похожи. Это был бы мой основной аргумент "будущего" в пользу WPF.

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

5 голосов
/ 21 марта 2010

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

Теперь, когда система работает в течение года или около того, клиенты приходят ко мне с такими вопросами, как «Мы ​​хотели бы иметь возможность изменить порядок информации на этом экране путем перетаскивания» и «Можем ли мы получить эту информацию для отображения в сетке на этой части этой вкладки? " и - мой любимый - "Можем ли мы получить проверку орфографии и автотекст?" Эти запросы попадают в очередь, которая становится чертовски длинной.

Мне потребовалось немало времени, чтобы выяснить, как изменить дизайн приложения, чтобы оно могло поддерживать пользовательский интерфейс WPF. (На самом деле, это значительное занижение. Я боролся с этим время от времени в течение полутора лет, и я начал набирать обороты только после того, как вырвался из книг WPF, над которыми я работал и научился MVVM.) Как только я это сделал, результаты впечатляют.

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

(Пример: пользовательский интерфейс представляет DataRow s с различными шаблонами. Поскольку на данном экране могут быть десятки строк, а курсор довольно мал, полезно, чтобы пользователь мог сказать, На первый взгляд, в какой строке находится курсор. Мне потребовалось десять минут, чтобы реализовать стили, которые теперь делают эту визуальную доступность доступной везде в моем приложении. Это меньше времени, чем потребовалось бы для оценки , что если бы я хотел добавить его в свое приложение WinForms. Конечно, это заняло бы намного больше времени, если бы не было возможности сделать это путем добавления двух стилей. WPF - это не волшебство.)

Есть ли недостатки? Как любит говорить г-жа Пэйлин, ты уверен. Просмотрите некоторые вопросы, которые я задавал для SO - тот, который о , о том, как неопределяемый преобразователь значений изменил поведение привязки данных , является хорошим. Весь подход к отладке привязок «теряй живот, пока патруешь голову» довольно разочаровывает, тем более что ошибки связывания настолько просты, что даже не знают об этом. (Теперь я постоянно держу окно «Вывод» на экране только для того, чтобы при обнаружении каких-либо ошибок привязки во время тестирования движение сообщений, которые регистрируются, попадалось мне на глаза.) Было бы неплохо иметь возможность получить реальная трассировка стека, когда ваше окно выдает XamlParseException. Не начинай говорить, я могу говорить всю ночь.

И инструменты! Визуальные инструменты Visual Studio для создания пользовательских интерфейсов WPF для меня совершенно бесполезны. У меня есть Blend, и я использовал его для изменения шаблона элемента управления, но в целом я нахожу, что использование Blend похоже на попытку бегать по болоту, полному колпаками и проволокой. Я уверен, что это действительно здорово, если все, что вы знаете, это Blend, но если вы сначала узнали объектную модель WPF и XAML, поведение Blend довольно загадочно. Редакторы XML в Visual Studio и Kaxaml вызывают у меня грусть, а функциональность Resharper WPF, скажем так, находится в стадии разработки. Я очень, очень предпочитаю инструменты для WinForms, которые позволяют мне плавно и быстро создавать код медленного, изворотливого и не поддерживаемого воронами кода, который я собираюсь ненавидеть.

1 голос
/ 21 марта 2010

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

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

Другая проблема с XAML - это компилятор. XAML только немного лучше, чем волшебные строки. Компилятор не может уловить большинство ошибок, которые вы делаете в XAML, и некоторые ошибки даже не повредят ваше приложение. Вместо этого WPF напечатает сообщение об ошибке на вашем выходе и продолжит.

1 голос
/ 21 марта 2010

Зная оба, я очень надеюсь, что WPF - это будущее. У Windows Forms есть невероятные болевые точки, например относительно привязки данных, и это в значительной степени тонкая пленка .NET на многих существующих вещах. Когда мне приходилось отлаживать в таких классах, как BindingSource, это чертовски меня пугало. Я не знаю, как выглядят классы WPF, но Microsoft наверняка что-то узнает в период с 2001 по 2006 год.

Я люблю WPF из-за

  • стиль
  • шаблоны данных
  • отличная и первоклассная поддержка связывания данных
  • декларативная настройка пользовательского интерфейса
  • привязанные свойства
  • ...

Я могу только надеяться, что Microsoft будет более широко использовать эту технологию пользовательского интерфейса, тем самым уменьшая ее слабые стороны, которые в основном связаны с производительностью. WPF довольно требовательный. В VS2010 я надеюсь увидеть дизайнеров, которые продемонстрируют мощь пользовательского интерфейса (дизайнер XML-схем в бета-версии уже выглядел довольно полезным). Я бы подумал, что такое приложение, как MS Word, много выиграло бы от всех возможностей преобразования WPF.

1 голос
/ 21 марта 2010

Я думаю, что MS посылает ясное сообщение о том, что WPF и Silverlight - это настоящее и будущее. Премьер-министр Winforms сказал так же. Кроме того, в будущем ожидается слияние WPF и Silverlight.

Мы столкнулись с этой же дилеммой около 6 месяцев назад в моем офисе. Мы запускали большое LOB-приложение, и никто из команды не имел большого опыта работы с WPF или Winforms. В этом случае мы не смогли найти убедительную причину, чтобы пойти с Winforms, и мы чувствовали, что WPF предложил нам гораздо более четкое разделение проблем. Мы решили использовать WPF и использовать PRISM в качестве основы приложения. 6 месяцев спустя, я думаю, мы сделали правильный выбор.

1 голос
/ 21 марта 2010

Я задавался вопросом, что сам. Но тот факт, что VS2010, как вы сказали, широко используется WPF, говорит мне о том, что Microsoft пытается сказать миру, что это не просто очередное увлечение MS, но оно останется на некоторое время.

1 голос
/ 21 марта 2010

WPF, по-видимому, заменит Winforms, по крайней мере, на устройствах с Windows Mobile, а дальнейшая разработка будет сосредоточена на Silverlight (дополнительный ответ WPF) и XNA.

На открытом рынке имеет смысл охватить WPF, если вы хотите сохранить свою привлекательность для более широкого рынка рекрутинга.

0 голосов
/ 19 июля 2010

ИМХО, Microsoft дала несколько подсказок о своем будущем пути, разработав VS 2010 в WPF.

WPF не больше, не меньше, чем WinForms. У него совершенно другой и расширяемый способ дизайна UX.

0 голосов
/ 24 марта 2010

Что касается инструментария, я признаю, что для создания приложений WPF и Silverlight в Visual Studio 2008 разработчик потребовал немалых знаний, чтобы разобраться в этом.Однако я надеюсь, что вы познакомитесь с улучшенным конструктором в Visual Studio 2010 - он имеет гораздо больше функций, которые, как мы надеемся, будут иметь смысл для разработчика Windows Forms для создания бизнес-форм, будь то в Silverlight или WPF.

Посмотрите эти видеоролики: Инструменты привязки данных и форм Инструменты для укладки Фьючерсы Новые функции в бета-версии 2

Иполучите Кандидата на выпуск здесь:

У команды появился новый блог здесь

Я надеюсь, вы найдете эту полезную информацию - если вы ужепробовал Visual Studio 2010 я хотел бы услышать ваши отзывы.Пришлите мне письмо на mwthomas на microsoft dot com.

Спасибо Марк Уилсон-Томас, менеджер программы, дизайнер WPF и Silverlight, Visual Studio

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