Par*_*rma 3 model-view-controller datacontext asp.net-mvc separation-of-concerns
今天在 ASP.NET MVC 上工作了一段时间,
一直在解决一个理论问题,
在 MSDN 上浏览了一些示例代码,
我读到了这样的内容
public class SomeController()
{
public ActionResult SomeAction(SomeModel model)
{
var dataContext = new SomeDataContext();
//basic CRUD operations on data context
//
}
}
Run Code Online (Sandbox Code Playgroud)
这里数据库显然是通过控制器访问的,理论上是不正确的,
这个例子或者我对模型和控制器的定义有问题吗?需要刷新更新
:-
或者有可能每个地方都有问题MSDNModels和ViewModels被认为是平等的
MVC 设计模式相当古老。它最初是为 Smalltalk-80 应用程序定义的,当时“网络”是两个在大学之间发送 ping 的人。从那时起它已经发展了很多。
MVC 设计模式背后的核心原则是关注点分离。该模式将表示与业务逻辑分开。表示层主要包含视图、控制器、模板、视图模型和表示器(取决于您使用哪种 MVC 风格的模式),而业务逻辑则结束于模型层。
模型层虽然没有在模式中严格定义,但在 ASP.NET MVC 中由服务和服务使用的所有结构(包括模型对象,更广为人知的领域对象)组成。
DataContext当您寻找基本的 MVC 教程时,在控制器中使用是很常见的。MVC 架构意味着大规模应用程序,在Hello-World示例中,完全实现的 MVC 架构看起来就像是臃肿。
为了简单起见,这些示例牺牲了代码分离。交互DataContext基本上是存储逻辑,这是模型层处理的任务之一。当在控制器中使用时,这意味着你的模型层已经开始在表示层中泄漏,最终会出现“胖控制器,瘦模型”的问题。
在现实世界的应用程序中,它将DataContext是处理模型层内持久性的结构的一部分。如果您选择手动编写它们,可能会作为数据映射器的一部分。
模型(我想在这种情况下你指的是域/模型对象)来自与 ViewModel 完全不同的应用程序层。
顾名思义,在 MVVM 模式中,ViewModel 取代了 Controller。ViewModel从模型层获取数据,然后将其转换为可供View使用的方式。
当您无法完全控制视图或/和模型层的行为时,最好使用此模式(如果您确实使用 MVVM)。例如:如果您受雇为 SAP 构建替代前端,或者视图实际上是某种形式的硬件设备,需要特定类型的输入。
| 归档时间: |
|
| 查看次数: |
8028 次 |
| 最近记录: |