2013-06-07 3 views
1

Архитектурные модели, такие как MVC, MVVM, MVP используются только в уровне презентации ?.
Можем ли мы использовать уровень бизнес-логики или уровень доступа к данным?
Я раньше думал, что Presentation Tier is View;
BusinessLogic Tier является Controller/Viewmodel и Data Access Layer является Model.
, пожалуйста, проясните это.Application Architechture MVC, MVVM и т. Д.

ответ

1

Упомянутые вами узоры предоставляют концепции для объединения деловых и презентационных уровней. Учитывая классическую архитектуру три яруса с уровнями вы упомянули: доступ Data Layer, Business Logic, Presentation Layer, затем MVVM, MVC, MVP обеспечивают концепции для сочетания уровня представления и бизнес-логики. Поскольку основная идея заключается в свободной связи между ними, чтобы как можно больше избежать логических зависимостей между двумя слоями, я бы подумал о них как о каком-то посреднике (по смыслу слова, а не о шаблоне) или о клеве между ними ,

Позвольте мне прояснить это для MVVM, образцовым:

Вы можете написать полный уровень представления в WPF без использования MVVM. Точно так же вы можете написать бизнес-логику, не зная понятия MVVM. Вам вообще не нужны ViewModels для создания рабочего приложения.

Но: У вас нет возможности четко отделить проблемы представления/пользовательского интерфейса и фактической логики, которая выполняет задачи, на которые написано ваше программное обеспечение. Граница между двумя нечеткая в реальном мире: вы вычисляете данные, теперь вы хотите преобразовать данные, чтобы отобразить их на диаграмме. Это бизнес-логика? Да и нет. Это логика пользовательского интерфейса? Да и нет. Есть серая зона: вид логики, своего рода пользовательский интерфейс. Здесь MVVM (и т. П.): Вы добавляете слой между бизнесом и презентацией, который предназначен только для этой серой зоны.

Для MVVM: Вид - это вид, это уровень презентации. И ViewModel - это серая зона, которая не является ни настоящей презентацией, ни реальной бизнес-логикой, а клеем между ними. Модель является моделью, это бизнес-логика . Его можно было бы даже написать, не зная, что он будет использоваться в приложении WPF (теоретически). И может быть бизнес-логика, которая даже не является моделью в значении MVVM, потому что это вовсе не интерфейс.

Ниже приведено все остальное с DAL внизу. DAL действительно не заботится о том, как бизнес-логика и презентация склеиваются вместе и выходят за рамки обсуждаемых шаблонов.

+0

* [...] Модель - это модель, это бизнес-логика. [...] * - Uhm, нет модели данных и только данных. Ну да, вы должны иметь возможность загружать данные, но, как правило, вам не нужна сложная логика. Pls, посмотрите [здесь] (http://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090102). – DHN

+0

* [...] И ViewModel - это серая зона, которая не является ни настоящей презентацией, ни реальной бизнес-логикой, а клеем между ними. [...] * - Нет, виртуальная машина - это бизнес-логика, отражающая его состояние в свойствах. Представление интерпретирует эти свойства для визуализации. – DHN

+0

Damnit, я забыл о том, что люди стали религиозными на эту тему ... – Marc

1

Архитектурно, я бы сказал, что MVC, MVP и MVVM - это уровень презентации. Точка зрения между каждыми компонентами являются:

  1. Посмотреть

    Это очень ясно, что он относится к презентации слоя.Не обсуждение этого

  2. Контроллер/Презентация/View Model

    Если снять многоуровневый принципал, это бизнес-уровень. Похоже, что этот образец дизайна был изобретен без какой-либо связи с N-Tier.

    Controller имеет использование Session и HttpContext. Это зависит от сети. Согласно принципалу N-Tier, BLL не должен знать какой-либо пользовательский интерфейс. Поэтому он идет для уровня представления.

    Presentation имеет события/обработчики событий/делегации и некоторые данные, специфичные для пользовательского интерфейса. (CMIIW, я не слишком свободно владею MVP). Поэтому он идет для уровня представления.

    Как и другие, ViewModel довольно сложно классифицировать как уровень представления. Тем не менее, я считаю, что лучше разместить в уровне презентации. В моем опыте использования WPF иногда мне нужно использовать специальные объекты MVVM, такие как ObservableCollection и INotifyPropertyChanged и ICommand, чтобы принудительно обновить привязку данных. Иногда необходимо, чтобы ViewModel получил доступ к настраиваемому состоянию сеанса, например, к логину и т. Д. В других случаях вам нужно указать некоторые параметры, специфичные для пользовательского интерфейса, такие как цвет шрифта и т. Д. Этого можно избежать, если обработать логику в представлении, однако Я считаю, что это проще сделать в ViewModel.

    С другой стороны, использование MVVM не позволяет использовать шаблон Service-Repository.

  3. Модель

    Если взять N-Tier вне от В.- модели, это модель сущность. Он описан в Asp.Net MVC, где модель будет использоваться в представлении как контейнер для данных. Однако, если вы принимаете во внимание N-Tier, то это бизнес-уровень, в который вы вставляете/обновляете/удаляете операции с данными, а логика для него остается.

+0

@Fendy .. hi .. насколько мой знания. все выше структуры архитектуры находятся в пределах уровня представления. Уровень представления затем делится на другие 3 уровня. Модель представляет собой набор классов, представляющих данные, поступающие от служб или базы данных .View - это код, соответствующий визуальному представлению данных как это видно и взаимодействует с пользователем .ViewModel служит как клей между представлением и моделью. Он обертывает данные из Модели и делает их дружественными для представления и изменения представления. –

+1

Если вы снимете принцип N-уровня, то да. Если вы включите его, то и «Просмотр», и «Контроллер» можно рассматривать только как «Презентация». Для ViewModel это особый случай. Хотя вы можете считать его «клеем», я не думаю, что это лучшее место для размещения бизнес-логики. Возможно, я ошибаюсь, но я понимаю, что там сложно разместить Service-Repository. – Fendy

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