Windows GUI: WPF или WinRT (2015+)

Я пытаюсь получить обзор различных технологий, для использования при создании GUI в Windows World.

В контексте, я создаю небольшую многопользовательскую многопользовательскую игру. (Только для обучения цели..)

Мой учитель говорит, что он считает, что WPF - это правильный путь, но кажется, что он сравнивает его только с Windows Forms.

Мое недоумение заключается в том, что здесь, в 2015 году, Windows Forms полностью мертв?

В этом другом вопросе о стекировании они говорят, что WinRT + XAML для здания Metro GUI (элемент Window 8)! И похоже, что WPF используется только для рабочего стола в Window 7/8 и близко связан с Silverlight..

Как работает Windows 8 Runtime (приложения для WinRT/Windows Store/Windows 10 Universal App) по сравнению с Silverlight и WPF?

  • На рабочем столе находятся старые приложения (красный. WFP).
  • Новый класс приложений, приложений Metro, может быть построен несколькими способами, включая VB.NET, С# или С++. Эти три варианта языка могут использовать XAML для создания пользовательского интерфейса. Альтернативой является использование JavaScript/HTML5/CSS для разработки как пользовательского интерфейса, так и код приложения.

Мой настоящий вопрос: Разве нет единого способа создания графического интерфейса в мире Window?

И если нет, какие технологии следует использовать в Window 7, Window 8 (Desktop и Metro), Window Phone (и Windows 10!) и даже в x-box.

Можно ли сравнивать эти технологии с другими технологиями?

Как вы думаете, правильно ли инвестировать время?

Ответ 1

Здесь много, но здесь идет:

  • Являются ли Windows Forms (Winforms) мертвыми? Нет. Он все еще активно поддерживается. Тем не менее, это ужасная технология для работы (по крайней мере, когда вы знаете волшебство WPF).
  • Если вы хотите создать красивое, хорошо спроектированное настольное приложение (классическое, а не Metro), WPF - это ответ в чистом .NET. Вы можете использовать WinRT API (например, их классы сокетов), но вы не можете запускать их в ОС до Windows 8. Пользовательский интерфейс WPF по-прежнему.
  • Приложения WinRT предназначены для Windows 8 Store (они также доступны в магазине Windows 10). Вы не можете использовать WPF здесь или WinRT на рабочем столе, поэтому там, где вы развертываете, определяет, что вы используете. Вы правильно понимаете доступные языки/технологии.
  • В Windows Phone 8 используется модифицированное время выполнения WinRT (это изменилось в Windows 10). Для Win8/WP8 вы можете использовать "Универсальные" приложения для обмена большей частью кода между стандартным приложением WinRT и окном телефона.
  • В Windows 10 используется универсальная платформа Windows (UWP), основанная на .NET Core. Код, разработанный для Windows 10, также можно использовать на Xbox One, Windows Phone 10 и HoloLens. WPF по-прежнему предназначен для "стандартных" настольных приложений.
  • XBox сложно. XNA уходит, и Microsoft, похоже, уходит от созданного сообщества контента для платформы. Тем не менее, Unity может развертываться в XBox, и я считаю, что для него работает стандартная разработка DirectX (С++). Универсальные приложения для Windows Platform также могут быть развернуты как один Xbox One, и это, похоже, стратегия Microsoft в будущем.

Насколько важно потратить время, это зависит от того, на что вы нацеливаетесь:). Изучение WPF/UWP + XAML принесет вам много преимуществ, если вы захотите остаться "текущим" в .NET GUI, поэтому я бы и хотел. WPF имеет большинство функций, поэтому, начав там, вам просто нужно найти обходные пути для того, чего не хватает в UWP (или любой другой технологии на основе XAML).

Если вы это сделаете, убедитесь, что вы изучили модель MVVM (модель-представление-модель). Он отлично работает с технологиями на основе XAML и позволяет вам делиться логикой между вашими приложениями WPF и UWP. Та же логика также может быть использована, если вы в конечном итоге разработаете приложения Xamarin для iOS/Android и т.д.

Обратите внимание, что для правильной разработки игры вам понадобится реальная игровая среда (например, Unity3D или даже XNA). Вы можете сделать это в WPF, и это лучший выбор, чем Winforms, но они не предназначены для игр.

Ответ 2

Это довольно старый поток, но, как я натолкнулся на это через google (вне интереса), может быть, кто-то еще мог бы сюда добраться. Это вопрос, который задают снова и снова новые программисты. Поэтому я хотел бы также ответить на некоторые вопросы, теперь, когда официально выпущена Windows 10.

Во-первых, больше не следует начинать с Windows Forms. Это самая зрелая технология на данный момент, но не будет никакой дальнейшей разработки Windows Forms, она будет только на этапе обслуживания. WPF активно развивается (последний раз я читал). Но теперь Windows Universal Apps (WinRT one) больше не нужно использовать в полноэкранном режиме и может использоваться в оконном режиме, как и другие настольные приложения (WPF и WinForms). Это значительно повышает их удобство использования на не-планшетных компьютерах. Я считаю, что это будет будущее для настольных приложений. Хотя программное обеспечение WPF - это традиционные настольные приложения (без разрешений, только UAC). В любом случае, независимо от того, вы изучите разработку WPF или WinRT (с использованием .Net), вы в конечном итоге изучите оба. Оба они - XAML + С# (или некоторые другие языки .Net). Я просто изучал WPF, когда WinRT вышел с Windows 8. Я чувствовал себя как дома, только незначительные изменения, к которым вы привыкли очень скоро. Однако не уверен в сценарии MVVM (привязка данных) в WinRT. Я все еще изучаю этот аспект WPF.

Окно 10 только что запустилось. В Windows 8/8.1 не было такого большого успеха, как Windows 7. Поэтому, если вы хотите создать приложение с более широкой аудиторией, вы должны пойти с WPF на данный момент. Но в ближайшем будущем WinRT станет для вас способом.

По вашему вопросу, "какие технологии следует использовать для Window 7, Window 8 (Desktop and Metro), Window Phone (и Windows 10!) и даже x-box.", единственным ответом является Windows Universal Apps. Именно по этой причине эта структура была разработана. Одна технология, которая будет использоваться для разработки приложений для всех устройств. Desktop, Tablet, Phones (включая Android с помощью Xamarin в комплекте с Visual Studio 2015), Xbox и IoT (Internet of Things).

Ответ 3

Я постараюсь ответить только на один из ваших вопросов:

Является ли Windows Forms полностью мертвым?

Нет, технология форм Windows не мертва. Я скажу тебе почему. WPF и XAML - это очень комплексная и сложная технология, и вы можете создавать очень приятный интерфейс. Но! Эта технология требует глубоких знаний. Для базовых макетов вам не нужно столько знаний, но для некоторых продвинутых макетов вам нужно иметь глубокие знания, и когда я начал с этой технологии и потратил много времени на поиск некоторых советов по Google. Поэтому, когда мне нужны некоторые простые формы для ввода пользователем, я всегда выбираю технологию Windows Forms, которая очень проста и понятна. Это также причина, по которой эта технология была очень успешной, когда приходила в мир. Когда вы начинаете с WPF, вам также нужно знать, что такое шаблон проектирования MVVM, и некоторые из них не смущены программистами.

Ответ 4

Это сейчас апрель 2016 года, и до сих пор нет четкого ответа на этот вопрос. Мы разрабатываем очень современное настольное приложение для мониторинга производительности в режиме реального времени, которое должно отображать несколько диаграмм и дисплеев, смешанных с текстом и другой графикой. Наше приложение - это С#, WPF с .NET Framework 4.5.2, но мы все еще пишем некоторые компоненты, используя WinForms и GDI +, чтобы обеспечить приемлемую производительность. Мы просто не достигли этого с помощью WPF. Мы даже разработали пару дисплеев в приложении с DirectX, но это добавляет много сложности, которую могут поддержать лишь некоторые из команд. Простота и чистая скорость, которую мы можем получить от размещения экрана WinForms в WPF, и скорость GDI + дает нам то, что нам нужно в дорогостоящей чистой структуре View/ViewModel, а также иметь дело с различными проблемами воздушного пространства. Наше приложение является довольно специалистом, и я бы очень хотел избавиться от WinForms, но, к сожалению, это просто невозможно в нашем случае. Для чистой производительности вам потребуется либо DirectX, либо WinForms.

Ответ 5

Мои два цента... если вы хотите настоящие универсальные приложения, то есть программы, которые могут запускаться на ЛЮБОЙ настольной операционной системе, включая Windows, WinForms по-прежнему подходит. Просто убедитесь, что вы остаетесь совместимыми с CLR, и вы можете развернуть их на Mac и Linux через Mono. Огромная выгода. XAML может быть классным, но он не будет перенесен в другие операционные системы.

Я лично считаю, что бизнес-модель UWP с песочницей (quicksanded?) пугается; он учитывает открытость, с которой Windows стояла с самого начала.

Ответ 6

WinRT давно работает на рабочем столе, я пишу WinRT, который работает на моем столе. И под Windows 10 эти приложения будут поддерживать неблокированные местоположения (оконные, как вы могли бы их традиционно знать).

Я бы не рекомендовал WinForms или WPF для всех, кто начал сегодня. Им следует сначала изучить WinRT/XAML. И узнайте Win32/.net по мере необходимости, в зависимости от их языка выбора.

"они говорят, что WinRT + XAML для здания Metro GUI (элемент Window 8)!" - Это такая чрезмерная абстракция, что это бесполезно. WinRT - это среда выполнения, такая как Win32, это не только для графического интерфейса, так что "они говорят" - это полная BS. XAML - это слой пользовательского интерфейса (как XAML в WPF), но сказать, что Metro GUI также ошибочен, больше нет такой вещи, как Metro GUI. XAML - это слой пользовательского интерфейса Windows. И "Windows 8 плитки вещь!" является выразителем концепции туннелей определенных народов. Это будет похоже на то, что Win32 - это меню начального меню. Вы можете видеть, насколько смешно это утверждение.

Ответ 7

Я работаю с технологиями Microsoft более 10 лет. Самое главное, что я узнал, это не просто слушать то, что предлагает вам Microsoft. Когда Microsoft говорит, что это - это будущее, у него есть 50% шанс пойти не так. Microsoft наверняка сделает все возможное, чтобы продвигать продукты, на которые они инвестировали, но это не значит, что вам следует следовать. Посмотрите, что произойдет с WCF и Silverlight.

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

Следуя шаблону MVVM, вы обнаружите, что делать что-то относительно простое в WinForm может очень сложно в WPF. Подобно цвету ячейки, основанной на каком-то определенном состоянии после обновления, или прокрутите строку в представлении и высвечивайте ее.

Конечно, вы можете сказать, что вам не нужно делать MVVM. Просто поместите код в код и заставьте его работать. Да, это сработает, но какой смысл использовать WPF? Почему бы просто не использовать Win Form?

Ответ 8

Это старый поток, но важный с текущим развитием .NET Framework, С# -функциями и повышенным фокусом на С# в качестве выбора игры.

WPF практически никогда не выбирается как игровая платформа С#. Проблемы воздушного пространства WPF испугали людей довольно быстро. Я не думаю, что многие (если таковые имеются) основные названия или основные потоковые игровые движки поддерживают WPF как целевую платформу либо из-за этого. WPF делает отличную платформу для игровых пусковых установок, хотя!

WinForms, хотя теперь и в режиме обслуживания, по-прежнему будет правильным выбором на долгие годы. Он проверен временем и стабилен. Из того, что я видел, даже в 2017 году WinForms по-прежнему является самой распространенной платформой, выбранной для разработки игр на базе С#.

Глядя на данные об аппаратном обеспечении Steam, вы можете видеть, что на момент написания этого ответа (июль 2017 года) 64-разрядная версия Windows 10 в настоящее время доминирует на игровой платформе для ПК с долей рынка 50%, за ней следуют 64-разрядные 64-разрядные версии Windows 7 и 32-разрядные версии Windows 8.1 и почти 7%. Все остальные рыночные доли платформ ОС настолько малы, что вряд ли стоит рассматривать что-то другое, кроме этих трех.

С учетом текущего состояния компьютерных игр WinForms является наиболее распространенным знаменателем для всех 3 лучших платформ для ПК. Глядя на будущее, UWP станет лучшей целевой платформой для разработки игр С#, так как Windows 7 и 8 потеряют значительную долю на рынке Windows 10, если только новая платформа не заменит ее. Так что просто по номерам.

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

  • Windows 10: UWP
  • Windows 8.1: WinRT или Windows Store
  • Windows 7: WinForms

Большинство других ответов сосредотачиваются вокруг разработки стандартных приложений Windows, но разработка игр - это очень разные сферы, и на ваш выбор влияют различные факторы, такие как целевая ОС и то, что ваш выбор графического API или игрового движка действительно лучше всего подходит.

Ответ 9

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

Я очень рекомендую использовать .NET Framework для слоя данных (включая веб-сервисы и RESTful layer (JSON)) и чистый HTML5/CSS3 и Javascript для вашего уровня веб-презентации.

В Windows 10 вы можете интегрировать любое веб-приложение в качестве приложения для метро только из коробки.

WinRT, XAML, WPF и подобные файлы ms работают только в Windows и имеют множество ограничений.

Итак, через год я все еще очень рад моему решению не использовать WinRT или XAML для моего нового проекта.