피드로 돌아가기
GeekNewsBackend
원문 읽기
Windows 네이티브 앱 개발이 엉망인 이유
Windows 네이티브 앱 개발자들이 새 프로젝트에서 C++ 대신 메모리 안전 언어(.NET, Rust 등) 또는 검증된 UI 프레임워크(WPF, Qt) 선택으로 개발 복잡도와 유지보수 비용 절감
AI 요약
Context
Windows 네이티브 앱 개발 생태계가 분열되어 있다. Microsoft가 WinRT, UAP, UWP, WinUI 3.0 등 새로운 UI 기술을 반복적으로 출시했으나 대부분 실패하거나 지원 중단되었다. 예를 들어 Windows 8 시절 WinJS는 공식 지원이 끝났고, WinUI 3.0은 품질 문제로 오픈소스 전환 중이다. 동시에 2026년에도 C++과 메모리 안전하지 않은 언어로 새 프로젝트를 시작하는 것은 시대착오적이다.
Technical Solution
- Win32 API 지속 활용: 창 생성, 단축키 후킹, 트레이 아이콘 표시 등을 수백 바이트 수준의 API 호출로 구현 가능하며, Windows XP 시대 코드가 Windows 11에서도 동작
- .NET Framework/Core로 대체: C++의 메모리 안전성 문제를 회피하면서 같은 기능을 절반의 개발 시간에 구현 가능하며, AOT 컴파일로 약 9MiB의 독립 실행 파일 생성 가능
- 메모리 안전 언어 바인딩 활용: windows-rs를 통해 Rust에서 Win32 API 직접 호출 가능
- 검증된 UI 프레임워크 선택: WPF, WinForms, Qt, VCL, Avalonia, Uno, ImGUI 등 20년 이상 검증된 기술 사용하고, Microsoft 소유 WinUI 3.0과 최신 UI 툴킷 회피
- MFC 스타일 경량 래퍼 자체 제작: C++로 2~3주 안에 Win32 기능에 완전히 접근 가능한 래퍼 레이어 개발 가능
Key Takeaway
Windows 네이티브 앱 개발에서 최신 기술 도입보다 안정성과 하위 호환성이 검증된 기술 선택이 핵심이다. Microsoft의 반복적인 UI 프레임워크 실패 사례는 새로운 것이 항상 낫지 않음을 보여준다.
실천 포인트
Windows 데스크톱 애플리케이션 개발팀에서 새 프로젝트 기술 선택 시 WinUI
3.0, WinAppSDK 등 Microsoft 최신 UI 툴킷을 피하고, WPF/WinForms(.NET), Qt, Delphi 중 선택하면 장기 유지보수 비용을 줄일 수 있다. 메모리 안전성이 필수 요구사항이면 C++ 대신 .NET Core(windows-rs 바인딩)나 Rust를 고려하되, 신뢰되지 않은 입력이 거의 없는 내부 도구라면 기존 C++ Win32 코드 유지가 더 실용적일 수 있다.