Архитектурные модели, такие как MVC
, MVVM
, MVP
используются только в уровне презентации ?.
Можем ли мы использовать уровень бизнес-логики или уровень доступа к данным?
Я раньше думал, что Presentation Tier
is View
; BusinessLogic Tier
является Controller/Viewmodel
и Data Access Layer
является Model
.
, пожалуйста, проясните это.Application Architechture MVC, MVVM и т. Д.
ответ
Упомянутые вами узоры предоставляют концепции для объединения деловых и презентационных уровней. Учитывая классическую архитектуру три яруса с уровнями вы упомянули: доступ Data Layer, Business Logic, Presentation Layer, затем MVVM
, MVC
, MVP
обеспечивают концепции для сочетания уровня представления и бизнес-логики. Поскольку основная идея заключается в свободной связи между ними, чтобы как можно больше избежать логических зависимостей между двумя слоями, я бы подумал о них как о каком-то посреднике (по смыслу слова, а не о шаблоне) или о клеве между ними ,
Позвольте мне прояснить это для MVVM, образцовым:
Вы можете написать полный уровень представления в WPF без использования MVVM
. Точно так же вы можете написать бизнес-логику, не зная понятия MVVM
. Вам вообще не нужны ViewModels для создания рабочего приложения.
Но: У вас нет возможности четко отделить проблемы представления/пользовательского интерфейса и фактической логики, которая выполняет задачи, на которые написано ваше программное обеспечение. Граница между двумя нечеткая в реальном мире: вы вычисляете данные, теперь вы хотите преобразовать данные, чтобы отобразить их на диаграмме. Это бизнес-логика? Да и нет. Это логика пользовательского интерфейса? Да и нет. Есть серая зона: вид логики, своего рода пользовательский интерфейс. Здесь MVVM
(и т. П.): Вы добавляете слой между бизнесом и презентацией, который предназначен только для этой серой зоны.
Для MVVM: Вид - это вид, это уровень презентации. И ViewModel - это серая зона, которая не является ни настоящей презентацией, ни реальной бизнес-логикой, а клеем между ними. Модель является моделью, это бизнес-логика . Его можно было бы даже написать, не зная, что он будет использоваться в приложении WPF (теоретически). И может быть бизнес-логика, которая даже не является моделью в значении MVVM, потому что это вовсе не интерфейс.
Ниже приведено все остальное с DAL внизу. DAL действительно не заботится о том, как бизнес-логика и презентация склеиваются вместе и выходят за рамки обсуждаемых шаблонов.
Архитектурно, я бы сказал, что MVC
, MVP
и MVVM
- это уровень презентации. Точка зрения между каждыми компонентами являются:
Посмотреть
Это очень ясно, что он относится к презентации слоя.Не обсуждение этого
Контроллер/Презентация/View Model
Если снять многоуровневый принципал, это бизнес-уровень. Похоже, что этот образец дизайна был изобретен без какой-либо связи с N-Tier.
Controller
имеет использование Session и HttpContext. Это зависит от сети. Согласно принципалу N-Tier, BLL не должен знать какой-либо пользовательский интерфейс. Поэтому он идет для уровня представления.Presentation
имеет события/обработчики событий/делегации и некоторые данные, специфичные для пользовательского интерфейса. (CMIIW, я не слишком свободно владею MVP). Поэтому он идет для уровня представления.Как и другие,
ViewModel
довольно сложно классифицировать как уровень представления. Тем не менее, я считаю, что лучше разместить в уровне презентации. В моем опыте использования WPF иногда мне нужно использовать специальные объекты MVVM, такие какObservableCollection
иINotifyPropertyChanged
иICommand
, чтобы принудительно обновить привязку данных. Иногда необходимо, чтобыViewModel
получил доступ к настраиваемому состоянию сеанса, например, к логину и т. Д. В других случаях вам нужно указать некоторые параметры, специфичные для пользовательского интерфейса, такие как цвет шрифта и т. Д. Этого можно избежать, если обработать логику в представлении, однако Я считаю, что это проще сделать в ViewModel.С другой стороны, использование MVVM не позволяет использовать шаблон Service-Repository.
Модель
Если взять N-Tier вне от В.- модели, это модель сущность. Он описан в Asp.Net MVC, где модель будет использоваться в представлении как контейнер для данных. Однако, если вы принимаете во внимание N-Tier, то это бизнес-уровень, в который вы вставляете/обновляете/удаляете операции с данными, а логика для него остается.
@Fendy .. hi .. насколько мой знания. все выше структуры архитектуры находятся в пределах уровня представления. Уровень представления затем делится на другие 3 уровня. Модель представляет собой набор классов, представляющих данные, поступающие от служб или базы данных .View - это код, соответствующий визуальному представлению данных как это видно и взаимодействует с пользователем .ViewModel служит как клей между представлением и моделью. Он обертывает данные из Модели и делает их дружественными для представления и изменения представления. –
Если вы снимете принцип N-уровня, то да. Если вы включите его, то и «Просмотр», и «Контроллер» можно рассматривать только как «Презентация». Для ViewModel это особый случай. Хотя вы можете считать его «клеем», я не думаю, что это лучшее место для размещения бизнес-логики. Возможно, я ошибаюсь, но я понимаю, что там сложно разместить Service-Repository. – Fendy
- 1. Application & Database architechture
- 2. asp.net mvc, IIS, потоки и т. Д.
- 3. Контроллер внутри MVC architechture
- 4. MVC architechture views and controller
- 5. Переходим ли мы назад, используя фреймворк JavaScript MVC (MVVM), такой как Backbone.js, Angular и т. Д.?
- 6. ASP.NET MVC, слои, модели, репозитории и т. Д.
- 7. Application Framework для интеграции ASP.NET MVC и MVVM
- 8. Java SOAP Server, который может быть развернут в Tomcat, JBoss, Geronimo и т. Д. И т. Д. И т. Д.
- 9. MKNetworkKit/NSURLConnection и т. Д.
- 10. События, правила и т. Д.
- 11. Идентификационные ошибки и т. Д.
- 12. clojure.lang и т. Д. Api
- 13. Больше путей и т. Д.
- 14. Generics, ToArray и т. Д.
- 15. Are + =, | =, & = и т. Д. Атомный?
- 16. ошибки R.Java и т. Д.
- 17. Horde_Text_Diff_Renderer Цвета и т. Д.
- 18. Интерфейс/шаблон и т. Д.
- 19. TextWatchers, OnClickListeners и т. Д.
- 20. Notepad ++ indentations и т. Д.
- 21. Golang и т. Д. Panic
- 22. Включает ли Kendo структуру MVC, обработчики данных и т. Д.?
- 23. MVC 6 WebApi SSO Credentials (FB, Google и т. Д.)
- 24. MVC 2: Html.TextBoxFor и т. Д. В VB.NET 2010
- 25. MVC 3, после вставки, перед обновлением и т. Д.
- 26. Проверка изображения mime, size и т. Д. В MVC
- 27. Веб-службы, WCF и т. Д.
- 28. ASP.NET MVC маршрутизации и статические данные (т. Е. Изображения, скрипты и т. Д.)
- 29. ASP.Net MVC и MVVM
- 30. Сессия и т. Д. В сервлетах Java
* [...] Модель - это модель, это бизнес-логика. [...] * - Uhm, нет модели данных и только данных. Ну да, вы должны иметь возможность загружать данные, но, как правило, вам не нужна сложная логика. Pls, посмотрите [здесь] (http://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090102). – DHN
* [...] И ViewModel - это серая зона, которая не является ни настоящей презентацией, ни реальной бизнес-логикой, а клеем между ними. [...] * - Нет, виртуальная машина - это бизнес-логика, отражающая его состояние в свойствах. Представление интерпретирует эти свойства для визуализации. – DHN
Damnit, я забыл о том, что люди стали религиозными на эту тему ... – Marc