2015-12-08 4 views
0

Я потратил много времени, чтобы избежать загрязнения слоя модели «материалом WPF». Конечно, XAML запрещен ничем, кроме представления с самого начала, но я немного смущен, когда речь заходит о ViewModels и Models.Должен ли я ссылаться на структуру MVVM на уровне модели?

Как я вижу это сейчас, если у вас есть архитектурный образец слоя, поэтому каждый слой создается этой архитектурой. Итак, как видно из названия MVVM, вы можете ссылаться на него в Model, layer, right?

Другое дело, что я начинаю выяснять: MVVM, похоже, не зависит от WPF, так? Я имею в виду, что они хорошо работают вместе, вы можете использовать среду MVVM на уровне модели без ссылки на какую-либо сборку WPF, насколько я знаю.

Так что вопрос:

Это считается OK или вонючий ссылаться MVVM Framework в модели слоя, и почему?

(только для записи я использую MVVM Light)

+0

MVVM (вид <= ModelView <=> модель) правый? Тогда View вообще независим, и на уровне модели мы можем что-то использовать из VM.Да, MVVM не зависит от WPF, вы можете использовать его и с WinForms, но WinForms на самом деле не готовы к этому^_^ – Spawn

+0

Я знаю, что такое MVVM, но что именно вы подразумеваете под «MVVM framework»? –

+0

@GlenThomas Есть библиотека с полезными классами для реализации шаблона. Примеры: Caliburn.Micro, MVVM-Light, PRISM. – heltonbiker

ответ

0

Вы не должны действительно иметь какие-либо ссылки на ваш MVVM рамочных, так как они являются частью инфраструктуры. Хотя многие из существующих фреймворков работают на нескольких платформах (Silverlight, WPF, UWP, WinPhone), они часто по-прежнему привязаны к определенной технологии или структуре (т. Е. В прошлый раз, когда я смотрел поддержку региона Prism 5.0, был ограничен WPF, не поддерживающий WinPhone/UWP).

Ваш слой «Модель» будет содержать вашу бизнес-логику (как модель/уровень домена) и должен быть независим от проблем с инфраструктурой (UI Framework, реализации баз данных, MVC или серверные технологии).

Если вам необходимо изменить MVVM Framework, вам нужно будет не только обновить ViewModels, но и ваш уровень модели/домена. И это плохо, поскольку вам не нужно обновлять свой домен, когда вы меняете инфраструктурные технологии.

3

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

Если у вас есть MVVM framework comparison sheet, вы увидите, что ни одна из этих функций не включает взаимодействие модели.

В.М. потребляет M и тому В потребляет В.М..

MVVM - это шаблон, в то время как WPF, Silverlight или Winforms представляют собой рамки приложений.

Смежные вопросы