В настоящее время я представляю Prism для нового приложения Wpf и использую шаблон MVVM. Мой первоначальный подход к структурированию приложения Wpf заключался в том, чтобы добавить один проект для хранения классов модели, один для хранения классов viewmodel и т. Д. Они могут быть разделены позднее, чтобы избежать использования разных логических компонентов в одном проекте. Однако это поражает меня как плохую структуру при использовании Призма (и, возможно, вообще ...).Wpf Призматическая архитектура с шаблоном MVVM
В Prism вы хотите структурировать вещи в разные логические модули - там, где все, что связано с одними и теми же вещами, будет помещено в один и тот же модуль. Таким образом, это говорит мне, что я должен поместить все связанные с логической частью моего приложения в модуль для этой части. Это может содержать несколько разных представлений для этого компонента, связанной модели представления и необходимых классов моделей. Используя этот подход, я бы, однако, получил модель, разбросанную по моему решению. Поскольку модель будет привязана к базе данных, это, по-моему, как бы плохой подход. Я использую NHibernate, поэтому база данных на самом деле не будет такой «визуальной».
Итак, я вижу три разных структуры. Требуются ли какие-либо из них? Или есть другой способ структурировать приложение?
- Проекты «Модель», «ViewModel», а также один для хранения UserControls. Etc.
- Один логический элемент проекта pr - включая и связанный вид, модель и модель для этой части.
- Одна логическая часть проекта - включая view и viewmodel, но модель определяется в отдельном проекте. Возможно, даже один проект для всех классов моделей, если у них есть логические отношения.
Любые мнения приветствуются!
Thx. Я согласен с вами, и это та структура, которую я выбрал сейчас. Но можно ли переходить от одного модуля к другому, или они в идеале не знают друг о друге? Вы можете, например, иметь модуль для обработки «Заказчика». Но если у вас есть еще один модуль, который обрабатывает «Sales», вы можете захотеть также отменить его ViewModel. Это нормально, или это типичное указание на то, что два модуля не настолько изолированы, как вы изначально, хотя это решение заключается в том, что вы перемещаете оба в один и тот же модуль? Каково ваше мнение по этому поводу? – stiank81
Ваши модули не должны знать друг о друге. В противном случае они не были бы модульными. В идеале ваше приложение будет прекрасно работать с удалением одного или нескольких модулей. Единственными типами, которые я бы сохранил между модулями, были бы типы, которые считаются вашей «Моделью» или другими договорными типами. Например, если у вас есть объект Customer, вы сохраните его в общей сборке, но определенно не CustomerViewModel, который содержит поведенческий код, который подходит только для одного конкретного представления и не подходит для общего доступа. –