Сравните между 3-х слойным рисунком и MVVM - PullRequest
5 голосов
/ 28 февраля 2011

я не знаю MVVM.я всегда следую 3-х уровневой схеме, где один уровень - это пользовательский интерфейс, другой - бизнес-уровень, а последний уровень - уровень доступа к данным.

на этом уровне мы отправляем запрос из пользовательского интерфейса на бизнес-уровень, а бизнес-уровень взаимодействует с доступом к данным.слой.в этом паттерне все идет хорошо, тогда мой вопрос, почему нужно изучать MVVM.в чем преимущество MVVM.Какие вещи можно сделать очень мало, используя MVVP.пожалуйста, обсудите подробно.спасибо.

Ответы [ 4 ]

14 голосов
/ 28 февраля 2011

Слои

В отличие от того, что ppl писал до меня - паттерн MVVM - это не разделение слоя пользовательского интерфейса на 3 слоя, а разделение слоя пользовательского интерфейса на два дополнительных слоя - View и ViewModel.

так что, если бы у нас были DAL, BLL и UI, теперь у нас есть Model (DAL & BLL) и ViewModel + View (вместо одного UI слоя).

это все еще 3 слоя, но они организованы по-разному (и если вы действительно об этом думаете - DAL никогда не был действительно слоем - это, в большинстве случаев, вспомогательный класс, так что вышеупомянутый 3-слой был на самом деле всего 2 слоями, которые сейчас становятся 3 слоя в MVVM).

Причины

Если вы подумаете об этом, вы увидите, что в трехуровневой архитектуре, как правило, пользовательский интерфейс смешивается с кодом представления и кодом логики приложения. это нарушает SRP (принцип единой ответственности) и является плохим по нескольким причинам. В MVVM уровень пользовательского интерфейса разделен на два уровня. ViewModel, отвечающий за логику приложения, и View, отвечающий только за презентации.

Это позволяет вам три очень важные вещи:

  1. лучший код Ремонтопригодность .

  2. проще работать с VS дизайнером и Blend. Смешиваемость . (это, пожалуй, самая сильная особенность MVVM. Это действительно повышает производительность)

  3. позволяет тестировать ViewModel с помощью автоматических тестов, в то время как до сих пор нам приходилось тестировать сам интерфейс, а выполнение автоматических тестов на интерфейсе было сложным. Это называется Тестируемость

на личной заметке; Я писал в n-уровневой архитектуре в течение многих лет. Я начал практиковать MVVM чуть больше года назад. Иногда это может быть тяжело, но, черт возьми, это действительно стоит 1039 усилий.

4 голосов
/ 28 февраля 2011

MVVM для построения уровня пользовательского интерфейса.Это шаблон, который обеспечивает очень хорошее взаимодействие между вашими бизнес-объектами и UI-каркасом.Вам не нужно менять свой 3-х уровневый шаблон.MVVM находится на другом уровне абстракции.
Здесь вы найдете очень хорошее видео, представляющее MVVM и, вероятно, отвечающее на множество вопросов.

3 голосов
/ 28 февраля 2011

MVVM, возможно, сама по себе является трехуровневой архитектурой.Все эти уровни существуют в одном приложении.

«3-слойный» также иногда относится к n-уровневой архитектуре , которая больше касается разделения пользовательского интерфейса, уровня обслуживания и данных.слой, на отдельных серверах.Если у вас есть такая иерархическая структура, MVVM не заменит ее.Он только увеличит уровень пользовательского интерфейса, разделив его на три собственных уровня.

Вот описание MVVM, которое показывает некоторую связь между классическим MVC, через MVP и MVVM:

http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

Также см. мой ответ на этот другой вопрос .Это объясняет некоторые причины, по которым вы будете использовать MVVM для более старых версий MVC .

2 голосов
/ 28 февраля 2011

MVVM имеет особое отношение к WPF, Silverlight / Moonlight и Windows Phone 7, поскольку использует преимущества мощного связывания данных, встроенного в эти платформы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...