Дизайн приложения MVVM [закрыто]
-
27-10-2019 - |
Вопрос
Я здесь очень скептически отношусь к дизайну своего приложения .....
Вот схема моего приложения
это правильно ??не мне нужно что-то менять ...
Я проработаю схему ....:
Общая библиотека: содержит классы ErrorCodes, служебные классы и т. д.
Регистратор: платформа ведения журнала
Обработка исключений: структура для обработки исключений
Представление: содержит: все различные XAML для представлений, таких как UserControls, Windows, всплывающие окна
ViewModel: содержит ViewModels для различных представлений.
Модель: содержит различные уровни, такие как ... бизнес-уровень, уровень доступа к данным и т. д.
Уровень сущности: содержит такие объекты сущности, как сотрудник, компания и т. д.
Файловое окно: здесь указывается чтение / запись из файла / базы данных ....
Решение
Трудно сказать, что вы пытаетесь сделать со своим вопросом, но, на мой взгляд, слои MVVM должны выглядеть так:
Модель : необработанные данные и проверка необработанных данных. Может быть и общий кодовый код, но ничего больше
ViewModel : бизнес-логика, доступ к данным, расширенная проверка на основе бизнес-правил и т. д.
Просмотры : симпатичный слой пользовательского интерфейса, который позволяет пользователям взаимодействовать с ViewModels. Больше ничего.
Например, модель может иметь свойство INotifyPropertyChanged
, но она не должна отвечать за отображение диалогового окна файла, сохранение файла в базе данных или проверку того, что файл имеет расширение .pdf. Такого рода вещи и есть работа ViewModel.
< sizesЭдит
Я вижу, как вы обновили свой вопрос. Это хорошее начало, но вот проблемы, которые у меня возникают:
-
Ваши модели должны быть объектами необработанных данных. Они не должны содержать ничего более сложного, чем что-то вроде проверки длины свойства.
-
Честно говоря, я бы не рекомендовал разделять представления, модели и модели представления на 3 отдельных слоя. Я сделал это однажды, и это превратилось в кошмар обслуживания. Теперь я складываю все связанные объекты вместе. Например, я бы объединил
File
,FileModel
иFileViewModel
вместе, аFileView
,SearchModel
иSearchViewModel
вместе -
Я бы создал уровень доступа к данным, который отвечал бы за выполнение всех операций чтения / записи данных в / из базы данных (я предполагаю, что это может быть ваш «уровень сущности»).
-
Для небольших проектов я обычно использую свои объекты Entity в качестве моделей, поэтому модели становятся частью моего уровня DAL, хотя я знаю, что это не рекомендуется.
-
Не забывайте, что с MVVM ваши ViewModels - это ваше приложение, а не ваши представления. Представление должно отражать то, что находится в модели представления, а не наоборот.