Я знаю, что это старый пост, но я думаю, что это все еще правильный вопрос.
Я использовал WinForms в течение 3 лет в первой компании, в которой работал. Там было несколько действительно хороших программистов, и они нашли несколько очень умных способов сделать очень крутые вещи. WinForms выдержал испытание временем. Это надежная, надежная и эффективная платформа. Многие люди, а также многие компании, как крупные, так и небольшие, используют WinForms в течение многих лет, и эта технология снова и снова зарекомендовала себя. С такой инерцией трудно бороться, даже если вы Microsoft.
Тем не менее, WPF определенно будущее. Microsoft ясно дала это понять, создав такие продукты, как Visual Studio 2010 и Expression Blend. (При использовании WPF для внутренних проектов Microsoft была вынуждена исправить многие проблемы, такие как отрисовка шрифтов и проблемы со скоростью, которые не позволяли людям сначала принять его. Visual Studio 2010 показывает, что WPF уже давно готов к работе.
Итак, лучше ли писать свою программу в WinForms или WPF? Ответ таков: WPF. Я говорю это по двум причинам. Во-первых, поскольку Microsoft поддерживает его внутренне, мы можем предположить, что он будет существовать очень долго. Microsoft показала нам, что это следующий инструмент выбора, который подводит меня к следующему пункту: он превосходит WinForms (некоторые люди, с которыми я говорил, не согласны, но, тем не менее, это правда, и с каждым днем она становится все более очевидной) , В WPF есть множество функций, которые WinForms (вероятно) никогда не будут предоставлены, такие как интегрированная поддержка потрясающего связывания данных и анимации на основе шкалы времени, которые позволяют легко создавать удивительные темы для ваших приложений, и дизайнеры будут просить сделать это. В WPF гораздо больше, чем можно описать в комментарии, но для меня это два больших вопроса:)
При этом я знаю, что вы ничего не можете сделать в WPF, чего вы не можете сделать в WinForms. Вы можете делать что угодно на любом языке, если хотите достаточно сильно. Дело в том, что там, где WinForm оставит вас в поисках Google для того, как кто-то еще сделал что-то классное, WPF поставляется со встроенной поддержкой всех функций, которые Microsoft считает будущим Windows, и предоставляет их вам в руки.
Со временем люди привыкнут к новым функциям, встроенным непосредственно в Windows, и начнут ожидать, что они будут доступны во всех используемых ими приложениях. Это достигнет точки, когда все, что их не поддерживает, будет казаться неуклюжим, менее пригодным для использования и, по-видимому, будет стоить меньше денег. (Я считаю, что интеграция с сенсорным экраном является наиболее очевидным примером этого. Хотя существуют решения с сенсорным экраном, которые крепятся к монитору и эмулируют мышь, на любом компьютере технология сенсорного экрана прошла очень долгий путь, а Windows 8 размыла линию между настольным компьютером и мобильными устройствами люди, вероятно, захотят использовать приложения таким образом, что их будет чрезвычайно сложно реализовать, если ваше приложение использует WinForms.)
Рано или поздно, я считаю, что поддержка и разработка для WinForms прекратятся, и все, кто оставит себя позади, будут вынуждены портировать, и быстро. Тем не менее, существует слишком много программ, которые полагаются на WinForms для Microsoft, чтобы иметь возможность удалить его в ближайшем будущем. Кто знает, что будет. Возможно, WinForms станет для Microsoft тем же, что и процессоры Itanium для Intel, продуктом, у которого достаточно пользователей, чтобы поддерживать его, даже несмотря на то, что существуют лучшие решения. (http://arstechnica.com/business/news/2011/06/ask-ars-why-itaniumask-ars-with-xeons-improvement-why-bother-with-itanium.ars)
Так что мой совет будет таким: в отношении новых разработок, переключитесь на WPF. Отправьте некоторых сотрудников на учебные курсы или дайте им поиграть некоторое время, чтобы они могли лучше понять технологию. Кривая обучения будет крутой, но это увеличит набор навыков вашей команды, потому что, изучая WPF, они также будут на пути к изучению SilverLight, который достаточно похож на WPF для людей, знакомых с WPF, чтобы иметь возможность чтобы выучить это быстро, но предназначен для Интернета, а не для рабочего стола. Это ценно, потому что приложения, переписанные в WPF, будут намного проще конвертировать в веб-приложения в дальнейшем. WPF является новым, но он создан не просто ради того, чтобы люди могли чему-то научиться. Он был разработан, чтобы сделать приложения более удобными, интуитивно понятными и портативными. Оно было разработано, чтобы помочь разработчикам приспособить свои приложения к новой эре компьютеров.
Относительно приложений, написанных на WinForms: я думаю, можно с уверенностью предположить, что WinForms будет поддерживаться в течение достаточно долгого времени просто из-за объема поддержки, которую он получил. Я бы рекомендовал вашей команде ознакомиться с WPF и постепенно начинать переносить ваши приложения в WPF. Возьмите все время, которое Microsoft позволяет, и не торопите процесс, но всегда имейте в виду, что, так или иначе, день WinForms закончился, и хотя никто не может быть уверен, что произойдет, поддержка устаревшего продукта будет прекращена как только это может быть оправдано. Даже если приложения WinForms хранятся много лет, важно помнить, что времена меняются, и нам всем нужно меняться вместе с ними.