다양한 API들의 통합
- 닷넷 3.0에서 소개된 WPF는 다양했던 프로그래밍 모델을 하나로 합쳐 놓은 통합된 프로그래밍 모델
XAML을 통한 완벽한 UI의 분리
- UI를 XAML로 분리하여 프로그래밍 로직과 UI를 분리하여 디자이너와 프로그래머가 따로 작업이 가능 (XAML+C#)
최적화된 렌더링 모델
WPF의 다양한 옵션 기능
- 컨트롤 배치 관리
- 다양한 UI 개체 표현
- 스타일 엔진을 이용한 테마 정의
- 2D, 3D 그래픽, 비디오 오디오 기능 제공
- 다양한 API 지원
- 윈도우 폼, ActiveX, Win32, HWND 등 다른 GUI 객체들과 통합 지원
MVVM(Model-View-ViewModel)은 디자인 패턴으로 Model, View, ViewModel로 나눈 디자인 패턴으로
WPF나 SilverLight에서 많이 사용되는 프레임워크 패턴 "각각의 역할을 나눠 코드 관리를 하자"
구조
- Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
- View : 사용자에게 보여지는 UI 부분
- View Model : View를 표현(데이터 처리, UI)하기 위해 만든 View를 위한 Model
동작
1. 사용자의 Action들은 View를 통해 들어옴
2. View에 Action이 들어오면, Command 패턴으로 ViewModel에 Action 전달
3. ViewModel은 Model에게 데이터 요청
4. Model은 ViewModel에게 요청받은 데이터를 응답
5. ViewModel은 응답 받은 데이터를 가공
6. View는 ViewModel과 DataBinding하여 화면에 나타냄
특징
- MVVM 패턴은 Command와 DataBinding 두 가지 패턴을 사용하여 구현
- Command 패턴과 DataBinding을 이용하여 View와 ViewModel 사이의 의존성을 없앰
- ViewModel과 View는 1:n 관계
장점
- View와 Model 사이의 의존성을 없음
- Command 패턴과 DataBinding을 이용하여 View와 ViewModel 사이의 의존성을 없앰
- 각각의 부분이 독립적이기 때문에 모듈화 하여 개발하고 유지보수에 용의함
단점
- ViewModel의 설계가 어려움