Programming

Windows GUI : WPF 또는 WinRT (2015+)

procodes 2020. 8. 29. 21:41
반응형

Windows GUI : WPF 또는 WinRT (2015+)


Windows World에서 GUI를 구축 할 때 사용할 다양한 기술에 대한 개요를 얻으려고합니다.

맥락을 위해 저는 2D 플랫폼 멀티 플레이어 게임을 만들고 있습니다. (단지 학습 목적으로 ..)

선생님은 WPF가 올바른 방법이라고 생각하지만 Windows Forms와 비교하는 것 같습니다.

내 이해는 여기 2015 년에 Windows Forms가 완전히 죽었다는 것입니다.

이 다른 스택 오버 질문에서 그들은 WinRT + XAML이 Metro GUI 구축 (윈도우 8 타일 같은 것!)을위한 것이며 WPF는 윈도우 7/8에서 데스크톱에만 사용되는 것으로 보이며 Silverlight와 밀접한 관련이있는 것 같습니다.

Windows 8 런타임 (WinRT / Windows Store 앱 / Windows 10 Universal App)은 Silverlight 및 WPF와 어떻게 다릅니 까?

  • 데스크톱은 이전 앱이있는 곳입니다 (빨간색. WFP).
  • 새로운 종류의 응용 프로그램 인 Metro 응용 프로그램은 VB.NET, C # 또는 C ++를 포함하여 다양한 방법으로 구축 할 수 있습니다. 이 세 가지 언어 옵션은 UI를 빌드하는 데 XAML을 사용할 수 있습니다. 대안은 UI 및 애플리케이션 코드 개발을 위해 JavaScript / HTML5 / CSS를 사용하는 것입니다.

내 진짜 질문은 : Window World에서 GUI를 구축하는 좋은 방법이 없습니까?

그렇지 않다면 Window 7, Window 8 (Desktop and Metro), Window Phone, (그리고 Windows 10!), 심지어 x-box에서 어떤 기술을 사용해야하는지

이런 방식으로 비교되는 것은 다른 기술과 관련이 있습니까?

시간을 투자하는 것이 옳다고 생각하십니까?


여기에 많은 것이 있지만 여기에 있습니다.

  • Windows Forms (Winforms)가 죽었 습니까? 아니요. 여전히 적극적으로 지원됩니다. 즉, 작업하기에 끔찍한 기술입니다 (적어도 WPF의 마법을 알고 있다면 )
  • 멋지고 잘 디자인 된 데스크톱 (Metro가 아닌 클래식) 앱 을 빌드하려는 경우 WPF가 순수한 .NET 용어로 답할 수 있습니다. 당신은 할 수 있습니다 (예 : 자신의 소켓 클래스로) WinRT API를 사용하지만 윈도우 8 UI는 여전히 WPF 전에 당신의 OS에서 실행할 수 없습니다.
  • WinRT 앱은 Windows 8 Store 용입니다 (Windows 10 Store에서도 사용 가능). 여기에서는 WPF를 사용하거나 데스크톱에서 WinRT를 사용할 수 없으므로 배포 위치에 따라 사용할 항목이 결정됩니다. 사용 가능한 언어 / 기술에 대한 이해가 정확합니다.
  • Windows Phone 8은 WinRT의 수정 된 런타임을 사용합니다 (Windows 10에서 변경됨). Win8 / WP8의 경우 "범용"앱을 사용 하여 표준 WinRT 앱과 Windows Phone 앱간에 대부분 의 코드 를 공유 할 수 있습니다 .
  • Windows 10은 .NET Core를 기반으로하는 UWP (유니버설 Windows 플랫폼)를 사용합니다. Windows 10 용으로 개발 된 코드는 Xbox One, Windows Phone 10 및 HoloLens에서도 사용할 수 있습니다. WPF는 여전히 "표준"데스크톱 앱용입니다.
  • XBox는 까다 롭습니다. XNA는 사라지고 Microsoft는 플랫폼을위한 커뮤니티 생성 콘텐츠에서 벗어나는 것 같습니다. 즉, Unity는 XBox에 배포 할 수 있으며 표준 DirectX (C ++) 개발이 적합하다고 생각합니다. 유니버설 Windows 플랫폼 앱도 Xbox One으로 배포 할 수 있으며, 이는 향후 Microsoft의 전략으로 보입니다.

무엇에 시간을 투자할지에 관해서는 무엇을 목표로 삼고 있는지에 따라 다릅니다. :). WPF / UWP + XAML을 배우면 .NET GUI 개발에서 "최신 상태"를 유지하려는 경우 많은 이점을 얻을 수 있습니다. WPF에는 가장 많은 기능이 있으므로 여기에서 시작하여 UWP (또는 기타 XAML 기반 기술)에서 누락 된 항목에 대한 해결 방법을 찾아야합니다.

그렇게한다면 MVVM (Model-View-View Model) 패턴을 배워야합니다. 그것은 작동 정말 XAML 기반 기술과 잘, 당신이 당신의 WPF와 UWP 응용 프로그램간에 많은 로직을 공유 할 수 있습니다. 결국 iOS / Android 용 Xamarin 애플리케이션을 개발하는 경우에도 동일한 논리를 사용할 수 있습니다.

에 대한주의 진실 게임 개발, 당신이 원하는거야 실제 (Unity3D 또는 XNA 같은) 게임 프레임 워크를. WPF에서 할 수 있으며 Winforms보다 나은 선택이지만 실제로 게임을위한 것은 아닙니다.


꽤 오래된 스레드이지만 Google을 통해이 문제를 겪은 것처럼 (관심없이) 다른 사람도 여기에 도달 할 수 있습니다. 이것은 새로운 프로그래머가 계속해서 묻는 질문입니다. 따라서 Windows 10이 공식적으로 출시되었으므로 몇 가지 답변하고 싶습니다.

첫째, 더 이상 Windows Forms로 시작해서는 안됩니다. 현재로서는 가장 성숙한 기술이지만 Windows Forms는 더 이상 개발되지 않을 것이며 현재 유지 관리 단계에 있습니다. WPF는 활발하게 개발되고 있습니다 (마지막으로 읽었습니다). 그러나 이제 Windows Universal Apps (WinRT 앱)는 더 이상 전체 화면에서 사용할 필요가 없으며 다른 데스크톱 앱 (WPF 및 WinForms)과 마찬가지로 창 모드에서 사용할 수 있습니다. 이것은 태블릿이 아닌 컴퓨터에서 사용성을 크게 향상시킵니다. 나는 이것이 데스크톱 앱의 미래도 될 것이라고 믿습니다. 하지만 WPF 소프트웨어는 기존 데스크톱 앱입니다 (권한이없고 UAC 만 있음). 어느 쪽이든 WPF 또는 WinRT (.Net 사용) 개발을 배우 든 관계없이 둘 다 배우게됩니다. 둘 다 XAML + C # (또는 다른 .Net 언어)입니다. WinRT가 Windows 8과 함께 나왔을 때 WPF를 배우고있었습니다. 나는 집에서 옳다고 느꼈고 곧 익숙해지는 사소한 변화가 거의 없었습니다. WinRT의 MVVM 시나리오 (데이터 바인딩)에 대해서는 확실하지 않습니다. 나는 여전히 WPF의 측면을 직접 배우고 있습니다.

Window 10이 방금 시작되었습니다. Windows 8 / 8.1은 Windows 7만큼 큰 성공을 거두지 못했습니다. 따라서 더 많은 사용자를 대상으로하는 앱을 빌드하려면 당분간 WPF를 사용해야합니다. 그러나 가까운 장래에 WinRT가 갈 길이 될 것입니다.

" Window 7 , Window 8 (Desktop 및 Metro), Window Phone, (그리고 Windows 10!), 심지어 x-box 에서 사용해야하는 기술"이라는 질문에 대한 답은 Windows Universal Apps입니다. 이것이 바로이 프레임 워크가 개발 된 이유입니다. 모든 장치 용 앱을 개발하는 데 사용되는 하나의 기술입니다. 데스크톱, 태블릿, 휴대폰 (Visual Studio 2015와 함께 번들로 제공되는 Xamarin을 사용하는 Android 포함), Xbox 및 IoT (사물 인터넷).


귀하의 질문 중 하나에 만 답변 해 드리겠습니다.

Windows Forms가 완전히 죽었습니까?

아니요, Windows Forms 기술은 죽지 않았습니다. 이유를 말씀 드리겠습니다. WPF 및 XAML은 매우 포괄적이고 복잡한 기술이며 매우 멋진 UI를 구축 할 수 있습니다. 그러나! 이 기술에는 깊은 지식이 필요합니다. 기본 레이아웃의 경우 그다지 많은 지식이 필요하지 않지만 일부 고급 레이아웃의 경우 깊은 지식이 있어야하며이 기술을 시작했을 때 Google에서 몇 가지 팁을 검색하는 데 많은 시간을 보냈습니다. 따라서 사용자 입력을 위해 간단한 Forms가 필요할 때 항상 매우 간단하고 간단한 Windows Forms 기술을 선택합니다. 이것이이 기술이 세계에 올 때 매우 성공적이었던 이유이기도합니다. WPF로 시작할 때 MVVM 디자인 패턴이 무엇인지 알아야하며 경험이없는 일부 프로그래머는이를 혼동합니다.


It's now April 2016 and there is still no clear answer to this. We are developing a very modern real-time performance monitoring desktop application that has to render multiple charts and displays, intermixed with text and various other graphics. Our application is C#, WPF with .NET Framework 4.5.2 but we are still writing some components using WinForms and GDI+ to get performance that is acceptable. We just haven't achieved it with WPF. We've even developed a couple of displays in the application with DirectX but that adds a lot of complexity that only a few of the team can support. The simplicity and pure speed we can get from hosting a WinForms display within WPF and speed of GDI+ gives us what we need at the expensive of the pure View/ViewModel structure along with have to deal with various airspace issues. Our application is pretty specialist and I'd love to get rid of WinForms altogether but unfortunately this is just not yet possible in our case. For pure performance you will need to go either DirectX or WinForms.


My two cents... if you want true universal apps, meaning programs that can run on ANY desktop operating system including Windows, WinForms is still the way to go. Just make sure you stay CLR compatibile, and you can deploy on Mac and Linux via Mono. A huge benefit. XAML may be cool, but it's not going to get ported to other operating systems.

I personally find the sandboxed (quicksanded?) UWP business model terrifying; it counters the openness that Windows has stood for since the very beginning.


This is an old thread but an important one with the current progress of the .NET framework, c# features, and increased focus on c# as a game development choice.

WPF is almost never chosen as a c# game platform in all honesty. WPF airspace issues scared people off quite fast. I don't think many (if any) major titles or main stream game engines support WPF as a target platform either due to this. WPF makes for a great platform for game launchers though!

WinForms, while now under maintenance-mode, will still be a valid choice for years to come. It's time-tested and stable. From what I've seen, even in 2017, WinForms is still the most common platform chosen for c#-based game development.

Looking at Steam Hardware Survey data you can see that at the time of writing this answer (July 2017), Windows 10 64-bit is now the dominate PC gaming platform at 50% market share, followed by Windows 7 64-bit at 32% and Windows 8.1 64-bit at almost 7%. All other OS platforms market share is so small it's barely worth considering anything other than these three.

With that being the current state of PC gaming, WinForms is the most common denominator to target all 3 top PC platforms. Looking to the future, UWP will be the best target platform for c# game development as Windows 7 and 8 lose significant market share to Windows 10, unless a new platform comes along that replaces it. So that's just by the numbers.

If choosing based on best level of compatibility per OS platform instead of supporting maximum market share, the choices would be more like:

  • Windows 10: UWP
  • Windows 8.1: WinRT or Windows Store
  • Windows 7: WinForms

Most of the other answers center around standard windows application development but game development is a very different realm and different factors will influence your choices, such as target OS and what your choice of graphics API or game engine actually support best.


WinRT has been on the desktop for a long time, I'm writing WinRT, that runs on my deskop. And under Windows 10, those applications will support non-docked locations (windowed as you might traditionally know them).

I wouldn't recommend WinForms or WPF to anybody starting out today. They should learn WinRT / XAML primarily. And learn some Win32 / .net as they need it, depending on their language of choice..

"they say WinRT+XAML is for Metro GUI building(Window 8 tiles thing!)" -- This is such an over-abstraction, that it's useless. WinRT is a runtime, like Win32, it's not just for GUI, so what "they say" is complete BS. XAML is a UI layer (much like XAML in WPF) but to say it's Metro GUI is also wrong, there is no such thing as Metro GUI anymore. XAML is the Windows UI Layer. And "Windows 8 tiles thing!" is expressive of certain peoples tunnel vision. It would be like me saying Win32 is a start menu thing. You can see how ridiculous that statement is.


I have been working with Microsoft technologies over 10 years. The most important thing I had learnt is not to just listen to what Microsoft is offering you. When Microsoft is saying this is the future, it has 50% chance to go wrong. Microsoft for sure will do the best they can to promote the products that they had invested on, but that doesn't mean that you should follow. See what happen to WCF and Silverlight.

Although WPF is a very nice platform to learn, it has a huge learning curve. I don't think any developer with less then 5 years programming expereience can do WPF right.

By following the MVVM pattern, you will find that doing something relatively easy in WinForm can become very challenging in WPF. Like color a cell based on some condition after a update, or scroll a row in the view and heighlight it.

Of course you can say that you don't have to do MVVM. Just put your code in code behind and make it work. Yes that will work, but what's the point of using WPF? Why not just use Win Form?


I run into this question some one year ago. I camed to the conclusion that wether XAML, WPF nor WinRT are the correct developing environment to start with.

I highly recomand using .Net Framework for data layer (including Web Services and RESTful layer (JSON) ) and pure HTML5/CSS3 and Javascript for your web presentation layer.

Within Windows 10 you can integrate any web application as a metro application just out of the box.

WinRT, XAML, WPF and similar ms stuff run only on windows and has alot of limitations.

So after one year I'm still very happy about my decision to not use WinRT or XAML for my new project.

참고URL : https://stackoverflow.com/questions/28586642/windows-gui-wpf-or-winrt-2015

반응형