WinUI(Windows UI 라이브러리) 3은 C# 및 .NET을 사용하는 관리형 앱과 Win32 API와 함께 C++를 사용하는 네이티브 앱을 비롯한 Windows 데스크톱 앱을 위한 최신 UI(사용자 인터페이스) 프레임워크입니다. 아직 활발히 개발 중이므로 현재는 모든 요구 사항을 충족할 수 없을 수도 있지만 모든 릴리스를 통해 성숙해지고 있습니다.
WinUI는 Fluent Design System을 모든 환경, 컨트롤 및 스타일에 통합함으로써 최신 UI 패턴을 사용하여 일관되고 직관적이며 액세스할 수 있는 환경을 제공합니다. WinUI 3은 Windows 앱 SDK의 일부로 사용할 수 있습니다. Windows 앱 SDK는 광범위한 대상 Windows OS 버전 세트에서 C++ Win32 또는 C# .NET 앱에서 일관적인 방식으로 사용할 수 있는 통합 API 및 도구 세트를 제공합니다.
Win32 데스크톱 앱(클래식 데스크톱 앱이라고도 함)은 Windows 및 하드웨어에 직접 액세스해야 하는 네이티브 Windows 애플리케이션을 위한 원래 앱 유형입니다. 따라서 가장 높은 수준의 성능과 시스템 하드웨어에 대한 직접 액세스가 필요한 애플리케이션에 적합한 앱 유형입니다.
C++와 함께 Win32 API를 사용하면 WinRT 및 .NET과 같은 관리형 런타임 환경에서 가능한 것보다 비관리형 코드로 대상 플랫폼을 더 많이 제어함으로써 최고 수준의 성능과 효율성을 달성할 수 있습니다. 그러나 애플리케이션 실행에 대한 이러한 수준의 제어 권한을 행사하는 데에는 올바른 결정을 내리기 위해 더 많은 주의와 관심이 필요하며, 런타임 성능을 위해 개발 생산성을 맞바꾸어야 합니다.
다음에는 고성능 애플리케이션을 빌드하는 데 도움이 되도록 Win32 API 및 C++가 제공하는 기능에 대한 몇 가지 주요 항목이 나와 있습니다.
리소스 할당, 개체 수명, 데이터 레이아웃, 정렬, 바이트 압축 등에 대한 엄격한 제어를 포함한 하드웨어 수준의 최적화.
내장 함수를 통해 SSE 및 AVX와 같은 성능 지향적인 지침 세트에 대한 액세스.
템플릿 사용으로 효율적이고 형식이 안전한 제네릭 프로그래밍.
효율적이고 안전한 컨테이너 및 알고리즘.
DirectX, 특히 Direct3D 및 DirectCompute(UWP도 DirectX interop을 제공함).
C++/WinRT를 사용하여 Windows 런타임(WinRT) API에 대한 고급 액세스를 갖춘 최신 데스크톱 Win32 앱을 만듭니다.
또한 Windows 앱 SDK에서 제공하는 최신 Windows 플랫폼 기능 및 API에 액세스할 수 있습니다. 자세한 내용은 데스크톱 앱 현대화를 참조하세요.
WPF는 .NET 또는 .NET Framework에 액세스할 수 있는 관리형 Windows 애플리케이션에 대해 잘 설정된 플랫폼이며 XAML 태그를 사용하여 UI를 코드와 구분합니다. 이 플랫폼은 정교한 UI, 스타일 사용자 지정 및 그래픽을 많이 사용하는 시나리오가 필요한 데스크톱 애플리케이션용으로 고안되었습니다. WPF 개발 기술은 WinUI 3 개발 기술과 비슷하기 때문에 WPF에서 WinUI 3으로 마이그레이션하는 것은 Windows Forms에서 마이그레이션하는 것보다 쉽습니다.
또한 Windows 앱 SDK에서 제공하는 최신 Windows 플랫폼 기능 및 API에 액세스할 수 있습니다. 자세한 내용은 데스크톱 앱 현대화를 참조하세요.
Windows Forms는 경량 UI 모델 및 .NET 또는 .NET Framework에 대한 액세스를 제공하는 관리형 Windows 애플리케이션을 위한 원본 플랫폼입니다. 이를 통해 플랫폼을 처음 접하는 개발자들도 신속하게 애플리케이션 빌드를 시작할 수 있습니다. 이는 시각적 및 비시각적 끌어서 놓기 제어의 다양한 기본 제공 컬렉션이 포함된 폼 기반의 신속한 애플리케이션 개발 플랫폼입니다. Windows Forms는 XAML을 사용하지 않으므로 나중에 WinUI 3으로 애플리케이션을 다시 작성하기로 결정하게 되면 UI를 완전히 다시 작성해야 합니다.
또한 Windows 앱 SDK에서 제공하는 최신 Windows 플랫폼 기능 및 API에 액세스할 수 있습니다. 자세한 내용은 데스크톱 앱 현대화를 참조하세요.
UWP(유니버설 Windows 플랫폼)는 유니버설 Windows 플랫폼의 모든 디바이스에 대한 공용 형식 시스템, API 및 애플리케이션 모델을 제공합니다. UWP를 사용하여 Windows PC용 데스크톱 애플리케이션을 만들 수 있을 뿐만 아니라, UWP는 Xbox, HoloLens 및 Surface Hub에서 실행되는 단일 네이티브 유니버설 앱을 작성하는 데 지원되는 유일한 플랫폼이기도 합니다. UWP 앱은 네이티브이거나 관리형일 수 있습니다.
UWP는 XAML 태그를 사용하여 코드(비즈니스 논리)에서 UI(프레젠테이션)를 구분하는 사용자 지정의 폭이 넓은 플랫폼입니다. UWP는 정교한 UI, 스타일 사용자 지정 및 그래픽을 많이 사용하는 시나리오가 필요한 데스크톱 앱에 적합합니다. UWP는 기본 UX 환경을 위한 Fluent 디자인 시스템에 대한 지원을 기본적으로 제공하며, WinRT(Windows 런타임) API에 대한 액세스를 제공합니다.
Windows 앱 SDK에서 제공하는 API에 액세스할 수 없습니다. Windows 앱 SDK를 사용하려면 UWP 앱을 WinUI 3으로 마이그레이션해야 합니다. 자세한 내용은 Windows 앱 SDK로 마이그레이션을 참조하세요.
플랫폼 간 옵션
WinUI는 다양한 코딩 언어를 사용하여 뛰어난 네이티브 Windows 환경을 제공하는 플랫폼 간 기술의 기반 역할을 합니다. Windows용 .NET MAUI 및 React Native는 Windows에서 WinUI의 기능을 활용하는 동시에 다른 운영 체제에서도 실행할 수 있습니다. 또 다른 플랫폼 간 옵션인 PWA(프로그레시브 웹앱)는 Windows 및 기타 지원 플랫폼에 설치된 네이티브 앱처럼 작동하는 동시에 브라우저에서는 일반 웹 사이트처럼 작동하는 웹 사이트입니다.
.NET MAUI(다중 플랫폼 앱 UI)는 단일 .NET 코드 베이스에서 각 플랫폼의 네이티브 UI 및 서비스를 활용하는 Android, iOS, macOS 및 Windows 애플리케이션을 빌드하기 위한 오픈 소스 플랫폼 간 프레임워크입니다. .NET MAUI 플랫폼 네이티브 환경을 선호하므로 WinUI 3 및 Windows 앱 SDK를 사용하여 앱이 Windows 최신 사용자 환경을 가져올 수 있습니다. 이렇게 하면 앱이 WinUI 3을 통해 얻는 모든 것에 액세스하고 다른 플랫폼에 연결할 수 있습니다.
다음과 같은 경우 Windows용 .NET MAUI를 선택하는 것이 좋습니다.
모바일 및 데스크톱 애플리케이션에서 초대한 많은 .NET 코드를 공유하려고 합니다.
네이티브 플랫폼 환경을 통해 Windows 이외의 다른 데스크톱 및 모바일 대상으로 애플리케이션을 제공하려고 합니다.
플랫폼 간 앱을 빌드하기 위해 C# 및/또는 XAML을 사용하려고 합니다.
웹 개발에 Blazor를 사용 중이며 모바일 또는 데스크톱 애플리케이션에 해당 웹 개발의 전부 또는 일부를 포함하려고 합니다.
PWA(프로그레시브 웹앱)는 개방형 웹 기술에 대한 액세스를 제공하여 플랫폼 간 상호 운용성을 제공합니다. PWA는 사용자에게 디바이스에 맞게 사용자 지정된 앱과 유사한 환경을 제공합니다. PWA는 다른 브라우저에서는 일반 웹 사이트처럼 작동하면서 지원 플랫폼(Windows 포함)에서는 설치된 네이티브 앱처럼 작동하도록 점진적으로 개선되는 웹 사이트입니다.
Windows에 설치하면 PWA는 다른 앱과 같습니다. 예:
시작 메뉴에 PWA를 추가할 수 있습니다.
PWA는 작업 표시줄에 고정할 수 있습니다.
PWA는 파일을 처리할 수 있습니다.
사용자가 로그인하면 PWA를 실행할 수 있습니다.
PWA는 수백만 명의 Windows 사용자가 다른 Windows 앱과 함께 PWA를 검색하고 쉽게 설치할 수 있는 Microsoft Store에 제출할 수 있습니다.
React Native는 플랫폼 간 앱을 빌드할 수 있는 개발 플랫폼입니다.
Windows용 React Native는 Windows 10 및 Windows 11 SDK에 대한 React Native 지원을 제공하므로 JavaScript를 사용하여 Windows 10 및 Windows 11에서 지원하는 모든 디바이스용 네이티브 Windows 앱을 빌드할 수 있습니다. 여기에는 PC, 태블릿, 2-in-1, Xbox, 혼합 현실 디바이스 등이 포함됩니다.
Windows용 React Native를 사용하면 JavaScript 또는 TypeScript로 앱 코드의 대부분 또는 전체를 작성하고 프레임워크는 네이티브 UWP XAML 애플리케이션을 생성합니다. 앱에서 플랫폼 API를 호출해야 하는 경우 일반적으로 많은 커뮤니티 모듈 중 하나를 통해 호출할 수 있습니다. 또는 모듈이 아직 없는 경우에는 쉽게 네이티브 모듈을 작성하여 노출할 수 있습니다.
Windows용 React Native를 선택하는 몇 가지 이유는 다음과 같습니다.
가능한 한 여러 플랫폼에서 코드를 공유하려 하거나 코드를 공유하려는 웹 속성이 있습니다.
빠른 새로 고침 덕분에 개발자 생산성과 내부 루프가 향상되었습니다.
앱의 기본(성능, 접근성, 국제화)은 네이티브 UWP 앱만큼 우수합니다.
JavaScript 또는 TypeScript에 대한 경험이 있고 선호합니다.
npmjs.com에서 JavaScript 전용 라이브러리와 많은 기본 라이브러리를 활용하려고 합니다.
앱은 네이티브 컨트롤, 시각적 모양, 애니메이션 및 색상을 사용하므로 Windows에서 사용되는 디자인 언어에 통합된 느낌을 받습니다. 또한 Windows용 React Native 앱은 프레임워크를 통해 플랫폼 API를 호출하고 고유한 보기 관리자 및 네이티브 모듈을 작성할 수 있기 때문에 호출할 수 있는 API 집합에 영향을 주지 않습니다.