영어로 읽기

다음을 통해 공유


프레임워크 옵션 개요를 참조하세요.

이 문서에는 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에 대한 자세한 내용은 다음 링크를 참조하세요.

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

다음 각 옵션에 대해 자세히 알아봅니다.

다음 단계

  • WinUI를 사용하여 Windows용 앱 개발 시작하기

    WinUI는 Windows 앱에 권장되는 플랫폼이며, 이러한 단계를 통해 빠르게 시작할 수 있습니다.

  • Windows에서 개발 환경 설정

    Windows는 Windows에서 실행되는 앱을 개발하는 데 유용한 것이 아니라 모든 플랫폼용 앱을 개발하기 위한 강력한 환경이기도 합니다. 개발을 최대화하는 데 사용할 수 있는 도구와 옵션에 대해 자세히 알아봅니다.