2021년도 WPF: 살아있는 사람, 죽은 사람, 아니면 생명으로 유지되는 사람?

최근에 나는 새로운'녹지'Windows 응용 프로그램의 프레임워크로 WPF를 선택할지 토론하는 단체 토론에 참가했다.응용 프로그램 자체에는 복잡한 UI가 필요하지 않지만 WebView2 및/또는 일부 타사 컨트롤을 사용하여 문서를 렌더링, 보기 및 인쇄해야 할 수도 있습니다.
내가 이 글을 쓴 것은 풍부한 경험을 가진 사람으로서NET/WPF 배경, WPF에 대한 좋은 추억이 많습니다(아픈 추억도 있습니다).나는 이 프레임워크의 가치를 낮추려는 것이 아니라 마이크로소프트 데스크톱 개발 노선도에서 그 프레임워크의 지위를 평가하고자 한다.
내가 아는 바에 의하면, 지금은 윈도 창조차도 WPF보다 마이크로소프트의 사랑을 더 받는다고 한다.나는 내가 틀렸으면 좋겠지만, WPF가 현재 방치되거나, 극히 낮은 유지보수 지원 모델에 놓여 있는 일부 징후를 관찰했다.
  • The WPF roadmap itself(또는 that of WinForms에 비해 기본적으로 부족하다).본고에 따르면 유일하게 진행되고 있는 작업은'.NET Framework 서비스 복구 프로그램을.NET Core 3.1과.NET 5에 통합하는 것'이다.

  • WPF 환매 협의 중의 "Is this repo dead" 문제.이 게시물에는 특히 this one의 재미있는 댓글이 많이 있습니다.

    The real reason was already communicated on community calls over on YouTube. The team was merged with WinUI and created from zero, apparently everyone from the original team is gone, and the new team is very resource constrained so they don't manage to deliver more than a couple of fixes. Now we can complain that instead of doing WPF, WinUI, MAUI, Blazor on Electron (what a bad idea!) they should focus on just having one UI-vnext framework, but after UWP failure, they don't seem to be able to decide what to do, each group talks differently about the "vision".


    이 분야 일각에서는 WPF를 만들어 MS와 독립적으로 유지보수하자는 제안까지 나왔다.

  • Microsoft의 Igor Velikorosov는 Windows 창의 새로운 기능에 대해 설명합니다.
  • .순5:https://devblogs.microsoft.com/dotnet/whats-new-in-windows-forms-runtime-in-net-5-0.
  • .NET 6 미리보기 5:
    https://devblogs.microsoft.com/dotnet/whats-new-in-windows-forms-in-net-6-0-preview-5
  • WinForms가 적극적으로 유지보수되는 것을 보니 기쁘지만, WPF는?슬픈 독자의 comments을 살펴보자.당시 MS의 PM Premalini David replied은 WPF 팀의 내부 리소스를 늘리겠다고 약속했다.지금 the WPF repo commit history을 보세요. 아직 일어나지 않은 것 같습니다.

  • 문서의 "What's new in WPF for .NET 5"마이크로소프트.일반 도메인 이름 형식.사실 이 페이지는 존재하지 않는다.다섯 번째 네트워크, 그것은 네트워크로 돌아왔다.NET 프레임 4.X컨텐트(.NET 5)를 선택한 경우adding ARM CPU support에 대한 정보를 제외하고는 WPF의 새로운 기능에 대한 세부 사항을 찾을 수 없습니다. 왜냐하면 그것이 이식되었기 때문입니다.2019년의 순핵심 3.
    한편,'최신 소식'제does exist절.NET 5 Windows 창
  • 저는 WPF가 WebView2를 탑재하는 궁극적인 용기가 되어 기업 데스크톱 WPF 응용의 현대화를 도울 것이라고 예상합니다. 이런 응용들은 보통 IE11을 바탕으로 하는 전통적인 WebBrowser 컨트롤러를 사용합니다.지금까지 상황은 전혀 이렇지 않다.
  • Rick Strahl이 WebView2를 WPF 기반의Markdown Monster 편집기에 통합시키는 데 큰 노력을 기울인 블로그: https://weblog.west-wind.com/posts/2021/Apr/15/WebView2-Forwarding-Alt-Keys-to-a-Host-WPF-Window.
  • 나 자신과 WPF+WebView2 키보드와 초점 문제의 투쟁: https://github.com/MicrosoftEdge/WebView2Feedback/issues/468#issuecomment-855810839.나는 changes on the WPF side을 하지 않으면 이 문제를 정확하게 해결할 수 없다고 생각한다.
  • 전반적으로 마이크로소프트의 다른 팀들은 WPF를 플랫폼(WebView2, Blazor WebView, XAML Islands, Visual Studio 디자이너 포함)으로 계속 지원하려고 노력하고 있지만 the WPF GitHub repo itself은 요즘 매우 조용하다.
    오늘날 Microsoft 자체 레이더에 Windows만 있는 UI 개발은 무엇입니까?그렇다면 정부의 미래 경로는 WinUI 3인 것 같다.Build 2021과 최근 Windows 11 데모 행사에서 주목받고 있습니다.현대의 Windows Terminal 응용 프로그램 - 이것은 시작된 인기 응용 프로그램으로 부끄럽지 않은 인정을 받았다. is built with WinUI, 대부분은 C++이다.
    마이크로소프트도 WebView2 정도의 응용 프로그램에서 자리를 잡고 있는 것 같다. 이런 응용 프로그램에서 HTML 사용자 인터페이스는 네트워크와 데스크톱 사이에서 공유된다.곧 발표될 Teams 2.0은 이러한 방법의 좋은 예이다. WebView2의 간소화 WinUI 호스트이다.나는 더 많은 세부 사항을 끊임없이 이야기했다. (TLTR: 클라이언트에서는.NET를 전혀 사용하지 않는다.)
    분명히 마이크로소프트는 React Native for Windows(매우 활발한 환매 협의)과 Fluent UI framework(Office 365 사용)에도 좋은 투자를 하고 있다.
    왜냐면NET 사용자들은 C#을 사용하여 웹과 데스크톱 사이에서 HTML UI(JavaScript/React/etc가 적거나 없음)를 공유하고 싶어 합니다. Microsoft will be releasing WebView2-based BlazorWebView 은 WinForms, WPF와 함께 있습니다.모이 섬 순액:

    Using Blazor and a hybrid approach you can start decoupling your UI investments from WPF & Windows Forms. This is a great way to modernize existing desktop apps in a way that can be brought forward onto .NET MAUI or used on the web. You can use Blazor to modernize your existing Windows Forms and WPF apps while leveraging your existing .NET investments.


    이것은 듣기에 재난 같다.인터넷판 전자 스테로이드 주세요.이 단계에서, 나는 새로운 데스크톱 프로젝트를 가지고 드라이브를 하고 싶지 않다. 이미 일할 수 있는 Blazor SPA 웹 응용 프로그램이 데스크톱 응용 프로그램으로 포장될 수 있는 것이 없으면.나는 간단한 WinForms 기반 응용 프로그램으로 BlazorWebView을 시도했지만 현재(Net6 Preview 7까지) it doesn't feel close의 제작 품질은 아직 이르지 못했다.그러나 BlazorWebView은 인상적인 기술로 성숙하고 버림받지 않기를 바랍니다.
    그 밖에 마이크로소프트가 자신의 주류 프로젝트를 위해 사용하는 UI 기술이 반드시 그들이 다른 개발자에게 추천하는 것은 아니다.현재로서는 매우 곤혹스러운 분야일 수 있습니다. 마이크로소프트 엔지니어 제리 닉슨의 트위터 게시물을 보십시오.

    제리 닉슨🖖
    # 제리닉슨

    질문: 만약 당신이 윈도만 지원하는 새로운 응용 프로그램을 만들고 있다면 마이크로소프트는 어떤 기술을 사용하길 원합니까?
    2021년 6월 21일 오후 16:33
    닉 룬도프의 "The Future of Windows (and Other Platforms) Development"을 읽는 것도 강력히 추천합니다.이는 다양한 Windows UI 프레임워크의 분산된 공간에서의 당혹감을 해소하는 데 유용합니다.
    요컨대, 현재 Windows 데스크톱 개발에는 여러 플랫폼 옵션을 포함한 전체 프레임워크와 메타 프레임워크가 제공되고 있습니다. (간략한 개요를 얻으려면 crossplatform.dev을 방문하십시오.)A.NET 개발자는 다음을 선택할 수 있습니다.

  • WinForms
  • WPF

  • UWP (단 this announcement 꼭 읽으세요)
  • WinUI
  • Xamarin/MAUI
  • BlazorWebView

  • Windows Community Toolkit(MVVM Toolkit 포함)
  • Uno Platform
  • Avalonia
  • Comet
  • ReactiveUI
  • Chromely
  • EdgeSharp
  • Electron.NET
  • ... 더 많아요.우리의 특정한 응용 프로그램 사례로 돌아가서, 나는 2021년에 이상하게 들릴 수도 있지만, 개인적으로 윈도 창을 지지하는 투표를 했다.
    WinForms를 지원하는 몇 가지 관점:
  • 은 매우 오래되고 전투의 시련을 겪었지만 여전히 being actively maintained(WPF와 달리 현재는)이다.
  • 은 간단하고 편견이 없고 모두가 알고 있는 API가 있다.
  • 은 엔진 덮개 아래에 네이티브 Win32 UI 컨트롤을 사용하기 때문에...
  • ... 다른 로컬 및 호스팅 컨트롤과 쉽게 통합하거나 WebView2 , BlazorWebView 및/또는 XAML Islands을 통해 현대화할 수 있습니다.초점/키보드 상호작용 문제도 적거나 적어도 WPF보다 해결하기 쉬울 것이라고 생각합니다.
  • 은 간단한 것, 예를 들어 Model-View-Presenter Pattern, 또는 고급 것, 예를 들어 Reactive UI으로 추상화할 수 있다.

  • 관리자 권한, Windows 어플리케이션 스토어, 패키지, 측면 로드, Windows 개발자 설정 조정 없이 단일 EXE(약 75MB)로 배포 가능(업데이트: trimming no longer work in .NET 6 for WinForms/WPF):
    dotnet new winforms -n app
    
    dotnet publish app -r win-x64 -c Release --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=True -p:IncludeNativeLibrariesForSelfExtract=true -p:TrimMode=Link
    
    dir /s app.exe
    
  • 나 이거 계속 쓰고 있었어.WinForms의 NET Core가 #DevComrade으로 환생한 소규모 프로젝트입니다.이것은 시스템 범위 내의 붙여넣기를 지원하며, 기본적으로 포맷을 필요로 하지 않으며, 기타 생산성을 높이는 기능도 지원한다.지금까지 WinForms를 사용하여 구축한 것은 매우 긍정적인 경험이었습니다.

    몇 가지 최신 업데이트:


  • Microsoft's announcement 정도.순수 5/6은 UWP를 지원하지 않습니다.NET 항목입니다.

  • 이 같은 UWP 공지에

  • 의 WinForms 및 WPF 항목에 사용됩니다.깨끗하다
  • interesting thread on HN은 사용자 인터페이스 개발의 현재 상태를 토론한다.NET 등.

  • WPF 재구매 중의 "The roadmap is outdated" 문제.
  • 에서 WPF는 여전히 Microsoft's Powertoy project과 (Electron에서 이전)에서 사용되고 VS2022 자체는 말할 것도 없고 (NET Framework 4.x 프로젝트임에도 불구하고).
  • WPF 팀이 최종적으로 필요한 자원 향상을 얻기를 희망한다(11월 21일까지 이런 상황이 발생하고 있음을 나타낼 기미가 보이지 않음):

  • 리베라
    네라파엘

    나는 WPF 사람과 직접 연락이 있다.그들은 지금 속도를 내고 있다(!)속도가 매우 느린 것은 주로 자원이 부족하기 때문이다.그것은 죽음이나 생명의 지지가 없다.WPF는 Windows에서 가장 많이 사용되는 응용 프로그램 프레임워크 중 하나입니다.
    2021년 10월 30일 오후 18:06
    읽어주셔서 감사합니다!마음대로 아래나 아래에 메시지를 남겨 주세요.

    좋은 웹페이지 즐겨찾기