프레임워크 옵션 개요를 참조하세요.
이 문서에는 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 집합을 손상시킬 필요가 없습니다.
- 증가하는 대규모 커뮤니티 모멘텀으로, 커뮤니티 모듈이 많습니다.
데스크톱용 React Native에 대한 자세한 내용은 다음 링크를 참조하세요.
- GitHub의 Windows용 React Native 리포지토리
- GitHub의 macOS 리포지토리에 대한 React Native
- API 참조
- 데스크톱 리소스에 대한 React Native
WPF
WPF는 .NET 또는 .NET Framework에 액세스할 수 있는 Windows 데스크톱 애플리케이션을 위한 잘 설정된 프레임워크입니다. WinUI와 마찬가지로 XAML 태그를 사용하여 UI를 코드와 분리합니다. WPF는 컨트롤, 데이터 바인딩, 레이아웃, 2D 및 3D 그래픽, 애니메이션, 스타일, 템플릿, 문서, 미디어, 텍스트 및 입력 체계를 포함하는 포괄적인 애플리케이션 개발 기능 세트를 제공합니다. WPF는 .NET의 일부이므로, .NET API의 다른 요소를 통합하는 애플리케이션을 빌드할 수 있습니다.
또한 이제 샌드박스 환경을 패키징된 WPF 애플리케이션에 통합하여 추가적인 보안 계층을 제공할 수 있습니다. 이 향상된 기능은 새로운 Win32 앱 격리 보안 기능 덕분에 코드를 거의 또는 전혀 변경하지 않아도 됩니다.
팁
WPF에 이미 투자한 경우 계속 사용하고 .NET 9의 현대화 옵션을 활용할 수 있습니다. Microsoft가 WPF에 계속 투자하고 있다는 것을 알고 앱을 빌드할 수 있습니다. 자세한 내용은 클라이언트 앱 개발 프레임워크 FAQ를 참조하세요.
만일 WPF .NET 앱이 있다면 Windows 앱 SDK에서 제공하는 최신 Windows 플랫폼 기능 및 API에도 액세스할 수 있습니다. 자세한 내용은 WPF 앱에서 Windows 앱 SDK 사용하고 데스크톱 앱 현대화하기를 참조하세요.
팁
앱에 가장 적합한 프레임워크를 결정하는 데 더 많은 도움이 필요한 경우 Windows 개발 프로젝트 학습 모듈에 가장 적합한 애플리케이션 프레임워크 선택을 참조하세요.
기타 네이티브 플랫폼 옵션
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 앱 SDK에서 제공하는 최신 Windows 플랫폼 기능 및 API에 액세스할 수 있습니다. 자세한 내용은 기존 프로젝트에서 Windows 앱 SDK 사용하고 데스크톱 앱 현대화하기 를 참조하세요.
기타 플랫폼 간 옵션
앱이 플랫폼 간이어야 하는 경우 데스크톱용 React Native 외에도 .NET MAUI 또는 PWA(프로그레시브 웹앱)를 고려해야 합니다. 사용할 수 있는 다른 옵션도 많이 있지만(자주 사용되는 옵션 목록은 다음과 같습니다), 다음 옵션들은 좋은 시작점입니다.
.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를 사용 중이며 모바일 또는 데스크톱 애플리케이션에 해당 웹 개발의 전부 또는 일부를 포함하려고 합니다.
.NET MAUI에 대한 자세한 내용은 다음 링크를 참조하세요.
앱 개발 프레임워크 기능 비교
Windows용 애플리케이션을 개발하기 위한 다양한 옵션이 있습니다. 가장 적합한 옵션은 응용 프로그램 요구 사항, 기존 코드 및 기술에 대한 친숙도에 따라 달라집니다. 다음 표에는 Windows에서 사용할 수 있는 가장 인기 있는 앱 개발 프레임워크와 각 프레임워크에서 지원하는 기능이 나열되어 있습니다.
기능 | .NET MAUI | Blazor 하이브리드 | 데스크톱용 React Native | UWP XAML(Windows.UI.Xaml) | Win32(MFC 또는 ATL) | Windows Forms | WinUI 3 | WPF |
---|---|---|---|---|---|---|---|---|
언어 | C# | C# | JavaScript, TypeScript | C#, C++, Visual Basic | C++, Rust | C#, Visual Basic | C#, C++ | C#, Visual Basic |
UI 언어 | XAML/Code | Razor | JSX | XAML | 코드 | 코드 | XAML | XAML |
UI 디자이너 (끌기 & 놓기) |
❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ |
UI 디버깅 | 핫 다시 로드 | 핫 다시 로드 | 빠른 새로 고침 | 핫 다시 로드 | - | 핫 다시 로드 | 핫 다시 로드 | 핫 다시 로드 |
Fluent 디자인 | ✅ | ✅ | ✅ | ✅(WinUI 2를 통해) | ❌ | ❌ | ✅ | ❌ |
.NET | .NET | .NET | 해당 없음 | .NET Core & .NET 네이티브 | 해당 없음 | .NET & .NET Framework | .NET | .NET & .NET Framework |
Windows 앱 SDK | ✅ (자세한 정보) | ✅MAUI를 통해 | ✅ (자세한 정보) | ❌ | ✅ | ✅ (자세한 정보) | ✅ | ✅ (자세한 정보) |
터치에 적합 | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ |
플랫폼 간 | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Xbox/HoloLens 앱 | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
샌드박싱(AppContainer) | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
현재 지원됨 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
업데이트 받기 | ✅ | ✅ | ✅ | ✅(보안 & 버그 수정) | ✅ | ✅ | ✅ | ✅ |
로드맵 | GitHub | GitHub | GitHub | 해당 없음 | 해당 없음 | GitHub | GitHub | GitHub |
다음 각 옵션에 대해 자세히 알아봅니다.
- 클라이언트 앱 개발 프레임워크 FAQ
- .NET 다중 플랫폼 앱 UI(.NET MAUI)
- ASP.NET Core Blazor 하이브리드
- 데스크톱용 React Native
- UWP(유니버설 Windows 플랫폼)
- ATL과 MFC 중 선택에 대한 권장 사항
- Windows Forms
- WPF(Windows Presentation Foundation)
- Windows 앱 SDK의 WinUI 3(WinUI 3)
다음 단계
- WinUI를 사용하여 Windows용 앱 개발 시작하기
WinUI는 Windows 앱에 권장되는 플랫폼이며, 이러한 단계를 통해 빠르게 시작할 수 있습니다.
- Windows에서 개발 환경 설정
Windows는 Windows에서 실행되는 앱을 개발하는 데 유용한 것이 아니라 모든 플랫폼용 앱을 개발하기 위한 강력한 환경이기도 합니다. 개발을 최대화하는 데 사용할 수 있는 도구와 옵션에 대해 자세히 알아봅니다.
Windows developer