MVC模式(Model模型-View视图-Controller控制器)是软件工程中的一种软件架构模式。它把软件系统分为三个基本部分:(Model模型),(View视图)和(Controller控制器)。
- (控制器Controller)- 负责转发请求,对请求进行处理。
- (视图View) - 界面设计人员进行图形界面设计。
- (模型Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。
Java
Java 平台企业版 (J2EE)
和其他的各种框架不一样,J2EE为模型对象(Model Objects)定义了一个规范。
-
视图(View)
- 在J2EE应用程序中,视图(View)可能由Java Server Page(JSP)承担。生成视图的代码则可能是一个 servlet的一部分,特别是在客户端服务端交互的时候。
-
模型(Model)
- 模型则是由一个实体Bean来实现。
Java Swing
Swing是一个标准的MVC结构. ComponentUI代表View, 负责描画组件. 组件尤其Model层, 比如JTextField的Document, JTable的TableModel, JTree的TreeModel等等. 而Control可能不是很明显, 我们或许可以简单的将其Event机制看作一个Swing团队开发给开发者的Controller.
作为Java开发者, 如果想理解MVC的结构, 学习Swing的确是个不错的选择.
.NET
ASP.NET
在ASP.NET中,针对视图(View)和控制器(Controller)的模式没有被很好地定义。而模型(Model)则留给开发者去设计。
-
(View视图)
- ASPX和ASCX文件被用来处理视图的职责。在这个设计中视图实际上是从控制器继承而来。这个和Smalltalk的实施有所不同,在Smalltalk中不同的类都有指针互相指向对方.
-
(Controller控制器)
- 控制器的职责被分割成两部分。事件(Event)的产生和传输是框架的一部分,更明确的说是Page和Control两个类。而事件的处理则在分离的代码中实现。
-
(Model模型)
- ASP.NET 不严格需要一个模型。开发者可以自行选择创建一个模型类,但是很多人选择放弃这一步,直接把事件处理放在控制器里处理任何计算、数据保存等等。但用模型来包含商业逻辑和数据存取是可实现的。
ASP.NET MVC
針對原本ASP.NET對於MVC的架構支援的不足,微软官方提供了ASP.NET MVC框架。于2009年3月19日正式发布,新的2.0版本也在测试中。
在新的ASP.NET MVC框架中,表现层与业务逻辑层的关系进一步剥离,但是由于正处于发布初期,因此尚有许多问题没有很好的解决。
Windows Forms
在WinForms中,这个针对视图(View)和控制器(Controller)的模式已经很好的定义好的。而模型(Model)则留给开发者去设计。
-
(View视图)
- 由Form或者Control类继承来的一个类处理视图的职责。在WinForm这个例子中视图和控制器被编译在同一个类中,这个和ASP.NET不同。
-
(Controller控制器)
- 控制器的职责被分割成三部分。事件(Event)的产生和传输是操作系统的一部分。在.Net框架中Form和Control类将不同的事件转发给相应的事件处理器。而事件的处理则在分离的代码中实现。
-
(Model模型)
- 就像ASP.NET一样,WinForm不严格需要一个模型。开发者可以自行选择创建一个模型类,但是很多人选择放弃这一步,直接把事件处理放在控制器里处理任何计算、数据保存等等。也就是说用模型来包含商业逻辑和数据存取。