2008-09-16 15 views
15

Мы создаем инфраструктурные услуги (извлечение и хранение данных) и небольшие интеллектуальные клиентские приложения (в основном, в основном для коммерческих банков). Наша команда большая, 40 странных контрактных сотрудников, которые являются программистами на C# .NET. Мы поддерживаем 50 нечетных приложений и систем, которые мы разработали.Должна ли моя команда C# .NET перейти на Windows Presentation Foundation?

Несколько членов команды начали обрабатывать приложения WPF, WF и WCF. Учитывая, что они являются первыми, большинство участников не понимают эти технологии. Какую пользу они могут передать, что позволит преодолеть затраты на переподготовку команды?

ответ

15

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

+5

Я не думаю, что это так. Кажется, проще разрабатывать и реализовывать * простые * пользовательские интерфейсы в WinForms, чем WPF, и я говорю это с несколькими месяцами опыта WPF. Исключением является то, что когда вам нужно что-то, что WinForms не делает из коробки, вы сделаете гораздо больше работы, чтобы получить его. – PeterAllenWebb 2008-10-21 14:48:35

+8

@PeterAllenWebb - Это не относится ко мне и VS2010. У меня были годы работы с WinForms и один раз над учебным горбом WPF, я нахожу, что я могу выбивать интерфейс WPF намного быстрее, независимо от сложности. Это в основном из-за простоты написания кода пользовательского интерфейса декларативно в XAML и привязки его к модели представления C#, чему годам ASP.Net я быстро помогал. – codekaizen 2010-01-27 18:44:59

0

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

0

Сначала я не был уверен, что большинство приложений выглядят довольно лаги (предоставлено, WinForms тоже не молниеносно). Это, по-видимому, исправлено с .NET 3.5 SP1, где они интегрировали аппаратное ускорение для ряда методов.

Интегрированные возможности анимации/раскадровки/вектора очень приятные и шаг в правильном направлении. Если вы получите хватку Expression Blend, вы сможете быстро прототипировать приложения. На мой взгляд, это явные преимущества.

В конечном счете, я не думаю, что WinForms и более старые методы - это устойчивый выбор.

Существует также Adobe Flex, Adobe/Macromedia имеют опыт в более мощных и «захватывающих» графических решениях из-за их опыта работы с Flash.

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

Re:

фантазии отчетности

fanciness, вероятно, является одной из сильных сторон WPF ...

23

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

WPF имеет некоторые действительно, действительно отличные функции. В общем, это делает очень сложным тривиальным (например, создание списков, которые показывают богатые данные презентации, например изображения, смешанные с таблицами, копирование и т. Д.), Но, в свою очередь, может сделать так, чтобы «это было так просто в Win32», больно разочаровывает. Я работаю в WPF уже 6 месяцев, и я все еще нахожу привязку привязки combobox к dataprovider XML ужасным опытом.

Поскольку я избегаю выше, WPF имеет отличное и не очень хорошее связывание.Мне нравится, как вы можете привязываться к XML-документу или встроенному фрагменту с помощью XPath, но я ненавижу, как вы можете использовать только встроенные проверки привязки, если привязка является двусторонней (и я дважды ненавижу, как вы не можете заставить встроенные проверки привязки для передачи пользовательского ввода обратно объекту, даже если данные попадают за пределы некоторого бизнес-правила).

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

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

Если вы решили идти по пути WPF, я очень рекомендую эти 2 книги:

Удачи!

+1

Я полностью согласен с изучением «стены». Однако я не согласен с комментариями о том, что некоторые вещи по своей сути сложны в WPF; предметы, которые вы так чувствуете, - это вещи, которые вы все еще находите на «неправильной стороне стены». – 2010-01-31 13:29:19

0

WPF - это очень свежий подход к разработке пользовательских интерфейсов. Единственная проблема заключается в том, что он вводит большое количество концепций, некоторые из которых скрывают вербальность XAML (XML). Он также немного страдает от подхода architecture astronaut к дизайну, но в целом я доволен им. Это делает вещи, о которых вы раньше не говорили, во что-то, что можно сделать.

12

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

Желают ли ваши разработчики (желательно, EAGER) потратить время, необходимое для того, чтобы научиться эффективно использовать WPF? Я никогда бы не подумал сказать это о MFC, Windows Forms или даже неуправляемом DirectX, но вы, вероятно, НЕ хотите, чтобы команда пыталась «забрать» WPF в ходе обычного dev. цикл для доставки продукта!

Как минимум один или два из ваших разработчиков имеют определенную конструктивную чувствительность, и люди с окончательным дизайном имеют хорошее понимание проблем разработки, поэтому вы можете использовать возможности WPF для создания чего-то, что на самом деле ЛУЧШЕ, а не просто более «красочный», показывая безвозмездную анимацию?

Выполняет ли какой-либо процент вашей целевой клиентской базы встроенные графические чипсеты, которые могут не поддерживать функции, которые вы планировали, или они все еще работают под управлением Windows 2000, что устранит их как клиентов в целом?Некоторые люди также спрашивают, действительно ли ваши клиенты заботятся об улучшенных визуальных эффектах, но, проведя дискуссии внутри компании «Наши бизнес-клиенты не заботятся о цветах и ​​фотографиях» в начале 1990-х годов, я знаю, что хорошо разработанные решения от ваших конкурентов будут СДЕЛАЙТЕ их заботу, и реальный вопрос в том, являются ли условия правильными, чтобы вы могли предложить что-то, что заставит их заботиться ТЕПЕРЬ.

Влияет ли проект на разработку сайта, по крайней мере, на уровень презентации, чтобы избежать дополнительной сложности при попытке подключиться к несовместимым старым лесам (совместимость с Windows Forms не является бесшовной)?

Может ли ваш менеджер принять (или отвлечься от заметок) значительный DROP в производительности разработчиков в течение четырех-шести месяцев?

Этот последний вопрос объясняется тем, что мне нравится думать о природе WPF «FizzBin», с десятью различными способами реализации любой задачи и без видимых причин предпочесть один подход к другому, а также небольшое руководство, доступное для помогите вам сделать выбор. Мало того, что недостатки любого выбора, который вы сделаете, станут понятнее только позже в проекте, но вы практически гарантированно, что каждый разработчик вашего проекта примет другой подход, что приведет к серьезной головной боли обслуживания. Большинство расстраивает все несоответствия, которые постоянно вас трогают, когда вы пытаетесь изучить структуру.

Вы можете найти более углубленного WPF информации, связанной в записи в моем блоге:

http://missedmemo.com/blog/2008/09/13/WPFTheFizzBinAPI.aspx

2

WPF радикально отличается от Windows Forms. Это означает, что вам нужно много тренировок для вашей команды.

4

WPF:

  • все о графике!
  • Является независимой от разрешения каркасом (смысл - WPF полностью принял концепцию векторной графики), а также сделал масштабирование растровой графики бездумным процессом)
  • Аппаратное ускорение !!!! Графика WPF аппаратно ускоряется, где это возможно, через Direct3D - это НЕ GDI!
  • Не имеет функции Paint() - WPF основан на сохраненной графической системе/системе рисования на дереве. В заключение!
  • Очень графически динамично - все может быть анимировано - и анимация встроена в фреймворк. Помните .... нет Paint()!
  • Исключительно настраиваемый - хотя попадание в nitty-gritty ControlTemplates - это место, где начинается усложнение. Вы просто добавляете объекты в дерево отображения и позволяете WPF беспокоиться об обновлениях.
  • Очень богат функциями рендеринга текста.
  • Надеемся, что улучшите рабочий процесс дизайнера/кодера с использованием декларативного языка (XAML) для графических определений и сложного программного обеспечения для создания графического интерфейса (Expression Blend). Хотя важно понимать, что все, что может быть сделано декларативным способом, также может быть выполнено в коде. И это тоже спорно, что сложность МОФ отпугнули многих дизайнеров - но он поставил мощный каркас в руках кодеров.

WPF:

  • не является Windows Forms ++ - это просто совершенно другая концепция все вместе
  • не является Silverlight - Silverlight является подмножеством WPF. Довольно легкое подмножество.
  • не является MFC - ОК, это должно быть очевидно
  • Не легко распространяемый с Windows XP - это позор, и, возможно, один из его самых больших неудач
  • Не XAML. Это различие необходимо понять. XAML - это необязательный декларирующий язык, который может использоваться в процессе разработки приложений WPF. Это абсолютно не необходимый компонент, хотя он когда-то понятен, он определенно улучшает рабочий процесс, дизайн и рефакторинг сложных графических фреймворков.
0

WPF - это современное «современное состояние» в методологиях пользовательского интерфейса. Если бы он был доступен, поскольку люди учились писать пользовательские интерфейсы (вместо GDI, Win32 и более поздних WinForms, которые относительно похожи), это не займет много времени, чтобы изучить его. Вы, вероятно, думаете об этом, как о переключении на клавиатуру Dvorak - самая сложная часть - это изменение вашего мышления о частях дизайна пользовательского интерфейса, которые, как вы думаете, вы хорошо знаете.

При этом вы должны по крайней мере поощрять членов вашей команды экспериментировать с WPF в свободное время. Сделать ресурсы с самого начала, может быть следующим:

  • Есть ссылки на страницы, которые говорят о том, что вам нужно установили для работы с WPF - если он не упоминает Смешать тогда я не стал бы доверять Это.
  • Обратите внимание на вопросы, связанные с началом работы, так как они, вероятно, будут иметь хорошие ответы от опытных людей.
  • Купите хотя бы несколько хороших книг и позвольте людям заимствовать их, если они захотят.
Смежные вопросы