最近在开发小组在研究:BS项目中是利用‘MVC框架’还是继续沿用‘三层’的问题。
由于以前的.NET项目大多数都是利用三层开发的,所以大多数人都能够对三层进行熟练地运用。而项目的开始我们也曾听说过MVC的概念,但是因为没有项目经验的原因,所以总是停留在理论层次的比较。
在后期的DRP项目中,了解到Model1和Model2模型,而Model2模型就是MVC的应用。DRP中我们采用jsp做View层用于显示;Servlet做Controller用于取得表单参数、调用业务逻辑、转向页面;
同样都是MVC的理念,在Java和.NET中却有着不同的实现方式。(不作为本文的重点)
本文作为.NET MVC系列文章中的第一篇,主要用于介绍MVC与三层之间的关系,后续博客将持续展开……
MVC只是一种思想,可以应用于各种平台。就是把一个应用程序分为三个组件,每个组件都有相应的职责:视图View、控制器Controller、模型Model。
MVC模式的两种理解:一种是表现模式(在ASP.NET的MVC中,把Model理解为ViewModel),另一种是架构模式(把Model模式理解为业务逻辑层和数据访问层的综合体)。这只是我目前初期阶段的理解。有不同见解的可以通过邮件或者评论的方式和我交流。
M:Model。主要是存储或出具数据的组件。其实就是实现业务逻辑层对实习类相应的操作,如:CRUD,它包括数据、验证规则、数据访问、业务逻辑等应用程序信息。ViewModel:视图模型
V:View。是用户接口层组件。将Model中的数据展示给用于。ASPX和ASCX文件被用来处理视图的职责。
C:Controller。处理用户交互。从model中获取数据并将数据传给指定的view。
接下来看一些MVC与三层之间千丝万缕的关系:
从架构角度对比:MVC与三层
MVC架构综合模型:MVC是怎么实现交互的?
MVC架构综合模型的处理流程(对上图的更进一步解释):
执行的流程:
- 用户请求到达控制器
- 控制器处理用户的交互数据,并调用业务逻辑层处理数据
- 业务逻辑层通过数据库访问层对数据库做持久化处理
- 数据访问层返回处理完后的数据
- 业务层把业务数据交给UI层的控制器
- 控制器把业务数据封装为ViewModel
- 控制器把ViewModel的数据交给View进行展示
- 视图把数据转成视图额呢绒交给用户浏览
之前的项目大多都采用三层架构来实现,所以对三层的开发流程已经形成了较为清晰的认识。而对于三层与MVC之间的关系,也常常容易混淆开发人员的视听,总有一种剪不断理还乱的感觉。
相信经过本文的三张图形对比,您已经能够更加清晰地认识到了MVC架构以及MVC与三层之间的对应关系。接下来的任务就是通过项目实战加深MVC的理解了。
(本文是建立在对三层了解的基础上进行论述的,对于三层部分的理解,这里不做过多赘述)
【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对比