Следует ли моей команде C # .NET перейти на Windows Presentation Foundation?

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

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


person Community    schedule 16.09.2008    source источник


Ответы (9)


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

person Loren Segal    schedule 16.09.2008
comment
Я вообще не думаю, что это так. Кажется, проще спроектировать и реализовать простые пользовательские интерфейсы в WinForms, чем в WPF, и я говорю об этом, имея несколько месяцев опыта работы с WPF. Исключением является то, что когда вам нужно что-то, что WinForms не делает из коробки, вам потребуется гораздо больше работы, чтобы это получить. - person PeterAllenWebb; 21.10.2008
comment
@PeterAllenWebb - Это не так для меня и VS2010. У меня был многолетний опыт работы с WinForms, и, пройдя курс обучения WPF, я обнаружил, что могу разбить WPF UI намного быстрее, независимо от сложности. В основном это связано с легкостью декларативного написания кода пользовательского интерфейса в XAML и привязки его к модели представления C #, что за годы ASP.Net заставили меня быстро делать. - person codekaizen; 27.01.2010

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

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

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

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

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

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

Удачи!

person cranley    schedule 16.09.2008
comment
Я полностью согласен с обучающей стеной. Однако я не согласен с комментариями о том, что некоторые вещи в WPF по своей природе сложны; предметы, к которым вы так относитесь, - это просто вещи, с которыми вы все еще находитесь не по ту сторону стены. - person Sam Harwell; 31.01.2010

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

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

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

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

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

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

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

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

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

person AndyL    schedule 17.09.2008

WPF:

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

WPF:

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

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

person Hallgrim    schedule 17.09.2008

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

person Joel Coehoorn    schedule 16.09.2008

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

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

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

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

Я просто надеюсь, что у нас не получится установить 10 разных виртуальных машин на настольном компьютере, чтобы запускать все эти разные фреймворки ...

re:

модный репортаж

причудливость, вероятно, одна из сильных сторон WPF ...

person kitsune    schedule 16.09.2008

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

person Anders Rune Jensen    schedule 16.09.2008

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

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

  • Имейте ссылки на страницы, которые рассказывают о том, что вам нужно установить для работы с WPF - если в нем не упоминается Blend, я бы ему не стал доверять.
  • Поищите здесь вопросы "для начала", так как на них, вероятно, будут хорошие ответы от опытных людей.
  • Купите хотя бы несколько хороших книг и позвольте людям брать их, если они хотят.
person Sam Harwell    schedule 31.01.2010