|
구현 예)
2. ICommand
구현 예)
주로 DelegateCommand 혹은 RelayCommand로 만들어서 사용합니다.
아래 구현예는 CommandParameter를 수신할 수 없는 형태입니다.
1, 2번이 가장 핵심 개념으로 이 두가지만 사용해도 간단한 프로그램을 만드는 것은 문제가 없습니다. 하지만, 프로젝트가 약간만 커져도 금방 한계를 만나게 됩니다.
3. 향상된 MVVM Pattern 사용
4. MVVM Pattern NuGet packages
1~3번까지의 기능들을 모두 나혼자 구현해야한다면, 아마 프로젝트를 시작하기전부터 지쳐서 의욕 상실할 것입니다. 요즘 대세는 빠르게 배우고 빠르게 만드는 언어가 인기인데 말이죠.. 그래서, 많은 개발자들은 NuGet에서 자신이 원하는 라이브러리를 다운받아서 사용합니다.
5. MVVMLight – 2.65M
6. DevExpressMvvm – 119K
7. MvvmCross – 4.65M
8. Microsoft.Toolkit.Mvvm – 296K
9. Prism Library – (Prism.Core 10M)
10. 라이브러리별 비교
MVVMLight | DevExpressMvvm | MvvmCross | MVVM Toolkit | Prism Library | |
INotifyPropertyChanged | ObservableObject | BindableBase | MvxNotifyPropertyChanged | ObservableObject | BindableBase |
ICommand | RelayCommand | DelegateCommand, AsyncCommand | MvxCommand MvxAsyncCommand | RelayCommand AsyncRelayCommand | DelegateCommand |
IoC | SimpleIoc | Autofac | Mvx.IoCProvider | Microsoft.Extensions.DependencyInjection | Prism.Unity, Prism.DryIoc |
Message Communication | Messenger | DevExpress.Mvvm.Messenger | IMvxMessenger | WeakReferenceMessenger, StrongReferenceMessenger | EventAggregator |
Module dev support | X | Module Injection Framework | ? | X | IModule |
Dialog show/hide | X | ? | IMvxInteraction | X | IDialogService |
Use split screen/control | X | ? | ? | X | IRegionManager |
Template | X | O | O | X | O |
Open Source | O | X | O | O | O |
저는 간단한 프로젝트는 Microsoft.Toolkit.Mvvm을 사용하고, 시스템 개발 프로젝트에서는 Prism library를 이용해서 개발을 진행 합니다.
MvvmCross는 저도 사용해 본적이 없어서 뭐라고 이야기를 못할것 같고, MVVMLight는 이제 사용하시면 않됩니다.
DevExpressMvvm은 Open source를 사용하지 못하는 프로젝트에서 사용하시면 좋을 것 같습니다.
MVVM Pattern을 구현하는 방법에 대해서 알아 보았고, 다음 포스트는 이벤트 드리븐 프로그래밍과 MVVM Pattern의 차이점에 대해서 살펴 보도록 하겠습니다.
|