source

Windows GUI: WPF 또는 WinRT(2015+)

manycodes 2023. 4. 26. 23:29
반응형

Windows GUI: WPF 또는 WinRT(2015+)

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

상황에 맞게, 저는 작은 2D 플랫폼 멀티플레이어 게임을 만들고 있습니다.(그냥 학습 목적으로..)

선생님은 WPF가 올바른 방법이라고 생각한다고 말씀하시는데, WPF를 Windows Forms와 비교만 하는 것 같습니다.

제가 이해하는 바로는 2015년에는 Windows Forms가 완전히 사라졌습니까?

이 다른 스택오버 질문에서는 WinRT+XAML이 Metro GUI 빌딩(Windows 8 타일링!)을 위한 것이라고 하며, WPF는 Windows 7/8의 데스크톱에만 사용되는 것이며 Silverlight와 밀접한 관련이 있는 것으로 보입니다.

Windows 8 런타임(WinRT / Windows Store 앱 / Windows 10 Universal App)은 Silverlight 및 WPF와 비교하면 어떻습니까?

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

내 진짜 질문은:윈도우 월드에서 GUI를 구축하는 좋은 방법이 하나 없을까요?

그렇지 않다면 Windows 7, Windows 8(데스크탑 및 메트로), Windows Phone(및 Windows 10!) 및 x-box에서 어떤 기술을 사용해야 합니까?

다른 기술들과 이런 식으로 비교되는 것입니까?

시간을 투자하기에 올바른 것은 무엇이라고 생각합니까?

여기에는 많은 것들이 있지만, 다음과 같습니다.

  • Windows 양식(Winforms)이 비활성화되었습니까?아니요. 지금도 적극적으로 지원하고 있습니다.그렇긴 하지만, 그것은 일하기에 끔찍한 기술입니다(적어도 WPF의 마법을 알게 되면).
  • 멋지고 잘 디자인된 데스크톱(메트로가 아닌 클래식) 앱을 구축하고 싶다면 WPF가 답입니다.NET 조건.WinRT API(예: 소켓 클래스)는 사용할 수 있지만 Windows 8 이전의 OS에서는 실행할 수 없습니다.UI는 여전히 WPF입니다.
  • WinRT 앱은 Windows 8 스토어용입니다(Windows 10 스토어에서도 사용 가능).여기서는 WPF를 사용할 수 없고 데스크톱에서는 WinRT를 사용할 수 없으므로 배포 위치에 따라 사용할 항목이 결정됩니다.사용 가능한 언어/기술에 대한 이해가 정확합니다.
  • Windows Phone 8(현재는 더 이상 사용되지 않음)은 WinRT의 수정된 런타임을 사용합니다(Windows 10에서 변경됨).Win8/WP8의 경우 "범용" 앱을 사용하여 표준 WinRT 앱과 Windows 전화 앱 간에 대부분의 코드를 공유할 수 있습니다.
  • Windows 10은 WinRT 기반의 범용 Windows 플랫폼(UWP)을 사용합니다.윈도우 10용으로 개발된 코드는 엑스박스 원, 윈도우 10 모바일, 홀로렌즈에서도 사용할 수 있습니다.WPF는 여전히 "표준" 데스크톱 앱을 위한 것입니다.
  • Xbox는 까다롭습니다.XNA는 사라졌고, 마이크로소프트는 플랫폼을 위한 커뮤니티 제작 콘텐츠에서 멀어지고 있는 것 같습니다.즉, Unity3D는 Xbox에 배포할 수 있으며, 표준 DirectX(C++) 개발이 가능하다고 생각합니다.유니버설 윈도 플랫폼 앱도 엑스박스 원에 배포할 수 있으며, 이것이 마이크로소프트의 향후 전략인 것 같습니다.
  • 2021년 현재 WinUI 3는 UWP의 UI 프레임워크를 "데스크톱" 앱으로 가져오는 새로운 UI 프레임워크입니다.이 기술을 사용하면 Windows 10 및 11에 배포할 수 있습니다.기존 XAML UWP 앱은 일반적으로 Win으로 쉽게 이식할 수 있습니다.새 네임스페이스로 변경하여 UI 3.오늘 신청을 시작한다면 이 길로 가는 것을 진지하게 고려할 것입니다.Windows App SDK의 일부입니다.

무엇에 시간을 쓸 것인지에 대해서는 목표가 무엇인지에 따라 다릅니다. :).WPF/UWP + XAML을 학습하면 에서 "최신" 상태를 유지하려는 경우 많은 이점을 얻을 수 있습니다.NET GUI 개발, 그래서 저는 그렇게 하고 싶습니다.WPF에는 가장 많은 기능이 있으므로 여기서 시작하여 UWP(또는 다른 XAML 기반 기술)에서 누락된 부분에 대한 해결 방법을 찾기만 하면 됩니다.

그렇게 할 경우 MVVM(Model-View-View Model) 패턴을 학습해야 합니다.XAML 기반 기술과 매우 잘 작동하며 WPF 및 UWP 응용 프로그램 간에 많은 논리를 공유할 수 있습니다.최종적으로 iOS/Android 등을 위한 Xamarin 애플리케이션을 개발하는 경우에도 동일한 논리를 사용할 수 있습니다.

진정한 게임 개발을 위해서는 실제 게임 프레임워크(예: Unity3D 또는 XNA)가 필요합니다.WPF에서 할 수 있고, 그것은 Winforms보다 더 나은 선택이지만, 둘 다 게임을 위한 것은 아닙니다.

꽤 오래된 스레드이지만 (관심에서) 구글을 통해 우연히 마주친 것처럼, 다른 사람도 여기에 접근할 수 있을 것입니다.이것은 새로운 프로그래머들이 반복해서 묻는 질문입니다.이제 Windows 10이 정식으로 출시되었으므로 몇 가지 답변도 드리겠습니다.

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

10번 창이 방금 시작되었습니다.Windows 8/8.1은 Windows 7만큼 성공적이지 않았습니다.그래서 만약 당신이 더 많은 시청자를 가진 앱을 만들고 싶다면, 당신은 지금 WPF를 사용해야 합니다.그러나 가까운 미래에 WinRT가 가야 할 길이 될 것입니다.

"Windows 7, Windows 8(데스크탑 및 메트로), Windows Phone(및 Windows 10!) 및 x-box에서 어떤 기술을 사용해야 합니까?"라는 질문에 대한 대답은 Windows Universal Apps입니다.이것이 바로 이 프레임워크가 개발된 정확한 이유입니다.모든 기기를 위한 앱을 개발하는 데 사용되는 하나의 기술.데스크톱, 태블릿, 전화기(Visual Studio 2015에 번들로 포함된 Xamarin을 사용하는 Android 포함), Xbox 및 IoT(사물인터넷).

다음 질문 중 하나만 대답하도록 하겠습니다.

Windows Forms가 완전히 비활성화되었습니까?

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

지금이 2016년 4월인데 아직도 이에 대한 명확한 답이 없습니다.우리는 텍스트와 다양한 그래픽을 혼합하여 여러 차트와 디스플레이를 렌더링해야 하는 매우 현대적인 실시간 성능 모니터링 데스크톱 애플리케이션을 개발하고 있습니다.우리의 애플리케이션은 C#, WPF 와 입니다.NET Framework 4.5.2는 여전히 WinForms 및 GDI+를 사용하여 적절한 성능을 얻기 위해 일부 구성 요소를 작성하고 있습니다.우리는 WPF로 그것을 달성하지 못했을 뿐입니다.DirectX를 사용하여 애플리케이션에서 몇 가지 디스플레이를 개발하기도 했지만, 이는 소수의 팀만이 지원할 수 있는 복잡성을 가중시킵니다.WPF 내에서 WinForms 디스플레이를 호스팅함으로써 얻을 수 있는 단순성과 순수한 속도와 GDI+의 속도는 다양한 영공 문제를 처리해야 하는 순수한 View/View Model 구조의 비용을 들여 필요한 것을 제공합니다.당사의 애플리케이션은 매우 전문적이어서 WinForms를 완전히 제거하고 싶지만 안타깝게도 이는 아직 가능하지 않습니다.순수한 성능을 위해서는 DirectX 또는 WinForms를 사용해야 합니다.

내 2센트...Windows를 포함한 모든 데스크톱 운영 체제에서 실행할 수 있는 프로그램인 진정한 범용 앱을 원한다면 WinForms는 여전히 가야 할 길입니다.CLR 호환성만 유지하면 Mac과 Linux에서 Mono를 통해 배포할 수 있습니다.엄청난 혜택.XAML은 멋질 수 있지만 다른 운영 체제로 포팅되지는 않을 것입니다.

저는 개인적으로 샌드박스(퀵샌드?)를 찾습니다.UWP 비즈니스 모델은 무섭습니다. 이는 Windows가 처음부터 옹호해온 개방성에 대항합니다.

저는 마이크로소프트 기술과 10년 넘게 일해 왔습니다.제가 배운 가장 중요한 것은 마이크로소프트가 여러분에게 제공하는 것을 듣기만 하는 것이 아니라는 것입니다.마이크로소프트가 이것이 미래라고 말할 때, 그것은 잘못될 가능성이 50%입니다.마이크로소프트는 분명 그들이 투자한 제품을 홍보하기 위해 최선을 다할 것이지만, 그렇다고 해서 여러분이 따라야 한다는 것을 의미하지는 않습니다.WCF 및 Silverlight의 변경 내용을 확인합니다.

WPF는 배우기에 매우 좋은 플랫폼이지만, 엄청난 학습 곡선을 가지고 있습니다.프로그래밍 경력이 5년 미만인 개발자는 WPF를 제대로 할 수 없다고 생각합니다.

MVVM 패턴을 따름으로써 WPF에서 상대적으로 쉬운 작업을 수행하는 것이 매우 어려울 수 있다는 것을 알 수 있습니다.업데이트 후 조건에 따라 셀에 색상을 지정하거나 보기에서 행을 스크롤하여 강조 표시합니다.

물론 MVVM을 할 필요가 없다고 말할 수 있습니다.코드를 뒤에 두고 작동시키세요.네, 그렇게 하면 됩니다만, WPF를 사용하는 이유는 무엇입니까?Win Form을 사용하는 것이 어떻습니까?

이 스레드는 오래된 스레드이지만 의 현재 진행 상황에 대한 중요한 스레드입니다.NET 프레임워크, c# 기능, 게임 개발 선택으로 c#에 대한 집중도 증가.

WPF는 솔직히 c# 게임 플랫폼으로 선택된 적이 거의 없습니다.WPF 영공 문제는 사람들을 꽤 빠르게 겁먹게 했습니다.저는 이것 때문에 (있는 경우) 많은 주요 타이틀이나 메인스트림 게임 엔진이 WPF를 대상 플랫폼으로 지원하지 않는다고 생각합니다.WPF는 게임 런처를 위한 훌륭한 플랫폼을 만듭니다!

WinForms는 현재 유지보수 모드에 있지만 앞으로도 계속 유효한 선택이 될 것입니다.시간이 오래 걸리고 안정적입니다.제가 본 바로는 2017년에도 WinForms는 여전히 c# 기반 게임 개발에 가장 많이 선택된 플랫폼입니다.

Steam Hardware Survey 데이터를 보면 이 답변을 작성한 시점(2017년 7월)에 Windows 10 64비트가 시장 점유율 50%로 압도적인 PC 게임 플랫폼을 차지하고 있으며, Windows 7 64비트가 32%, Windows 8.1 64비트가 거의 7%로 그 뒤를 이었습니다.다른 모든 OS 플랫폼의 시장 점유율은 이 세 가지 이외에는 거의 고려할 가치가 없습니다.

이것이 PC 게임의 현재 상태이기 때문에 WinForms는 세 가지 상위 PC 플랫폼을 모두 대상으로 하는 가장 일반적인 요소입니다.미래를 내다보면, UWP는 Windows 7 및 8이 Windows 10을 대체할 새로운 플랫폼이 나오지 않는 한 상당한 시장 점유율을 잃기 때문에 C# 게임 개발을 위한 최고의 대상 플랫폼이 될 것입니다.이것은 단지 숫자에 의한 것입니다.

최대 시장 점유율을 지원하는 대신 OS 플랫폼별 최고 수준의 호환성을 기반으로 선택하는 경우 다음과 같은 선택이 가능합니다.

  • 윈도우 10: UWP
  • Windows 8.1: WinRT 또는 Windows 스토어
  • Windows 7: WinForms

대부분의 다른 답변은 표준 윈도우 애플리케이션 개발을 중심으로 하지만 게임 개발은 매우 다른 영역이며 대상 OS와 그래픽 API 또는 게임 엔진 선택이 실제로 가장 잘 지원하는 것과 같은 다양한 요소가 사용자의 선택에 영향을 미칠 것입니다.

WinRT는 오랫동안 데스크톱에 있었습니다. 저는 제 데스크톱에서 실행되는 WinRT를 쓰고 있습니다.또한 윈도우즈 10에서는 이러한 애플리케이션이 도킹되지 않은 위치(기존에 알고 있던 윈도우)를 지원합니다.

오늘부터 WinForms나 WPF를 사용하는 것은 권장하지 않습니다.그들은 WinRT / XAML을 주로 배워야 합니다.선택한 언어에 따라 필요에 따라 Win32 / .net을 학습합니다.

"그들은 WinRT+XAML이 Metro GUI 빌딩을 위한 것이라고 말합니다. (Windows 8 타일 같은 것!) -- 이것은 너무 추상적이어서 쓸모가 없습니다.WinRT는 Win32와 같이 GUI만을 위한 런타임이 아니므로 "그들이 말하는" 것은 완전한 BS입니다. XAML은 UI 계층(WPF의 XAML과 매우 유사)이지만 Metro GUI도 틀렸다고 말하면 더 이상 Metro GUI와 같은 것은 없습니다.XAML은 윈도우즈 UI 계층입니다.그리고 "Windows 8 타일 같은 것!"은 특정 사람들의 터널 비전을 표현합니다.제가 Win32를 시작 메뉴라고 말하는 것과 같습니다.당신은 그 진술이 얼마나 우스꽝스러운지 알 수 있습니다.

저는 1년 전에 이 질문에 부딪혔습니다.저는 XAML, WPF, WinRT 중 어느 것이 먼저 시작해야 할 개발 환경인지에 대한 결론에 도달했습니다.

을 사용하는 것이 좋습니다.데이터 계층(웹 서비스 및 RESTful 계층(JSON) 포함)을 위한 Net Framework와 웹 프레젠테이션 계층을 위한 순수 HTML5/CSS3 및 Javascript.

Windows 10에서는 모든 웹 응용 프로그램을 즉시 메트로 응용 프로그램으로 통합할 수 있습니다.

WinRT, XAML, WPF 및 유사한 ms 작업은 윈도우에서만 실행되며 많은 제한이 있습니다.

그래서 1년이 지난 지금도 저는 새로운 프로젝트에 WinRT나 XAML을 사용하지 않기로 결정한 것에 대해 매우 만족하고 있습니다.

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

반응형