2009-09-10 5 views
2

현재 새 Wpf 응용 프로그램에 프리즘을 도입 중이며 MVVM 패턴을 사용하고 있습니다. Wpf 애플리케이션을 구조화하는 나의 초기 접근법은 하나의 프로젝트를 추가하여 모델 클래스를 유지하고, 하나는 뷰 모델 클래스를 보유하는 등의 작업이었습니다.이 프로젝트는 나중에 분할되어 동일한 프로젝트에서 다른 논리적 구성 요소가 발생하지 않도록 할 수 있습니다. 그러나 이것은 프리즘 (그리고 일반적으로 ..)을 사용할 때 나쁜 구조로 나를 때린다.Wpf MVVM 패턴이있는 프리즘 응용 프로그램 아키텍처

프리즘에서 당신은 다른 논리 모듈로 물건을 구성하고자합니다. 동일한 물건과 관련된 것이 동일한 모듈에 배치됩니다. 따라서이 기사에서는 응용 프로그램의 논리적 부분과 관련된 모든 것을이 부분에 대한 모듈에 넣어야한다고 설명합니다. 이 구성 요소, 관련 뷰 모델 및 필요한 모델 클래스에 대해 서로 다른 뷰를 보유 할 수 있습니다. 이 방법을 사용하면 모델을 내 솔루션에 흩어지게 할 수 있습니다. 모델이 데이터베이스에 묶여있을 때 이것은 나중에 나쁘게 접근 할 수 있습니다. 나는 NHibernate를 사용하고 있으므로 데이터베이스는 실제로 "시각적"이지 않습니다.

그래서 세 가지 구조가 있습니다. 이 중 일반적으로 원하는 것은 무엇입니까? 또는 신청서를 구성해야하는 다른 방법이 있습니까?

  1. 프로젝트 "Model", "ViewModel"및 UserControls를 보유하는 프로젝트. 기타 ...
  2. 한 프로젝트의 논리적 부분 -이 부분에 대한 관련보기,보기 모델 및 모델을 모두 포함합니다.
  3. 하나의 프로젝트 pr 논리 부 - 뷰와 뷰 모델을 포함하지만 모델은 별도의 프로젝트에 정의됩니다. 논리적 인 관계가있는 경우 모든 모델 클래스에 대해 하나의 프로젝트 여야합니다.

의견을 크게 환영합니다.

답변

2

모델을 별도의 프로젝트에 배치하는 것이 좋습니다. 프리즘 스타일 아키텍처의 이점을 충분히 누릴 수 있다면 좋습니다. 이 모델은 V와 VM의 수직 사일로에 국한되지 않고 모두 아래에있는 하위 계층입니다.

보기 및보기 모델은 서로 가깝게 살아가고 있습니다. 뷰 또는 뷰 모델을 재사용 할 수는 있지만 그렇지 않을 경우 스트레스를받지는 않습니다. 즉,보기가 항상 특정보기 모델에 항상 영원히 묶여있는 것은 아니며 반대의 경우도 마찬가지입니다. 예를 들어, 저는 현재 판매량을 보여주는 뷰 모델과 현재 분기를 필터링하는 뷰 모델을 가지고 있지만 같은 뷰에 둘 다 조작 할 수 있습니다. 반대로, 동일한 뷰 모델에 대한 원형 차트 대 막대 차트가 있습니다. 그래서 이것들을 나누는 것은 자르거나 말리는 것과 같지 않습니다. 그러나보기 /보기 모델 쌍보다 큰 청크를 찾을 수 있습니다. 영업 대 고객 관리 등.

+0

Thx. 나는 너에게 동의하며 이것은 내가 지금 선택한 구조이다. 그러나 한 모듈에서 다른 모듈로 참조하는 것이 좋습니까? 아니면 서로에 대해 알지 못하도록해야합니까? 예 : "고객"을 처리 할 모듈이 있어야합니다. 그러나 "Sales"를 처리하는 다른 모듈이있는 경우 Customer ViewModel도이 모듈에서 참조 할 수 있습니다. 이것은 괜찮습니까? 아니면 두 모듈이 처음에는 분리되어 있지 않다는 일반적인 징후입니까? 동일한 모듈로 이동한다는 해결책이 있습니까? 이것에 대한 당신의 의견은 어떻습니까? – stiank81

+3

당신의 모듈은 서로에 대해 알 필요가 없습니다. 그렇지 않으면 모듈화되지 않습니다. 이상적으로 하나 이상의 모듈을 제거하면 응용 프로그램이 제대로 작동합니다. 내가 모듈간에 공통으로 사용할 수있는 유일한 유형은 "모델"또는 기타 계약 유형으로 간주되는 유형입니다. 예를 들어 고객 개체가있는 경우 공유 어셈블리에는 그대로 유지되지만 특정 뷰에만 적합하고 공유는 적절하지 않은 동작 코드가 포함 된 CustomerViewModel은 아닙니다. –

관련 문제