MVVM 모델로 응용 프로그램을 개발하고 있지만 사용할 프레임 워크를 선택해야하는 시점에 도달했습니다.
가능한 옵션은 다음과 같습니다.
- MVVM 툴킷
- MVVM 재단
- WPF 응용 프로그램 프레임 워크 (WAF)
- 가벼운 MVVM
- 칼리 번
- 죄다
- 프리즘
- ReactiveUI
당신의 경험에서 어느 것이 더 낫습니까?
답변
실제로 달성하려는 목표와 이미 필요한 인프라의 양, 도움이되는 샘플을 쉽게 찾을 수있는 방법에 따라 다릅니다. 저는 적어도 하나의 MVVM 프레임 워크에 적극적으로 참여했으며 WPF Disciples 그룹을 통해 다른 사람들에게 정보를 제공했기 때문에 여기에 관심을 표명하겠습니다. 그렇게 말하면 다음과 같습니다.
Microsoft의 MVVM 툴킷 -여전히 알파 단계에 있습니다. 그것이 처음 출시되었을 때, 그것은하지 않은 일 때문에 제자들로부터 약간의 비용을 절약했습니다. MS는이 프레임 워크를 강화하여보고있는 것이기 때문에 아직 준비가되어 있지 않다고 말합니다.
MVVM Foundation -ah Josh Smith의 프레임 워크 버전입니다. 조쉬는 MVVM의 아빠 중 한 명이며이 패턴의 대변인이자 교사입니다. 결과적으로, 다른 프레임 워크에서 찾을 수있는 많은 부분에는 Josh의 지문이 있습니다. 이 프레임 워크는 MVVM의 기본 사항을 제공하기 위해 좀 더 난해한 문제를 다루지 않습니다. 원래 이것은 WPF만을위한 것이었지만 Laurent Bugnion과 같은 사람들은 기능 / 프로젝트를 추가하여 이것이 Silverlight 호환 프레임 워크가 될 것임을 의미합니다.
WAF- 경험이 없으므로 두려워 할 수 없습니다.
MVVM Light -Laurent Bugnion이 채택하여 버전 2로 업데이트했습니다. 이것은 매우 훌륭한 프레임 워크이지만 MVVM 응용 프로그램의 모든 측면을 다루지는 않습니다. Laurent의 배경을 고려할 때 Silverlight 및 Blendability 지원이 매우 강력합니다.
Laurent 업데이트 는 방금 .NET 3.5 및 .NET 4.0 버전이 기능 호환된다는 것을 알게되었습니다. 로랑 갈거야.
Cinch-Sacha Barber의 탁월한 WPF 전용 MVVM 프레임 워크 이것은 위에서 이야기 한 프레임 워크보다 더 많은 근거를 다룹니다. 훌륭한 프레임 워크이며 Bill Kempf의 탁월한 Onyx 프로젝트 에서 다루는 개념을 활용 합니다. Onyx는 MVVM 프레임 워크를 보완하기 위해 만들어졌으며 사람들이 MVVM / WPF에서 수행하기 어려운 기능을 추가합니다. 원래 WPF 전용으로 설계된 Onyx는 SL 호환성을 포함하여 발전해 왔습니다. 특히 제가 자랑스럽게 여기고있는 작업입니다.
프리즘 -다시 한번, 나는 그것을 사용한 적이 없지만 그것에 대해 많은 좋은 소식을 들었습니다.
Ocean -Cider 팀의 프로그램 관리자 인 Karl Shifflett은 최근 완전한 기능을 갖춘 WPF MVVM 프레임 워크를 발표했습니다. 다시 말하지만, 이것은 훌륭한 프레임 워크이며 권장 할 것이 많습니다.
결론은 다른 프레임 워크를 다운로드하여 프레임 워크를보고 생각하는 방식과 요구 사항에 가장 직관적으로 맞는 프레임 워크를 다운로드하십시오. 동일한 코드베이스에서 Silverlight를 지원하려는 경우 WPF 전용 프레임 워크를 할인해야합니다.
답변
이 기사가 매우 유용하다는 것을 알았습니다 http://www.japf.fr/2009/10/a-quick-tour-of-existing-mvvm-frameworks/ 것을 알았습니다 다가오는 사용자를 위해 여기에 가져 왔습니다
Cinch 섹션을 업데이트하고 해당 기능에 silverlight 지원을 추가합니다
긴 이야기가 유감입니다
일반적인 특징:
• ViewModelBase 클래스 (INotifyPropertyChanged 인터페이스 구현 용)
• UICommand를 ViewModel의 처리기에 연결하는 클래스와 같은 RelayCommand
• 단위 테스트는 프레임 워크와 함께 제공됩니다.
죄다
• 저자 : Sacha Barber
• Silverlight 지원 : 아니요 (Cinch 버전 2는 Silverlight를 지원합니다)
• 설명서 : CodeProject에 게시 된 우수 기사 6 개
• 호스팅 : CodePlex
• 라이센스 : Code Project Open License
• 특징 :
첨부 된 행동
IDataErrorInfo를 사용한 유효성 검사
IEditableObject 지원
약한 이벤트 생성 및 구독
약한 이벤트를 사용하는 중재자 메시지
IOC / DI 지원 (Unity 사용)
서비스 : 이벤트 로거, 메시지 상자, 열기 저장 대화 상자, 팝업
스레딩 도우미
메뉴 항목 지원
닫을 수있는 뷰 모델
MVVM 코드 생성기
MVVM 라이트 툴킷
• 저자 : Laurent Bugnion
• Silverlight 지원 : 예
• 문서 : Laurent의 블로그 및 기타 개발자에게 제공되는 많은 기사
• 호스팅 : CodePlex
• 라이센스 : MIT 라이센스
• 특징 :
MSI 설치 관리자
VS 프로젝트 및 아이템 템플릿
VS 코드 스 니펫
인터뷰 모델 통신을위한 메신저 시스템
이벤트를 명령으로 처리
MVVM 헬퍼
• 저자 : Mark Smith
• Silverlight 지원 : 아니요
• 문서 : Mark의 블로그에있는 일부 기사
• 호스팅 : 개인 웹 사이트
• 라이센스 : 정의되지 않음
• 특징 :
첨부 된 행동
태그 확장을 사용하여 뷰 모델 생성
속성 기반 검증
ServiceProvider 접근 방식을 사용하는 IOC / DI
닫을 수있는 뷰 모델
대기 커서 (새로운 WaitCursor () 사용 {// 코드는 여기})
MVVM 재단
• 저자 : 조쉬 스미스
• Silverlight 지원 : 아니요
• 설명서 : Josh 또는 Marlon Grech의 블로그에서 메신저 구현에 대한 기사
• 호스팅 : CodePlex
• 라이센스 : MS-PL
• 특징 :
인터뷰 모델 통신을위한 메신저 시스템
PropertyChanged 이벤트 모니터
칼리 번
• 저자 : Rob Eisenberg
• Silverlight 지원 : 예
• 설명서 : 사용 가능한 전체 온라인 설명서
• 호스팅 : CodePlex http://www.codeplex.com/caliburn
• 라이센스 : MIT 라이센스
• 특징 :
명령은 작업 위에 구축되므로 여러 입력 매개 변수, 필터 및 자동 비동기 실행을 포함하여 동일한 기능을 많이 공유합니다.
다양한 UI 구성 요소에 대한 활성화, 비활성화 및 종료 의미 처리와 같은 UI 수명주기 문제를 처리하는 발표자
Caliburn 응용 프로그램은 완전히 테스트 가능
백그라운드 작업 관리자와 같은 다양한 유틸리티
다양한 UI 패턴 지원 (MVVM 만 아님)
의존성 주입 컨테이너
오닉스
• 저자 : William e Kempf
• Silverlight 지원 : 아니요
• 설명서 : CodePlex에서 제공되는 기본 소개
• 호스팅 : CodePlex
• 라이센스 : 지정되지 않음
• 특징 :
ServiceLocator 패턴
사용자 정의 태그 확장을 사용하여 ViewModel 생성
IDisplayMessage와 같은 UI 관련 서비스
칼슘
• 저자 : 다니엘 본
• Silverlight 지원 : 아니요
• 설명서 : CodeProject에 대한 2 가지 매우 자세한 기사 (1 부 및 2 부)
• 호스팅 : CodePlex
• 라이센스 : 저작권을 사용, 복사, 수정 및 / 또는 배포 및 보관합니다!
• 특징 :
런타임에 모듈을 활성화 또는 비활성화하기위한 모듈 관리자
동일한 API를 사용하여 클라이언트 또는 서버에서 사용자와 상호 작용하기위한 메시징 서비스
활성 뷰 또는 뷰 모델이 인터페이스를 구현할 때만 활성화되는 컨텐츠 인터페이스와 WPF ICommand를 연결하는 Command Service
툴바 및 메뉴 용 지역 어댑터
즉시 사용 가능한 클라이언트 서버 로깅
웹 브라우저, 텍스트 편집기, 출력 창 등과 같은 모듈을 포함합니다.
더티 파일 표시가있는 탭 인터페이스 (모듈 간 재사용 가능)
n 라우트
• 저자 : Rishi
• Silverlight 지원 : 예
• 설명서 : 저자의 블로그에서 제공되는 많은 기사 (링크는 CodePlex 프로젝트 홈 페이지 참조)
• 호스팅 : CodePlex
• 라이센스 : MS-PL
• 특징 :
Blend3 비헤이비어 및 트리거 모델 지원
리소스 로케이터 프레임 워크
서비스보기 : OpenFileDialog, ShowMessage…
속성을 사용하여 View와 ViewModel을 함께 매핑
니토 MVVM
• 저자 : Shammah
• Silverlight 지원 : 아니요
• 설명서 : 아니요
• 호스팅 : CodePlex
• 라이센스 : 지정되지 않음
• 특징 :
- ICommand 인터페이스의 다양한 MVVM 친화적 구현
대양
• 저자 : Karl Shifflet
• Silverlight 지원 : 아니요
• 문서 : Karl의 블로그에서 제공되는 기사
• 호스팅 : 개인 웹 사이트
• 라이센스 : 지정되지 않음
• 특징 :
VB.Net으로 작성
속성 기반 검증
viewmodel 기본 클래스 : relaycommand, closeableviewmodel…
SQL 서버 데이터 액세스 계층
기본 MVVM 프레임 워크
• 저자 : 레스터 로보
• Silverlight 지원 : 아니요
• 설명서 : 라이브러리에서 사용 가능한 샘플 응용 프로그램
• 호스팅 : CodePlex
• 라이센스 : MS-PL
• 특징 :
위임 명령 \ 키 바인딩
VM 간의 메시징
동작이 첨부 된 명령으로 이벤트 처리
대화 상자 등을 서비스로 처리
VS 코드 스 니펫
굿 라이트
• 저자 : Peter O’Hanlon • Silverlight 지원 : 예
• 설명서 : 라이브러리에서 사용 가능한 샘플 응용 프로그램
• 호스팅 : CodePlex
• 라이센스 : MS-PL
• 특징 :
“작업 공간”관리 (닫을 수있는 문서 세트)
피부 지원
VM 간의 메시징
답변
Pete의 위대한 답변에서 누락 된 프레임 워크를 설명하려고합니다.
MVVM 툴킷 (Microsoft) 은이 패턴을 가진 초보자를 지원해야하는 Visual Studio 프로젝트 템플릿이 포함 된 매우 가벼운 라이브러리입니다. Microsoft가 툴킷에 대한 좋은 피드백을 받으면이를 새로운 Visual Studio (아마 2010 년) 프로젝트 템플릿으로 구현할 수 있습니다.
프리즘 (Microsoft p & p) 은 MVVM 패턴에 대한 지원 이상을 제공하는 프레임 워크입니다. 이 프로젝트의 주요 목표는 모듈 식 WPF 및 / 또는 Silverlight 응용 프로그램을 구축하는 데 도움을주는 것입니다. MVVM 패턴을 구현해야하거나 .NET / WPF의 초보자 인 경우이 프로젝트를 권장하지 않습니다. 참조 : 링크 .
WAF (WPF Application Framework) 는 MVVM을 사용하여 WPF 앱을 만드는 데 도움이되는 간단한 프레임 워크입니다. WPF 전용이므로 Silverlight를 지원하지 않습니다. 그것은 Controllers 의 도입으로 대부분의 다른 MVVM 프레임 워크와는 다른 방식으로 진행됩니다. 이들은 애플리케이션 워크 플로우를 담당하며 다양한 ViewModel 사이를 중재합니다.
답변
Meh. Mvvm은 실제로 IMO를 지원하기 위해 전체 프레임 워크가 필요하지 않습니다. 개념을 이해하면 INotify를 구현하는 깔끔한 VM 기본 클래스로 시작하여 시작하는 것이 매우 간단합니다.
답변
답변
자신의 믹스!
PRISM의 EventAggregator를 MVVM Foundation의 ViewModelBase와 함께 사용했습니다. 또한 다른 데이터도 받아들이도록 RelayCommand (일부에서 호출 된 DeleteCommand)를 조정했습니다.
나는 하나의 프레임 워크 자체를 권장하지는 않습니다.
답변
내 베팅은 Caliburn과 MVVMlight에있을 것입니다.이 mvvm 프레임 워크 중 많은 것이 silverlight를 지원하지 않는 것 같습니다. mvvm 프레임 워크에 기능 경계를 설정하는 것이 더 어렵 기 때문에 IoC 프레임 워크보다 선택할 MVVM 프레임 워크가 더 많을 것으로 예상 할 수 있습니다. 어떤 기능이 목록에 있는지 비교하여 프로젝트에 더 적합한 방법을 찾는 가장 좋은 방법이라고 생각합니다.
또한 Mix10을 확인하십시오. 나는 대화에서 많은 것을 배웁니다 : 당신의 mvvm 프레임 워크 구축.