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