UWP가 지원하는 장치들과 기능들
[clearfix]
1. 개요
Windows 10의 출시와 함께 Microsoft에서 개발한 .NET Core 기반의 애플리케이션 개발 플랫폼으로, Windows Runtime을 계승했다. 언어는 C++, VB.NET, C#, F#, JavaScript 등 .NET Framework에서 지원하는 언어면 다 지원된다.[1] UI는 XAML이라는 언어로 구현되며[2][3], 앱 설치 확장자는 *.appx이다. Visual Studio에서는 C# 기반의 UWP 앱 개발을 우선적으로 밀어주고 있다.2. 지원 장치
- Desktop(Windows 10 & 11 32bit[4], 64bit)
Mobile(Windows 10 Mobile)[5]- Xbox One, Xbox Series X|S
- Microsoft Surface 허브
- 마이크로소프트 홀로렌즈
- IoT Device(라즈베리 파이)
3. 기능 목록
3.1. 홀로렌즈
- AR
3.2. IoT Device
- GPIO
4. 평가
활용성이 좋지 않다. 전통적인 Win32 앱에 비해 UWP 앱은 사용자 레벨에서 이용할 수 있는 기능에 제한 및 제약이 존재하고 디자인이 획일화되는 문제가 있다. 무엇보다 마이크로소프트가 직접 만든 앱조차도 절대 다수가 Win32로 만들어져 있으며, UWP를 활용한 것은 계산기, 사진, 메일 앱 등 기본적인 애플리케이션에 머무르고 있다. 비주얼 스튜디오나 마이크로소프트 오피스 같은 무거운 프로그램들은 여전히 Win32를 사용 중이고, 엣지는 UWP 앱이었다가 크로뮴 기반의 Win32 앱으로 다시 만들었다. 다시 말해 MS 본인들조차 개발자들에게 UWP의 미래를 확신시켜주지 못하고 있다. UI도 모바일과 태블릿을 위해 디자인되었으나 둘 다 망해서 데스크탑을 쓰는 대부분의 유저에겐 불편한 요소다.초창기 마이크로소프트 스토어는 UWP 앱만 등록할 수 있었고, 이에 따라 앱의 절대적인 숫자가 매우 부족해지는 현상을 낳았다. 이후 APPX 패키지[6]로 Win32를 패키징한 MSIX 앱을 허용하면서 이러한 제약이 다소 완화되었고, UWP의 입지는 더더욱 낮아지게 되었다. #
윈폼(Windows Forms)이나 WPF와 큰 차이가 있어서 기존 개발자들이 옮겨가기에 어려움이 있다. 윈폼과 WPF 간에는 서로 참고하기가 좋은데 반해 UWP로 만들 때는 이 둘을 참고하기가 그리 좋지 않다. 가장 기본적인 차이점으로 디버깅 시 출력화면에 나오는 출력은 콘솔로 출력하는게 아닌 디버그 출력으로 따로 지정해야 볼 수 있다던가, 윈폼과 WPF에서는 기본으로 지원하는 데이터그리드가 UWP에서는 NuGet 패키지로 따로 설치를 해줘야 한다던가, 그마저도 WPF에선 흔히 쓰이는 데이터 테이블을 만들어 데이터그리드에 넣는 방식이 UWP(에서 쓰기 위한 NuGet 패키지)에서는 같은 방식으로는 지원이 안된다던가[7] 등등 아주 기본적인 부분에서부터 차이가 존재하기 때문이다.
더욱이 웬만하면 새로운 플랫폼은 전에 있던 플랫폼의 장점을 가져가려고 하는 편인데 윈폼이나 WPF의 이점[8]을 UWP에서 살려주는게 아닌, UWP에서 지원하던 플루언트 디자인을 윈폼과 WPF에서 쓸 수 있게 패치하는 등 사실상 UWP를 버리는 것이나 다름없는 움직임을 보여주고 있기 때문에 더더욱 넘어갈 이유가 없어지는 중이다.
하드웨어 타겟팅에도 문제가 있는 게, 전통적인 x86 계열의 윈도우 플랫폼(데스크톱, 노트북, 태블릿 등)에서는 굳이 UWP가 아니더라도 쓸만한 프로그램이 많다. 다른 폼팩터를 보자면 윈도우폰은 시장에서 철수, 홀로렌즈는 언제 보급될지도 모르고 Xbox는 윈도우 10과 Xbox에서 둘 다 돌아가는 UWP 앱을 개발할 일이 없으며(게임은 Win32 기반이므로), 라즈베리 파이는 리눅스 중심으로 돌아가기 때문에 UWP에 대한 수요가 전무하다. 이런 상황이니 결국 MS 플랫폼에서 공통적으로 사용할 수 있다는 점도 그다지 매력적이지 못하다.
그나마 남은 장점이라고는 마이크로소프트 스토어를 이용할 수 있다는 것과 자체 광고 네트워크를 지원한다는 점인데, 마이크로소프트 스토어 포 비즈니스(Microsoft Store for Business)와 마이크로소프트 스토어 포 에듀케이션(Microsoft Store for Education)은 지원을 중단할 거란 기사가 나오거나, 마이크로소프트 자체 광고도 2020년 6월 1일부로 서비스를 중단하기로 발표해버리는 등 당장 마이크로소프트 스토어가 사라지진 않더라도 미래가 영 좋지 않다. 물론 애플리케이션의 배포 인프라와 결제 시스템 등이 자체적으로 지원되기 때문에 영세 개발사에게 도움이 되는 측면도 있겠지만, App Store나 Play Store와 달리 기본적인 이용률 자체가 무척 낮아서 온전히 MS 스토어에만 의존하는 앱은 그리 많지 않다.
결국 Project Reunion이라는 이름으로 UWP와 Win32 API를 통합한다고 한다. # 통합이라고는 하지만 사실상 UWP보다는 Win32를 개선하는 쪽으로 가는 모양새다. UWP에서는 WinUI 2.6~2.7을 사용하고 있으나 Windows App(Reunion 기반)앱들은 WinUI 3를 사용한다.
2021년 10월, Windows 11과 함께 발표된 새 마이크로소프트 스토어는 아예 Win32로 개발된 .exe, .msi 앱의 등록도 허가했다. 다만 UWP나 MSIX 앱이 아닐 경우 MS 스토어를 통한 업데이트를 지원하지 않는다.
5. 여담
절전 모드로 들어가면 서드파티 UWP들이 전부 종료되는 버그가 있다. 일시 중단도 아니고 아예 닫힌다. 백그라운드까지 포함해서 모두! 이는 커널의 설계 미스로, MS도 해결을 위해 진작에 달려들었지만 이윽고 포기했다. 그나마 다행인 점은 모던 스탠바이는 이에 해당하지 않는다.[1] JS의 경우는 웹 애플리케이션이라 C# 기반의 웹뷰어에서 JS를 구동하는 듯 하다.[2] 기존 Win32의 리소스를 대체한다. 물론 Win32 처럼 네이티브 코드로 UI를 그리는것도 가능.[3] 다만 디자인 컨트롤 등은 WPF와 다른 점이 많다.[4] Windows 11은 64bit 운영체제만 사용가능[5] MS가 Windows 10을 전후로 모바일 OS 시장에서 철수했기 때문에 더 이상 지원되지 않는다.[6] UWP의 기능들을 상속한다.[7] UWP는 데이터테이블을 직접 입력하는 것 자체가 정상적으로 되질 않는다. 무슨 일이 있어도 데이터테이블을 거쳐가야 한다면 데이터테이블에서 값을 뽑아내서 넣을 수 있는 형식으로 변환해주던가 해야 한다. #[8] UI 구성의 용이함