Будет ли Windows Forms устаревшим в пользу WPF?

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

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

Мы хотели бы лучше понять, планирует ли Microsoft прекратить новую разработку технологии Windows Forms и заставляет все новые разработки перейти в WPF или обе технологии будут поддерживаться и улучшаться. (Или они просто собираются подождать и посмотреть, как это происходит, прежде чем решиться?)

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

Это частично аргументированный аргумент, и, в конце концов, это глубоко расстроенный голос ….

WinForms основан на технологии user32 / GDI, которая существует с самого начала современной Windows. Он никуда не денется, во всех смыслах фразы: он не получит новых функций; он не получит поддержки.

Или, может быть, это еще будет. API диаграмм в .NET 4.0 является новым и написанным для GDI, а не WPF.

В общем, Microsoft имеет историю с новыми технологиями, которая выглядит следующим образом:

  1. Придумайте новый API.
  2. Инновации с этим API для 2 или 3 циклов продукта.
  3. Поймите, что продолжение инноваций означает получение необоснованных уступок для обратной совместимости или реализаций, из-за которых технология изначально не обращалась.
  4. Внесите новый API, обернув или оставив существующий API. Существующий API не исчезает, но новый материал также не использует его.

RDO -> DAO -> ADO -> ADO.NET -> LINQ to SQL -> Entity Framework, бросать в какой-то ODBC … есть сокровище «мертвых» и завернутых технологий, которые все еще пригодны и до сих пор существуют. Это технологии доступа к данным, но эта же идея применяется; Интерфейсы пользовательского интерфейса продолжаются немного дольше, поскольку они являются наиболее заметными областями приложений.

Если я надену шляпу Nostradomus, я могу с уверенностью сказать, что когда .NET, oh, 6.0 выходит в 2015 году – это звучит далеко, но как можно ближе к 2003 году – WPF будет «мертвым», как Windows Формы, потому что был создан какой-то другой отличный управляемый интерфейс, который сглаживает все еще нераскрытые ошибки и неудобства WPF. Какая разница? К тому времени все, о чем мы сегодня говорим, будет устаревать. (В любом случае что-то придется давать в .NET 5.0, потому что структура становится комично большой.)

Во всяком случае, то, что Windows Forms собирается для него, состоит в том, что оно основано на технологии, которая существует уже более десяти лет, и что инерция не скоро умирает: браузер, который вы вводите, использует GDI, панель задач используя GDI, ваше приложение для обмена мгновенными сообщениями использует GDI, новый элемент управления ленты в Windows 7 использует GDI, принтер на 60 долларов, на котором работает ваш компьютер с помощью драйвера принтера GDI, приложения Windows CE, работающие на вашем телефоне, запускают порт Windows Forms и GDI, новый просмотр событий в Windows Vista использует Windows Forms, и за платформой Windows Forms существует большое стороннее компонентное сообщество – WPF – очень маленький, нишевой продукт, который существует только в управляемом мире, который сам по себе меньше, чем его неуправляемый аналог.

С этой целью я чувствую, что все эти дискуссии «WinForms vs. WPF» выдувают вещи из пропорции; технологии не являются взаимоисключающими или низкими / превосходящими, так как маркетинг Microsoft может заставить нас поверить, а разработчики Microsoft достаточно умны, чтобы понять это. Они просто разные, и один из них бывает старше. Если бы мы не рассматривали это периодически, мы бы все слушали Gartner в 2005 году и полностью прекратили работу с приложениями Windows и перевели все в AJAX в Интернете … с помощью наших SOA-интерфейсов … которые отображают альтернативный интерфейс REST .. , которые используют TDD DDD-модель на этом бэкэнде … абстрагированы от базы данных ORM.

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

Разумеется, WPF является частью будущего, но это не будущее. Лично я нахожусь на заборе, чтобы увидеть, действительно ли WPF «делает это» в технологиях пользовательского интерфейса, что предыдущие технологии доступа к данным не имеют, хотя Visual Studio, приняв его в 2010 году, является довольно приятным признаком того, что Microsoft действительно серьезно относится к этому доставляя его в флагманский продукт.

Подводя итог: если вы строите приложение LOB, я бы не чувствовал себя виноватым в использовании WinForms. Если вам нужен расширенный сценарий компоновки, WPF interop всегда доступен для вас, так же как и регулярный веб-сайт с Flash-объектом. Но для чего-либо еще вы обязаны своим клиентом придумать хороший разум для перехода всей команды и оболочки в WPF; У Windows Forms есть свои проблемы, но половина битвы с любой платформой – это знание проблем и ограничений, и большая часть мира (включая Microsoft) все еще изучает WPF.

WinForms не будет устаревать до тех пор, пока Win32 не будет … что может быть когда-то!

(Помня, что WinForms в основном представляет собой абстракцию над Win32)

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

Политика поддержки Microsoft для .NET Framework и всех classов в ней составляет 5 + 5: 5 лет поддержки после релиза, а затем доступна 5-летняя расширенная поддержка или плата.

Благодаря обновлению .NET 4.0, включая все материалы WinForms, выпущенному в 2009 году, вы получите 5 лет основной поддержки до 2014 года для любого приложения WinForms, созданного на .NET 4.0.

Скорее всего, все, что приходит после того, как .NET 4.0 будет включать WinForms, тоже, и в этом случае часы сбрасываются.

Эта политика 5 + 5 применяется ко всем связанным с бизнесом инфраструктурному программному обеспечению: Windows, Windows Server, SQL Server, Visual Studio, .NET и т. Д.

Дело в том, что вам не придется беспокоиться о нехватке поддержки WinForms.

Но предыдущие плакаты правильны – продвижение продвигается в WPF.

Я бы не слишком беспокоился о долгосрочной поддержке. WPF может получить всю любовь в последнее время, но есть слишком много кода WinForms, чтобы отказаться от поддержки. В конце концов, даже MFC по-прежнему получает обновления с каждой версией Visual Studio.

Я думаю, что Windows Forms будет по-прежнему поддерживаться Microsoft, но улучшается только небольшими способами. Все новые горячие новинки пойдут в WPF. Windows Forms находится в аналогичной позиции с LINQ to SQL . LINQ to SQL – это жесткий, компактный, быстрый ORM, который является удивительным, но Microsoft бросает свой вес за Entity Framework .

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

Если вы хотите, чтобы приложение, которое (более) легко переносилось между веб-интерфейсом, интерфейсом WPF или интерфейсом Silverlight (или даже с Flex), Windows Forms, вероятно, не для вас. Эти другие интерфейсы используют стандартную разметку и архитектуру, которая лучше подходит для развития предприятия.

Я, конечно, не назвал бы WinForms мертвым … но я также не буду писать в нем новый проект. Я бы написал все новые проекты, используя WPF по множеству причин. Самое большое, что если вы используете WPF / XAML, ваши усилия по переносу на Silverlight будут намного проще.

Несколько лет назад я перешел в предварительный лагерь WPF в Редмонде , и я задал этот вопрос одному из людей, работающих в Crossbow (WPF / Windows Forms interop). Его ответ заключался в том, что Windows Forms будет поддерживаться в обозримом будущем, но не может гарантировать никаких гарантий.

Учитывая это, я думаю, что вы будете в порядке, основывая свое приложение на Windows Forms, зная, что у вас будет некоторый уровень поддержки для следующей или двух версий .NET (например, 3-5 лет).

Я лично поставил бы себя ближе к 10 годам, учитывая продолжение поддержки Microsoft для Win32. Вы не можете получать лодку с новыми функциями с каждой версией, но вы также не будете удалены.

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

  • Приложение WPF из Visual Studio 2010 выходит из строя Windows 7
  • Есть ли хороший способ конвертировать между BitmapSource и Bitmap?
  • Изменение цвета ячейки DataGrid на основе значений
  • Обратный вызов, когда свойство зависимостей получает изменение xaml
  • Как точно встраиваемые свойства работают в WPF?
  • Как связать TextBlock с ресурсом, содержащим форматированный текст?
  • Как я могу программно генерировать события нажатия клавиш на C #?
  • Разница между видимостью.Collapsed и Visibility.Hidden
  • Как обрабатывать сообщения WndProc в WPF?
  • Как я могу привязать данные строк к ListBox в WPF / WP7?
  • Связывание WPF ComboBox с пользовательским списком
  • Давайте будем гением компьютера.