Должна ли моя команда С#.NET перейти на Windows Presentation Foundation?
Мы создаем инфраструктурные услуги (извлечение и хранение данных) и небольшие смарт-клиентские приложения (в основном, в основном для коммерческих банков). Наша команда большая, 40 странных контрактных сотрудников, которые являются программистами на С#.NET. Мы поддерживаем 50 нечетных приложений и систем, которые мы разработали.
Несколько членов команды начали делать WPF, WF и приложения на основе WCF. Учитывая, что они являются первыми, большинство участников не понимают эти технологии. Какие преимущества они могут передать, что позволит преодолеть затраты на переподготовку команды?
Ответы
Ответ 1
Пользовательский интерфейс WPF проще разрабатывать и поддерживать, чем существующие альтернативы С#, поэтому, если большая часть вашей кодовой базы отвечает за обработку пользовательского интерфейса, миграция может быть полезной - как и в случае, вы обнаружите, что ваша команда сэкономит время в касающихся их слоя пользовательского интерфейса. Если большая часть вашего кода является бизнес-логикой, это не поможет.
Ответ 2
Мы просто завершаем проект, в котором я и еще 4 человека разработали довольно успешное, распределенное корпоративное приложение. Мы начали использовать Win32, а затем переключились на WPF после первой итерации, чтобы соответствовать требованиям нашего эксперта по юзабилити. Вот мой опыт.
В WPF есть действительно отличные функции. В общем, это делает очень сложным тривиальным (например, создание списков, которые показывают богатые данные презентации, например изображения, смешанные с таблицами, копирование и т.д.), Но, в свою очередь, может сделать так, чтобы "это было так просто в Win32", больно разочаровывает. Я работаю в WPF уже 6 месяцев, и я по-прежнему считаю привязку привязки к combobox к dataprovider XML страшным опытом.
Как я ускользнул выше, WPF обладает отличным и не очень хорошим связыванием. Мне нравится, как вы можете привязываться к XML-документу или встроенному фрагменту с помощью XPath, но я ненавижу, как вы можете использовать только встроенный фрагмент, в привязке проверки, если ваша привязка является двусторонней (и я дважды ненавижу, как вы не можете заставить встроенные проверки привязки передавать пользовательский ввод обратно объекту, даже если данные попадают за пределы некоторого бизнес-правила).
WPF имеет огромную кривую обучения. Это даже не кривая - это стена. Это грубо. Это совершенно другой способ работы с презентацией Windows, и для меня это всегда требовало большого количества чтения и воспроизведения, прежде чем я начал чувствовать себя немного комфортно. Это не самая легкая вещь в мире, но она позволяет вам делать невероятно мощные вещи (например, в нашем проекте я создал механизм формы, который создает полноценные формы XAML из XML, используя около 300 строк XSLT - в комплекте с полной привязкой и проверкой).
В целом, я очень доволен тем, что мы выбрали XAML, несмотря на кривую обучения, несколько грубую природу всего этого и некоторые глубокие разочарования. Позитивы намного перевешивали негативы, и это позволяло нам делать то, что, как я думал, не было возможным без особо тяжелого удара по производительности.
Если вы решите пойти по пути WPF, я бы настоятельно рекомендовал эти две книги:
Удачи!
Ответ 3
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
Ответ 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. Это абсолютно не необходимый компонент, хотя он когда-то понятен, он определенно улучшает рабочий процесс, дизайн и рефакторинг сложных графических фреймворков.
Ответ 5
WPF радикально отличается от Windows Forms. Это означает, что вам нужно много тренировок для вашей команды.
Ответ 6
Я думаю, что ключевое слово из вашего первоначального вопроса - "причудливое". Если ваши клиенты действительно ожидают большого количества блеска в поставляемом продукте, у вас, вероятно, есть что-то получить от перехода на WPF.
Ответ 7
Сначала я не был уверен, что большинство приложений выглядят довольно лаги (предоставлено, WinForms тоже не молниеносно). Это, по-видимому, исправлено с .NET 3.5 SP1, где они интегрировали аппаратное ускорение для ряда методов.
Интегрированные возможности анимации/раскадровки/вектора очень приятны и делают шаг в правильном направлении. Если вы получите хватку Expression Blend, вы сможете быстро прототипировать приложения. По моему мнению, это явные преимущества.
В долгосрочной перспективе я не думаю, что WinForms и более старые методы - это устойчивый выбор.
Кроме того, Adobe Flex, Adobe/Macromedia имеют опыт использования более мощных и "захватывающих" графических решений из-за их опыта работы с Flash.
Я просто надеюсь, что мы не получим 10 разных виртуальных машин, установленных на настольном ПК, для запуска всех этих разных фреймворков...
re:
интересная отчетность
fanciness, вероятно, является одной из сильных сторон WPF...
Ответ 8
WPF - это очень свежий подход к разработке пользовательских интерфейсов. Единственная проблема заключается в том, что он вводит большое количество концепций, некоторые из которых скрывают вербальность XAML (XML). Он также немного страдает от архитектуры астронавта в дизайне, но в целом я очень доволен этим. Это делает вещи, о которых вы раньше не говорили, во что-то, что можно сделать.
Ответ 9
WPF - это современное "современное состояние" в методологиях пользовательского интерфейса. Если бы он был доступен, поскольку люди учились писать пользовательские интерфейсы (вместо GDI, Win32 и более поздних WinForms, которые относительно похожи), это не займет много времени, чтобы изучить его. Вы, наверное, думаете об этом, как о переключении на клавиатуру Dvorak - самая сложная часть - это изменение вашего мышления о частях дизайна пользовательского интерфейса, которые, как вы думаете, вы хорошо знаете.
Тем не менее, вы должны по крайней мере поощрять членов вашей команды экспериментировать с WPF в свободное время. Сделать доступными ресурсы с самого начала, возможно, следующим образом:
- У вас есть ссылки на страницы, которые рассказывают о том, что вам нужно установить для работы с WPF - если он не упоминает Blend, тогда я бы не стал им доверять.
- Посмотрите здесь, чтобы "начать" вопросы, так как они, вероятно, будут иметь хорошие ответы от опытных людей.
- Купите хотя бы несколько хороших книг и позвольте людям заимствовать их, если они захотят.