2011-08-19 3 views
2

오랜 기간 동안 축소 된 응용 프로그램을 개발하는 대규모 팀의 맥락에서 MVVM의 유용성을 이해합니다. 그러나 내부 LOB 응용 프로그램의 맥락에서 MVVM은 과도한 것처럼 보입니다. 선언적 데이터 바인딩 디버깅, 레이어에서 레이어로 점프, 명령 또는 두 개로 간신히 모델 이상인 VM 추출 등의 오버 헤드를 삼키는데 어려움을 겪고 있습니다. . 그 오버 헤드를 받아들이더라도 대화 상자처럼 MVVM에 구멍이 남습니다. 내가 생각 한 몇 가지 있습니다 :경량 뷰 모델 WPF의 경우

  • 모델에 직접 바인딩 및 양식 상호 작용
  • 에 대한 구식 이벤트 핸들러는 VM으로 뒤에 효과적으로 코드를 사용하여, 그 자체에 사용자 컨트롤이나 창을 바인딩 할 .
  • 내 VM에 관련보기를 참조하는 속성을 포함하십시오.
  • View의 ViewModel 하위 클래스를 만듭니다.

위의 항목과 그 조합은 일부 문제를 해결하지만 전부는 아닙니다. 테스트 가능성을 희생시킬 수 있다는 것을 알고 있습니다. 이러한 기술 중 하나 이상을 사용하여 다른 기술 (SOC와 같은 개념적이지 않은) 문제가 실행될 수 있습니까?

+1

당신이 MVVM을 사용하는 경우, 얻을 MVVM이 있음을 유의하십시오 우려와 코드 재사용의 분리 등의 이점이 있지만 주로 실제 뷰와는 별도로 비즈니스 로직을 테스트 할 수 있다는 것입니다. 응용 프로그램의 단위 테스트가 프로젝트에서 중요하다면 MVVM은 좋은 선택이며 관련된 '오버 헤드'에 가치가있을 것입니다. – Oppositional

+0

나는 동의하지 않는다. 뷰 모델에는 비즈니스 로직이 없어야하며 ui와 연결된 로직이 포함됩니다. 우리 사업 논리/모델 계층은 단위 테스트를받습니다. 그러나 일반적인 축소 형 제품이나 상용 제품에 게시하는 데 드는 비용은 내부 LOB 응용 프로그램에 거의 존재하지 않으므로 UI의 단위 테스트에 약간의 유의점이 있습니다. MVVM의 유용성에 대해 궁금해하는 곳이기도합니다. 가장 순수한 형태. –

+0

동의하지 않으면 ViewModels에 UI 로직이 없어야합니다. 포커스 설정이나 애니메이션 실행과 같은 UI 관련 내용은 코드 뒤에 작성해야합니다. ViewModel은 데이터로드/저장과 같은 비즈니스 로직을 포함해야하며 현재 활성 화면 인 ViewModel을 변경하거나 오류 메시지를 반환하는 것과 같은 응용 프로그램 흐름을 제어해야합니다. ViewModel은 응용 프로그램이지만 View는 사용자가 ViewModel과 쉽게 상호 작용할 수있는 예쁜 UI입니다. – Rachel

답변

0

코드 재사용이 가능합니다. 제대로 작성된 VM은 Silverlight 또는 WP7 구현에서 재사용 될 수 있습니다.

+0

이 경우, 가능성은 있지만, 이것은 좋은 지점입니다. –

2

작은 단일 페이지 응용 프로그램이라도 WPF 또는 Silverlight로 코딩 할 때 항상 MVVM을 사용합니다. 따라서 장기적으로 테스트하고 유지 관리하는 것이 훨씬 쉬우 며, 앱없이 앱을 만드는 것이 더 빠릅니다.

대신 모델에 바인딩하는 등의 작은 앱에서 바로 가기를 사용할 수 있습니다. ViewModel에서 모델의 속성을 노출 시키거나 UserControl 대신 DataTemplate에서 뷰를 정의하거나 ViewModel에서 Window의 Dialog를 사용하여 MVVM없이 WPF 또는 Silverlight 앱을 수행하는 것을 고려하지 않았습니다.

당신이 원하는 경우에, 나는 MVVM 함께 할 매우 간단한 응용 프로그램의 예를 here

+0

이 같은 포함한 모든 샘플을 보내고있어 투쟁 : –

+0

이 같은 포함한 모든 샘플을 보내고있어 투쟁 : http://msdn.microsoft.com/en-us/magazine/dd419663.aspx 및 이 : http://code.msdn.microsoft.com/How-to-implement-MVVM-71a65441 모두 매우 간단한 예입니다. 대화 상자, 대기 커서 등과 같은 것들은 커뮤니티에 의해 해킹당하는 것입니다. 그러나 받아 들일 수있는 해결책을 찾을 수있는 곳이라 할지라도 winforms에서 한 줄의 코드가 될 수 있도록 30 줄의 코드를 프레임 워크에 추가하는 데 어려움이 있습니다. 환경. –