Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

Это частично аргументированный аргумент, а частично - сердечный приговор....

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

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

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

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

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

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

В любом случае то, что Windows Forms собирается для него, заключается в том, что оно основано на технологии, которая существует уже более десяти лет, и эта инерция не умирает в ближайшее время: браузер, который вы вводите, использует GDI, на панели задач используется GDI, приложение для обмена мгновенными сообщениями использует GDI, новый элемент управления Ribbon в 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.

Ответ 2

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

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

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

Ответ 3

Политика поддержки Microsoft для .NET Framework и всех классов в ней составляет 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.

Ответ 4

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

Ответ 5

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

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

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

Ответ 6

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

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

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

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

Ответ 7

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