模型视图控制器,每个单词代表什么

时间:2013-01-09 10:36:41

标签: model-view-controller

我已经搜索过这个答案,但看起来每个人都对此有不同的理解:(与3层/ 3层相比)

  

     

模型 - 业务逻辑

     

查看 - 演示逻辑

     

控制器 - 改变模型和视图的状态(基于使用输入)

     

其他写道:

  

“views = frontend(演示逻辑)

     

models = backend(数据访问层?)

     

控制器=前端和后端之间的粘合(中间层?   商业逻辑)“

如果我理解的话:

model-是业务逻辑层吗?

view-是表示层\ layer吗?

控制器 - ?

5 个答案:

答案 0 :(得分:2)

查看 =仅限输出和输出逻辑

模型 =数据相关的任何数据应来自模型

控制器 =连接View和Model并可以执行应用程序逻辑的东西

业务逻辑=进一步的业务逻辑,通常打包成类。

用户说给我acme.com/home 控制器说,我知道怎么处理/家哦是的我有一个homeController homeController说嘿我会从模型中获取一些东西或从类中调用一些业务逻辑然后把它放在视图可以访问它的地方(viewbag)这个位有时被称为applicationLogic homeController然后说好了我已经做了所有这些现在我很可能会给你一个观点 View在那里打招呼,并且可以从控制器为我们准备的视图包中输出任何内容

记住控制器控制一切,视图无所谓,这是一个简单的正确图表,许多图表是不同的,你可以说它对解释开放,但视图与模型对话的图表不是MVC imo。

MVC A simple MVC Diagram

答案 1 :(得分:2)

答案并不像看起来那么简单,因为MVC在不同的环境中意味着不同的东西。

经典MVC(Smalltalk,C ++,Java)

Classic MVC

  • 模型包含数据
  • 查看显示数据
  • 控制器更新数据并处理用户交互

Web应用程序中的MVC

MVC in Web Applications

  • 视图是呈现的HTML
  • Controller是渲染器/请求处理器
  • 模型保存数据并由渲染器/请求处理器使用

ASP.Net MVC中的MVC

MVC in ASP.Net MVC

  • 视图是呈现的HTML
  • ASP.Net堆栈和MVC堆栈处理请求和呈现
  • ASP.Net MVC View是渲染HTML的渲染说明
  • ASP.Net MVC Controller是一个软件组件,它从堆栈接收请求并使用ASP.Net MVC View生成呈现的HTML页面。
  • Model保存数据,由ASP.Net MVC Controller(也负责创建,例如使用服务或实体框架)和ASP.Net MVC View使用。

有关MVC(3)管道的完整视图,请参阅this document

答案 2 :(得分:0)

我倾向于按如下方式看待它:

模型:蓝图,主要是我的对象类

查看:用户将如何看待它,我如何呈现它

控制器:需要完成的任何计算,更改......它是View和Model之间的一个步骤。它操纵数据。

答案 3 :(得分:0)

我不确定还有一个意见会有所帮助,因为你听起来已经很困惑了。

但我认为MVC实际上是一个概念,回到Smalltalk时代,需要进行一些修改。

更现代的方法是从层面思考:

View --> Controller --> Service --> Persistence

View图层是向最终用户显示的HTML或移动视图页面。

ControllersView紧密相连。如果您更改View,则可能还需要更改Controller。它负责监听来自View的请求,验证和绑定输入参数,将它们传递给Services以完成用例,确定适当的下一个View,并将响应序列化回最终用户。

Service映射到用例并完成工作单元。它负责交易。它独立于View;即使Views发生变化,它也可能会存在。它是面向服务架构的基础。它应该以接口的形式开始,它允许您使用您喜欢的任何技术进行部署:EJB,SOAP或REST Web服务,XML-RPC等。

Persistence隐藏了其他人的数据库。它处理所有CRUD操作。

Model在所有图层之间浮动。这些是描述您正在解决的问题的对象(例如,银行的帐户,客户等)。

“图表”中的箭头是有意义的。它模仿了对象在这种安排中可能具有的包依赖性。 Persistence不了解Service; Service不了解Controller

这些应该是基于接口的,因此您可以在不影响客户端的情况下更改实现。

答案 4 :(得分:0)

他们是等级依赖的:

模型 - 原始数据模型,具有Controller的对象提取

Controller - 控制模型中数据的转换方式

视图 - 表示层,从Controller中提取数据使其变得漂亮。

使用XML,这是:

XML - > XSLT - > HTML