Архитектура приложения Wpf Prism с шаблоном MVVM - PullRequest
2 голосов
/ 10 сентября 2009

В настоящее время я представляю Prism для нового приложения Wpf и использую шаблон MVVM. Мой первоначальный подход к структурированию приложения Wpf состоял в том, чтобы добавить один проект для хранения классов модели, другой для хранения классов viewmodel и т. Д. Они могут быть разбиты позднее, чтобы избежать наличия разных логических компонентов в одном проекте. Тем не менее, это выглядит как плохая структура при использовании Prism (и, возможно, в целом ..).

В Prism вы хотите структурировать вещи в разные логические модули - где все, что связано с одинаковыми вещами, будет размещено в одном и том же модуле. Так что это говорит мне, что я должен поместить все связанные с логической частью моего приложения в модуль для этой части. Это может содержать несколько различных представлений для этого компонента, связанной модели представления и необходимых классов модели. Используя этот подход, я бы разбросал модель вокруг моего решения. Поскольку модель будет привязана к базе данных, это все равно кажется мне плохим подходом. Я использую NHibernate, поэтому база данных не будет такой «визуальной».

Итак, я вижу три разных структуры. Любые из них обычно желательны? Или есть другой способ структурирования моего приложения?

  1. Проекты "Модель", "ViewModel", а также один для хранения пользовательских элементов управления. И т.д ..
  2. Одна логическая часть проекта - включая связанный вид, модель представления и модель для этой части.
  3. Одна логическая часть проекта - включая view и viewmodel, но модель определяется в отдельном проекте. Может быть, даже один проект для всех классов моделей, если они имеют логические отношения.

Любые мнения с благодарностью!

1 Ответ

2 голосов
/ 10 сентября 2009

Поместить вашу модель в отдельный проект - это хорошо. Я бы сказал, что это рекомендуется, если он достаточно большой, чтобы по-настоящему выиграть от архитектуры в стиле призмы. Модель не ограничивается вертикальным бункером V и VM, но является нижним слоем, который расположен ниже всех из них.

Ваши представления и модели представлений имеют смысл жить рядом друг с другом. Вы можете найти многократное использование представлений или моделей представлений, но не подчеркивайте, если нет. Тем не менее, представление не всегда навсегда привязано к конкретной модели представления и наоборот. Например, у меня есть модель представления, которая показывает все продажи, и модель представления, которая фильтрует текущий квартал, но я могу настроить оба представления на одно и то же. С другой стороны, у меня есть круговая диаграмма и столбчатая диаграмма в той же модели представления. Таким образом, разделение это не так, как разрезать и высушить. Однако вы можете найти более крупные фрагменты, чем просто просмотр / просмотр пар моделей. Продажи против управления клиентами и тому подобное.

...