MVVM에는 어떤 프레임워크를 사용해야 합니까?
MVVM 모델로 어플리케이션을 개발 중인데 어느 프레임워크를 사용할지 결정해야 할 지경에 이르렀습니다.
사용 가능한 옵션은 다음과 같습니다.
- MVVM 툴킷
- MVVM 기반
- WPF 애플리케이션 프레임워크(WAF)
- 경량 MVVM
- 캘리브른
- 신치
- 프리즘
- 리액티브UI
당신의 경험상 어떤 것이 더 좋습니까?
달성하려고 하는 것, 이미 도입하고 있는 인프라스트럭처의 수, 또 도움이 되는 샘플을 쉽게 찾을 수 있는지에 따라 달라집니다.저는 적어도 하나의 MVVM 프레임워크에 적극적으로 참여했고 WPF Theaters 그룹을 통해 다른 프레임워크에 의견을 제공했기 때문에 여기에 관심을 두겠습니다.이렇게 말하면, 다음과 같습니다.
Microsoft MVVM Toolkit - 이것은 아직 알파 단계입니다.처음 발매되었을 때, 제자들의 맹렬한 비난이 좀 필요했어요. 왜냐하면 제자들이 그렇게 하지 않았기 때문이죠.MS는, 이 프레임워크를 강화해, 지켜볼 필요가 있습니다.그냥 아직 준비가 되어 있지 않습니다.
MVVM Foundation - Josh Smith의 프레임워크 버전.Josh는 MVVM의 아버지 중 한 명이며, 이 패턴의 열렬한 지지자이자 교사였습니다.그 결과 다른 프레임워크에서 찾을 수 있는 많은 것들이 Josh의 지문을 가지고 있습니다.이 프레임워크는 MVVM의 기본을 제공하는 것을 목적으로 하며, 보다 난해한 문제의 일부에 대처하는 것은 아닙니다.원래는 WPF만을 위한 것이었지만, Laurent Bugnion이나 저와 같은 사람들은 Silverlight와 호환되는 프레임워크가 되는 기능이나 프로젝트를 추가했습니다.
WAF - 경험이 없기 때문에 그것에 대해 언급할 수 없습니다.
MVVM 라이트 - Laurent Bugnion이 그것을 받아들이고 버전 2로 업데이트했습니다.이는 매우 우수한 프레임워크이지만 MVVM 애플리케이션의 모든 측면을 망라하는 것은 아닙니다.Laurent의 배경에는 Silverlight와 Blendability가 매우 강력합니다.
Update Laurent가 방금 저에게 알려줬습니다.NET 3.5 및NET 4.0 버전은 기능 호환성이 있습니다.Laurent, 가자.
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 지원을 추가합니다.
이야기가 길어서 죄송합니다.
공통 기능:
• View Model Base 클래스(INotify 구현용)Property Changed 인터페이스)
• UI 명령을 View Model의 핸들러에 링크하는 Relay Command 클래스
• 단위 테스트는 프레임워크와 함께 제공됩니다.
신치
• 저자: 사카 바버
• Silverlight 지원: 없음 (Cinch 버전2는 Silverlight 지원)
• 문서: Code Project에 게재된 우수한 기사 6건
• 개최 : CodePlex
• 라이선스:코드 프로젝트 오픈 라이선스
• 특징:
부가 행동
IDataErrorInfo를 사용한 검증
IEditable Object 지원
약한 이벤트 생성 및 구독
약한 이벤트를 사용한 중개자 메시징
IOC/DI 지원(Unity 사용)
서비스: 이벤트로거, 메시지박스, open save 대화상자, 팝업
스레드 도우미
메뉴 항목 지원
닫기 가능한 뷰 모델
MVVM 코드 생성기
MVVM Light Toolkit
• 저자 : Laurent Bugnion
• Silverlight 지원: 있음
• 문서: Laurent 블로그와 다른 개발자에서도 많은 기사를 볼 수 있습니다.
• 주최: CodePlex
• 라이선스: MIT 라이선스
• 특징:
MSI 인스톨러
VS 프로젝트 및 아이템 템플릿
VS 코드 스니펫
뷰 모델 간 통신을 위한 메신저 시스템
명령어로 이벤트 처리
MVVM 도우미
• 작성자: Mark Smith
• Silverlight 지원: 없음
• 문서: Mark의 블로그에 게재된 기사
• 주최: 개인 웹사이트
• 라이선스: 미정의
• 특징:
부가 행동
마크업 확장을 사용한 뷰 모델 생성
속성 기반 검증
Service Provider 어프로치를 사용한 IOC/DI
닫기 가능한 뷰 모델
wait 커서(새로운 WaitCursor() {//여기 코드 사용})
MVVM 기반
• 저자: Josh Smith
• Silverlight 지원: 없음
• 문서: Josh 또는 Marlon Grech 블로그의 Messenger 구현에 관한 기사
• 주최: CodePlex
• 라이선스: MS-PL
• 특징:
뷰 모델 간 통신을 위한 메신저 시스템
PropertyChanged 이벤트모니터
캘리브른
• 저자: Rob Eisenberg
• Silverlight 지원: 있음
• 매뉴얼: 완전한 온라인 매뉴얼 이용 가능
• 주최: CodePlex http://www.codeplex.com/caliburn
• 라이선스: MIT 라이선스
• 특징:
명령어는 Actions 위에 구축되어 있기 때문에 여러 입력 파라미터, 필터, 자동 비동기 실행 등 많은 동일한 기능을 공유합니다.
다양한 UI 컴포넌트의 활성화, 비활성화 및 종료 의미 처리와 같은 UI 라이프사이클 문제를 처리하는 발표자
교정 응용 프로그램을 완전히 테스트할 수 있습니다.
백그라운드 태스크 매니저와 같은 다양한 유틸리티
는 다양한 UI 패턴을 지원합니다(MVVM뿐만이 아닙니다).
의존성 주입 용기
오닉스
• 작성자: William e Kempf
• Silverlight 지원: 없음
• 문서: CodePlex 기본 소개
• 주최: CodePlex
• 라이선스: 미지정
• 특징:
Service Locator 패턴
사용자 지정 마크업 확장을 사용하여 ViewModel 생성
IDisplay Message 등의 UI 관련 서비스
칼슘
• 저자: Daniel Vaughan
• Silverlight 지원: 없음
• 문서: Code Project에 관한 매우 상세한 기사 2건 (파트1 및 파트2)
• 주최: CodePlex
• 라이선스: 저작권 사용, 복사, 변경, 배포 및 유지!
• 특징:
실행 시 모듈을 활성화 또는 비활성화하기 위한 Module Manager
동일한 API를 사용하여 클라이언트 또는 서버에서 사용자와 대화하기 위한 메시징 서비스
WPF ICommand를 액티브뷰 또는 뷰 모델이 인터페이스를 실장했을 때만 활성화 되는 콘텐츠인터페이스에 관련짓는 명령어서비스
툴바 및 메뉴용 지역 어댑터
즉시 사용할 수 있는 클라이언트/서버 로깅
웹 브라우저, 텍스트 편집기, 출력 창 등의 모듈을 포함합니다.
더티 파일 표시가 있는 탭 형식의 인터페이스(모듈 전체에서 재사용 가능)
n루트
• 저자 : Rishi
• Silverlight 지원: 있음
• 문서: 저자의 블로그에서 많은 기사를 입수할 수 있습니다(링크는 CodePlex 프로젝트 홈페이지 참조).
• 주최: CodePlex
• 라이선스: MS-PL
• 특징:
지원 Blend3 동작 및 트리거 모델
자원 로케이터 프레임워크
서비스 표시:Open File Dialog, Show Message...
속성을 사용하여 View와 View Model을 함께 매핑합니다.
니토 MVVM
• 작성자:샤마
• Silverlight 지원: 없음
• 문서: 아니요
• 주최: CodePlex
• 라이선스: 미지정
• 특징:
- ICommand 인터페이스의 다양한 MVVM 친화적 구현
바다
• 작성자: Karl Shifflet
• Silverlight 지원: 없음
• 문서: Karl의 블로그에 있는 기사
• 주최: 개인 웹사이트
• 라이선스: 미지정
• 특징:
VB로 작성했습니다.그물
속성 기반 검증
뷰 모델 기본 클래스: 릴레이 명령, 닫기 가능한 뷰 모델...
SQL Server 데이터 액세스 레이어
기본 MVVM 프레임워크
• 저자: Lester Lobo
• Silverlight 지원: 없음
• 문서: 라이브러리에서 사용 가능한 샘플 어플리케이션
• 주최: CodePlex
• 라이선스: MS-PL
• 특징:
명령어 위임\키바인딩
VM 간의 메시징
연결된 동작이 있는 명령으로 이벤트 처리
대화 상자(및 기타)를 서비스로 처리
VS 코드 스니펫
굿라이트
• 작성자: Peter O'Hanlon • Silverlight 지원: 있음
• 문서: 라이브러리에서 사용 가능한 샘플 어플리케이션
• 주최: CodePlex
• 라이선스: MS-PL
• 특징:
"접속" 관리(닫을 수 있는 문서 세트)
피부 지지대
VM 간의 메시징
Pete의 훌륭한 답변에서 누락된 프레임워크를 설명하려고 합니다.
MVVM Toolkit(Microsoft)은 Visual Studio 프로젝트 템플릿이 포함된 매우 가벼운 라이브러리이며, 이러한 패턴의 초보자를 지원합니다.Microsoft가 툴킷에 대해 좋은 피드백을 받으면 새로운 Visual Studio 프로젝트 템플릿(2010년)으로 구현할 수 있습니다.
프리즘(Microsoft p&p)은 MVVM 패턴을 지원하는 것 이상의 기능을 제공하는 프레임워크입니다.이 프로젝트의 주요 목표는 모듈러형 WPF 및/또는 Silverlight 애플리케이션 구축을 지원하는 것입니다.MVVM 패턴을 구현해야 하는 경우 또는의 초보자일 경우NET/WPF 이 프로젝트는 추천하지 않습니다.다음 항목도 참조하십시오.링크
WPF Application Framework(WAF)는 MVVM을 사용하여 WPF 앱을 만들 수 있는 경량 프레임워크입니다.WPF 전용이므로 Silverlight는 지원하지 않습니다.컨트롤러가 도입된 대부분의 다른 MVVM 프레임워크와는 조금 다른 방식으로 진행됩니다.이들은 애플리케이션 워크플로우를 담당하며 다양한 ViewModel 사이를 중재합니다.
Mvvm은 IMO를 지원하기 위해 전체 프레임워크가 필요한 것은 아닙니다. 개념을 이해한다면 Inotify를 구현하는 깨끗한 VM 기본 클래스로 시작하여 거기에서 시작하는 것은 매우 간단합니다.
또, 이하를 참조해 주세요.
나만의 믹스!
PRISM의 Event Aggregator와 MVVM Foundation의 View Model Base 등을 사용했습니다.또한 RelayCommand(DelegateCommand가 일부 장소에서 호출)를 조정하여 다른 데이터도 수락했습니다.
하나의 프레임워크만 추천하는 것은 아닙니다.
Caliburn과 MVVMlight에 걸겠습니다.이들 mvvm 프레임워크 중 Silverlight를 지원하는 것은 많지 않은 것 같습니다.mvvm 프레임워크에 대한 기능 경계를 설정하는 것이 어렵기 때문에 IoC 프레임워크보다 선택할 수 있는 MVVM 프레임워크가 더 많을 것으로 예상됩니다.어떤 것이 당신의 프로젝트에 더 적합한지 알아내는 가장 좋은 방법은 그들의 기능을 나열/비교하는 것이라고 생각합니다.
Mix10도 확인해 주세요.mvvm 프레임워크 구축에 대해 많은 것을 배웠습니다.
또한 Ideablade의 칵테일 및 DevForce 프레임워크
프리즘을 쓰고 있는데 마음에 들어요.나에게 큰 일 중 하나는 필요할 때 나를 도와줄 수 있는 다른 사람들이 있다는 것과 좋은 예시를 들 수 있다는 것이었다.기본을 실행하면 앱에 필요한 수많은 확장 기능이 제공되며, 다른 사용자와 동일한 프레임워크로 작업할 때 훨씬 쉬워집니다.
전체적으로는 어플리케이션의 90%를 사용하고 있으며 MVVM 툴킷에서 사용한 것은 Execute에서 실행할 위임 함수가 주어진 명령어를 작성하는 공장 기능뿐입니다.몇 시간 안에 다른 프레임워크로 전환하거나 다른 프레임워크 없이 전환할 수 있을 것 같습니다.
고려해야 할 또 다른 것은 MEFedMVVM입니다.몇 가지 프로젝트에서 사용한 적이 있는데 가볍고 간섭이 없으며 Silverlight와 WPF를 지원합니다.또한 해당 제품을 사용하는 사용자를 위해 Blend에서 디자인 타임 데이터를 지원할 수 있습니다.
WPF/MVVM 애플리케이션 프레임워크 위에 Extensibility(애드인 쓰기 기능)를 찾고 있다면 SoapBox 핵심 면책 사항에 관심이 있을 수 있습니다. 제가 썼어요.오픈 소스이기 때문에 사용하지 않아도 좋은 아이디어가 있을 수 있습니다.확장성과 IoC 양쪽에 MEF를 사용합니다.
nRoute도 있습니다.
MVVM을 지원하는 WPF/Silverlight용 매우 뛰어난 애플리케이션 프레임워크
언급URL : https://stackoverflow.com/questions/1409553/what-framework-for-mvvm-should-i-use
'programing' 카테고리의 다른 글
| Storyboard 로그인 화면, 로그아웃 시 데이터 삭제 처리의 베스트 프랙티스 (0) | 2023.04.22 |
|---|---|
| 한 디렉터리에 있지만 다른 디렉터리에 없는 파일 찾기 (0) | 2023.04.22 |
| 클래스가 아닌 구조를 선택하는 이유 (0) | 2023.04.22 |
| Visual Studio 2010을 완전히 제거하려면 어떻게 해야 합니까? (0) | 2023.04.22 |
| git 오류: RPC 실패, 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054 (0) | 2023.04.22 |