我一直在MVC配置中使用Zend Framework,在rails上阅读ruby并计划在Python中检查其他MVC框架(Django?)...我真的很喜欢它隔离逻辑的某些部分,安全性和验证。但是在使用它仅仅1年之后我读了一个答案here说几乎每个人都有错误的MVC定义,这让我想知道...... MVC的正确定义是什么?我在哪里可以阅读关于模式和标准实现的内容?
更新:我承诺我们都知道BASIC定义(模型是一个控制器和一个视图,控制器上的动作在使用模型制作了一些信息后会带到一些信息)我很想知道你认为每个人都知道的定义是什么以及为什么它是错的(也许这会向每个人解释哪里可能存在错误,意见,当然你对此有什么看法)
答案 0 :(得分:20)
我发现人们对MVC的理解最大的错误是他们认为这种模式包含的内容比它更多。更具体地说,人们通常认为:
这通常是在较小的应用程序中工作的方式,但是现实MVC是一种从演示代码中分离业务代码的方法。该模型完成所有真正的业务工作。视图提供外观,控制器将一个映射到另一个。
答案 1 :(得分:14)
参见本书的第14章:企业应用程序架构的模式,作者:Martin Fowler。
关于MVC的部分以:
开头“模型视图控制器(MVC)是其中之一 报价最多(也是最错误引用) 周围的图案。它始于一个 由Trygve开发的框架 Reenskaug用于Smalltalk平台 在20世纪70年代后期。从那时起它就有了 在大多数UI中发挥了重要作用 框架和思考 UI设计。“
它还说:
“当我想到MVC时,我看到两个 主要分离:分离 从模型和 将控制器与控制器分开 图。
...
这些分离 演示和模型是其中之一 最重要的设计原则 软件,也是唯一一次 不应该遵循它是非常简单的 模型没有真实的系统 无论如何,它的行为。只要你 你应该得到一些非可视逻辑 应用分离。不幸的是,一个 很多UI框架都能实现 困难,而那些不困难 经常在没有分离的情况下教授。
视图和控制器的分离 不太重要,所以我只是 建议在真的时候这样做 很有帮助。对于富客户端系统,那 尽管如此,最终几乎没有 它在Web前端很常见 控制器被分离出来。最 这里的网页设计模式是 基于这个原则。“
答案 2 :(得分:3)
我相信Martin Fowler给出的here MVC定义。但是,您可能想要注意这样一个事实,即这些框架或多或少都有自己的调整。例如,由于其模板功能,像Django这样的框架更像是模型 - 模板 - 控制器。
答案 3 :(得分:2)
我相信同样的事情。至于我担心任何能够分离显示问题的事情,数据/业务对象及其控制(初始化,响应用户输入)都会获得MVC希望提供的好处。
目标是将这些项目移动到可重复使用的组件中,并能够交换不同的实现,并且能够单独测试各个部分。 IMO就是MVC的全部内容。
This是对MVC范例的一些历史和流行实现的非常好的写作。我们也应该在那里添加推荐用于WPF的Model - View - ViewModel模式。
答案 4 :(得分:2)
模型 - 视图 - 控制器模式提出了在软件开发中使用的三个主要组件或对象:
答案 5 :(得分:1)
MVC是三种ASP.NET编程模型之一。 MVC是使用MVC(模型视图控制器)设计构建Web应用程序的框架:Model表示应用程序核心(例如数据库记录列表)。视图显示数据(数据库记录)。
答案 6 :(得分:1)
该项目分为三个部分: