C#으로 Windows 데스크톱 애플리케이션을 개발할 때 주로 사용되는 프레임워크에는 Windows Presentation Foundation(WPF)과 Windows Forms(WinForms)이 존재
XAML 기반 UI 설계
WPF는 XAML(eXtensible Application Markup Language)을 사용하여 UI를 정의
XAML은 UI와 로직을 분리할 수 있는 구조를 제공하여 디자이너와 개발자가 독립적으로 작업 가능
데이터 바인딩
데이터와 UI 간의 바인딩을 간편하게 설정할 수 있으며, 단방향, 양방향 바인딩을 지원
MVVM(Model-View-ViewModel) 패턴을 주로 이용용
벡터 기반 렌더링
WPF는 DirectX를 사용하여 화면을 렌더링
해상도 독립적인 그래픽과 고품질 비주얼을 제공
스타일 및 템플릿
CSS와 유사한 스타일링과 컨트롤의 모양을 완전히 커스터마이징할 수 있는 템플릿 기능을 지원
멀티미디어 통합
비디오, 오디오, 애니메이션, 3D 그래픽 등 멀티미디어 요소를 애플리케이션에 쉽게 통합 가능
해상도 독립성
WPF는 화면 DPI와 관계없이 동일한 UI 품질을 유지
풍부한 UI 설계
WPF는 고급 그래픽, 애니메이션, 스타일링 옵션을 제공하여 현대적이고 세련된 UI 구현 가능
확장성과 유연성
WPF는 다양한 화면 크기와 해상도에 적응할 수 있는 레이아웃 시스템을 제공
생산성 향상
XAML 기반 설계와 데이터 바인딩 기능은 복잡한 UI를 더 쉽게 개발
DirectX 활용
WPF는 GPU를 활용한 렌더링을 통해 그래픽 성능이 뛰어남
Windows GDI+ 기반
WinForms는 Windows GDI+를 사용하여 그래픽을 처리
단순하고 효율적이며, DirectX와 같은 고급 렌더링 기능은 제공 X
쉬운 접근성과 단순함
WinForms는 배우기 쉽고 간단한 API를 제공하여 초보자도 쉽게 사용 가능
오픈 소스가 다양
단순함
진입 장벽이 낮고, 간단한 데스크톱 애플리케이션을 빠르게 개발 가능
빠른 개발 속도
직관적인 디자인 툴과 코드 작성 방식으로 빠르게 UI 제작 가능
안정성과 호환성
Windows Forms Designer를 통해 쉽게 UI를 설계 가능
| 항목 | WPF | WinForms |
|---|---|---|
| UI 설계 방식 | XAML 기반 (UI와 로직 분리) | 코드 기반 (UI와 로직이 밀접하게 통합) |
| 렌더링 기술 | DirectX (벡터 기반) | GDI+ (래스터 기반) |
| 그래픽 품질 | 해상도 독립적, 고품질 그래픽 지원 | 고정 해상도, 단순한 그래픽 |
| 데이터 바인딩 | 강력한 데이터 바인딩 기능 | 제한된 데이터 바인딩 기능 |
| 레이아웃 시스템 | 유연한 레이아웃 관리 (Grid, StackPanel 등) | 절대 좌표 중심의 간단한 레이아웃 |
| 확장성 | 멀티미디어, 3D 그래픽, 애니메이션 등 지원 | 기본 컨트롤 위주의 기능 제공 |
| 학습 곡선 | 상대적으로 복잡 (MVVM 패턴 권장) | 단순하고 쉬움 |
| 호환성 | 최신 기술과 잘 통합 | 기존 레거시 애플리케이션과 높은 호환성 |
| 성능 | GPU 활용 가능, 대규모 데이터 처리에 유리 | CPU 중심, 간단한 애플리케이션에 적합 |