Я пытаюсь получить обзор различных технологий, которые можно использовать при создании графического интерфейса пользователя в мире Windows.
Для контекста я создаю небольшую многопользовательскую 2D платформенную игру. (Просто для обучения ..)
Мой учитель говорит, что он думает, что WPF - правильный путь, но, похоже, он сравнивает его только с Windows Forms.
Я понимаю, что здесь, в 2015 году, Windows Forms полностью мертва?
В этих других вопросах наложения они говорят, что WinRT + XAML предназначен для построения графического интерфейса Metro (штука с плитками Window 8!), И кажется, что WPF используется только для рабочего стола в Window 7/8 и близок к Silverlight ..
- Рабочий стол - это место, где живут старые приложения (красный. WFP).
- Новый класс приложений, приложения Metro, можно создавать разными способами, в том числе с помощью VB.NET, C # или C ++. Эти три языковых параметра могут использовать XAML для создания пользовательского интерфейса. Альтернативой является использование JavaScript / HTML5 / CSS для разработки как пользовательского интерфейса, так и кода приложения.
Мой настоящий вопрос: нет ли ОДНОГО хорошего способа создания графического интерфейса в Window World?
А если нет, то какие технологии следует использовать в Window 7, Window 8 (Desktop и Metro), Window Phone (и Windows 10!) И даже x-box ..
Можно ли так сравнивать разные технологии?
Как вы думаете, на что нужно тратить время?
источник
Ответы:
Здесь много всего, но вот что:
Что касается того, на что потратить время, это зависит от того, на что вы ориентируетесь :). Изучение WPF / UWP + XAML принесет вам много преимуществ, если вы хотите оставаться «актуальным» в разработке графического пользовательского интерфейса для .NET, поэтому я бы пошел именно на это. WPF имеет наибольшее количество функций, поэтому, начав с него, вам просто нужно найти обходные пути для того, чего не хватает в UWP (или любой другой технологии на основе XAML).
Если вы это сделаете, обязательно изучите шаблон MVVM (модель-представление-представление). Он действительно хорошо работает с технологиями на основе XAML и позволяет разделять большую часть логики между приложениями WPF и UWP. Эту же логику можно использовать, если вы в конечном итоге будете разрабатывать приложения Xamarin для iOS / Android и т. Д.
Обратите внимание, что для настоящей разработки игр вам понадобится настоящая игровая среда (например, Unity3D или даже XNA). Вы можете сделать это в WPF, и это лучший выбор, чем Winforms, но ни один из них не предназначен для игр.
источник
RenderTransform
,Viewport3D
и тому подобное. Они имеют аппаратное ускорение.Это довольно старый тред, но, как я столкнулся с этим через Google (из интереса), может быть, кто-то еще сможет добраться сюда. Это вопрос, который снова и снова задают новые программисты. Так что теперь, когда Windows 10 официально выпущена, я также хотел бы ответить на несколько вопросов.
Во-первых, больше не следует начинать с Windows Forms. На данный момент это наиболее зрелая технология, но дальнейшего развития Windows Forms не будет, сейчас она только на стадии обслуживания. WPF активно развивается (последнее, что я читал). Но теперь универсальные приложения Windows (WinRT) больше не нужно использовать в полноэкранном режиме, и их можно использовать в оконном режиме, как и другие настольные приложения (WPF и WinForms). Это значительно увеличивает удобство использования на компьютерах, отличных от планшетных. Я верю, что это будет будущее и для настольных приложений. Хотя программное обеспечение WPF - это традиционные настольные приложения (без разрешений, только UAC). В любом случае, независимо от того, изучаете ли вы разработку WPF или WinRT (с использованием .Net), вы в конечном итоге изучите оба. Оба они XAML + C # (или другой язык .Net). Я только изучал WPF, когда WinRT вышел с Windows 8. Я чувствовал себя как дома, только несколько мелких изменений, к которым привыкаешь очень скоро. Однако не уверен в сценарии MVVM (привязка данных) в WinRT. Я все еще сам изучаю этот аспект WPF.
Окно 10 только что запущено. Windows 8 / 8.1 не имела такого успеха, как Windows 7. Так что, если вы хотите создать приложение, которое будет иметь более широкую аудиторию, вам сейчас следует перейти на WPF. Но в ближайшем будущем WinRT станет лучшим вариантом.
На ваш вопрос, «какие технологии следует использовать в
Window 7, Window 8 (Desktop и Metro), Window Phone (и Windows 10!) И даже x-box.», Единственный ответ - универсальные приложения Windows. Именно по этой причине была разработана данная структура. Одна технология, которая будет использоваться для разработки приложений для всех устройств. Настольный компьютер, планшет, телефоны (включая Android с использованием Xamarin в комплекте с Visual Studio 2015), Xbox и IoT (Интернет вещей).источник
Я постараюсь ответить только на один ваш вопрос:
Windows Forms полностью мертва?
Нет, технология форм Windows не умерла. Я скажу тебе почему. WPF и XAML - это очень всеобъемлющая и сложная технология, и вы можете создать очень красивый пользовательский интерфейс. Но! Эта технология требует глубоких знаний. Для базовых макетов вам не нужно столько знаний, но для некоторых расширенных макетов вы должны иметь глубокие знания, и когда я начал с этой технологии, я потратил много времени на поиск некоторых советов в Google. Поэтому, когда мне нужны простые формы для ввода данных пользователем, я всегда выбираю технологию Windows Forms, которая очень проста и понятна. Это также причина того, почему эта технология была очень успешной, когда пришла в мир. Когда вы начинаете работать с WPF, вам также необходимо знать, что такое шаблон проектирования MVVM, и некоторых неопытных программистов это смущает.
источник
Сейчас апрель 2016 года, и пока нет четкого ответа на этот вопрос. Мы разрабатываем очень современное настольное приложение для мониторинга производительности в реальном времени, которое должно отображать несколько диаграмм и дисплеев, смешанных с текстом и другой другой графикой. Наше приложение - C #, WPF с .NET Framework 4.5.2, но мы все еще пишем некоторые компоненты с использованием WinForms и GDI +, чтобы получить приемлемую производительность. Мы просто не достигли этого с WPF. Мы даже разработали пару дисплеев в приложении с DirectX, но это добавляет много сложностей, которые могут поддержать лишь немногие из команды. Простота и чистая скорость, которые мы можем получить от размещения дисплея WinForms в WPF, и скорость GDI + дают нам то, что нам нужно, по цене чистой структуры View / ViewModel, а также приходится иметь дело с различными проблемами воздушного пространства. Наше приложение довольно специализированное, и я бы хотел полностью избавиться от WinForms, но, к сожалению, в нашем случае это пока невозможно. Для чистой производительности вам потребуется либо DirectX, либо WinForms.
источник
Мои два цента ... если вам нужны настоящие универсальные приложения, то есть программы, которые могут работать в ЛЮБОЙ настольной операционной системе, включая Windows, WinForms - это то, что вам нужно. Просто убедитесь, что вы остаетесь совместимым с CLR, и вы можете развернуть его на Mac и Linux через Mono. Огромная выгода. XAML может быть крутым, но он не будет перенесен на другие операционные системы.
Я лично считаю изолированную (рваную?) Бизнес-модель UWP ужасающей; он противостоит открытости, которую Windows отстаивала с самого начала.
источник
Я работаю с технологиями Microsoft более 10 лет. Самое важное, что я усвоил, - это не просто слушать то, что предлагает вам Microsoft. Когда Microsoft говорит, что это будущее, у нее есть 50% шанс ошибиться. Microsoft наверняка сделает все возможное, чтобы продвигать продукты, в которые они вложили средства, но это не значит, что вы должны следовать. Посмотрите, что случилось с WCF и Silverlight.
Хотя WPF - очень удобная платформа для изучения, она требует огромного обучения. Я не думаю, что любой разработчик с опытом программирования менее 5 лет сможет правильно использовать WPF.
Следуя шаблону MVVM, вы обнаружите, что выполнение чего-то относительно простого в WinForm может стать очень сложным в WPF. Например, раскрасьте ячейку на основе некоторого условия после обновления или прокрутите строку в представлении и выделите ее.
Конечно, вы можете сказать, что вам не нужно делать MVVM. Просто вставьте свой код в код и заставьте его работать. Да, это сработает, но какой смысл использовать WPF? Почему бы просто не использовать форму выигрыша?
источник
Это старый поток, но он важен с учетом текущего прогресса .NET framework, функций C # и повышенного внимания к C # как варианту разработки игр.
Честно говоря, WPF почти никогда не выбирают в качестве игровой платформы на C #. Проблемы с воздушным пространством WPF довольно быстро напугали людей. Я не думаю, что многие (если таковые имеются) основные игры или игровые движки основного потока поддерживают WPF в качестве целевой платформы либо из-за этого. Однако WPF - отличная платформа для запуска игр!
WinForms, находящийся сейчас в режиме обслуживания, по-прежнему будет правильным выбором на долгие годы. Проверено временем и стабильно. Судя по тому, что я видел, даже в 2017 году WinForms по-прежнему остается наиболее распространенной платформой, выбранной для разработки игр на основе C #.
Просмотр данных обзора оборудования Steam вы можете увидеть, что на момент написания этого ответа (июль 2017 г.) 64-разрядная Windows 10 в настоящее время является доминирующей игровой платформой для ПК с долей рынка 50%, за которой следует 64-разрядная версия Windows 7 с 32%. и 64-битная Windows 8.1 почти на 7%. Доля рынка всех других платформ ОС настолько мала, что едва ли стоит рассматривать что-либо, кроме этих трех.
Учитывая текущее состояние компьютерных игр, WinForms является наиболее распространенным знаменателем для всех трех ведущих платформ ПК. Заглядывая в будущее, UWP станет лучшей целевой платформой для разработки игр на C #, поскольку Windows 7 и 8 теряют значительную долю рынка в пользу Windows 10, если не появится новая платформа, которая ее заменит. Так что это только цифры.
Если выбрать на основе наилучшего уровня совместимости для каждой платформы ОС вместо поддержки максимальной доли рынка, варианты будут больше похожи на:
Большинство других ответов сосредоточены на разработке стандартных приложений Windows, но разработка игр - это совершенно другая область, и на ваш выбор будут влиять различные факторы, такие как целевая ОС и то, что ваш выбор графического API или игрового движка на самом деле поддерживает лучше всего.
источник
WinRT уже давно используется на рабочем столе, я пишу WinRT, который работает на моем компьютере. А в Windows 10 эти приложения будут поддерживать не пристыкованные местоположения (оконные, как вы их обычно знаете).
Я бы не рекомендовал WinForms или WPF тем, кто начинает сегодня. В первую очередь им следует изучить WinRT / XAML. И выучите Win32 / .net по мере необходимости, в зависимости от их языка.
«они говорят, что WinRT + XAML предназначен для создания графического интерфейса Metro (штука с тайлами Window 8!)» - это настолько чрезмерная абстракция, что она бесполезна. WinRT - это среда выполнения, как и Win32, она не только для графического интерфейса, так что то, что «они говорят», является полной ерундой. XAML - это уровень пользовательского интерфейса (очень похожий на XAML в WPF), но говорить, что это Metro GUI, тоже неверно, такой вещи, как Metro GUI, больше нет. XAML - это уровень пользовательского интерфейса Windows. И "Фишка плитки Windows 8!" является выражением туннельного видения некоторых народов. Это как если бы я сказал, что Win32 - это пункт меню «Пуск». Вы видите, насколько нелепо это утверждение.
источник
Я столкнулся с этим вопросом около года назад. Я пришел к выводу, что XAML, WPF или WinRT являются правильной средой разработки для начала.
Я настоятельно рекомендую использовать .Net Framework для уровня данных (включая веб-службы и уровень RESTful (JSON)) и чистый HTML5 / CSS3 и Javascript для уровня веб-презентации.
В Windows 10 вы можете интегрировать любое веб-приложение как приложение для метро прямо из коробки.
WinRT, XAML, WPF и подобные файлы ms работают только в Windows и имеют множество ограничений.
Итак, по прошествии года я все еще очень рад своему решению не использовать WinRT или XAML для моего нового проекта.
источник