浅谈MVC分层架构中的层次
2015-12-23 21:56
501 查看
工作一年了,在工作中也完成了几个项目,但是都是由公司的架构师搭建好了整个项目的框架,我们在其中进行业务逻辑的开发。还没有真正完整的搭建过一个web项目,所以最近自己就动手搭建一个springmvc+struts2+mybatis的练手项目时,在这过程中更加深入的接触到了MVC分层架构,对整个系统中的几个分层也有了一定的新的认识。
其实按照用户请求的执行顺序应该从左向右依次为view-controller-model。
视图层view:用于展示数据,与用户进行交互。
控制层controller:用于分发控制到来的请求,并调用模型层与数据库进行交互,以及将数据返回给视图层展示。
模型层model:数据模型,它与数据库进行交互,进行CURD操作。
如下图:
![](http://img.blog.csdn.net/20151222220313067)
这里模拟一个用户查询和新增的请求。
当用户通过浏览器的web界面发起查询请求时,首先会被控制层controller分发,然后会调取相应的model层进行数据库查询。然后model层再将数据库查询到的数据返回给控制层,控制层再将其返回view层,view层web页面中进行显示。
![](http://img.blog.csdn.net/20151223212943953)
视图层view:用于展示数据,与用户进行交互。
控制层controller:用于分发控制到来的请求,并将请求分发给相应的业务层。以及将数据返回给视图层展示。
业务层service:业务处理,调用数据访问层与数据库进行交互。
数据访问层dao:它与数据库进行交互,封装了对数据库的CURD操作。
当请求来了,controller就会将相应的请求分发到相应的service层,在service层中再调用dao层进行数据库交互。这里的dao层其实就是之前的model层,封装了对数据库的操作。这样一来,就把业务处理逻辑从controller中分离出来,从而实现了解耦。
通过网上的了解,在有些项目中,其实也是没有完全按照分层进行架构,省略了service层,直接将业务逻辑与数据访问揉在了一起,这样其实是不便于扩展的,为了项目的架构清晰,易于管理,方便扩展,还是应该按照分层的架构来构建项目。
view-controller-model
这是在学校就接触到的概念,在正式加入程序员队伍之前,我对其的理解也只仅仅停留在字面意思,即模型层+视图层+控制层。但是逐渐通过工作的磨砺,现在已经对其有了比较清楚的认识。其实按照用户请求的执行顺序应该从左向右依次为view-controller-model。
视图层view:用于展示数据,与用户进行交互。
控制层controller:用于分发控制到来的请求,并调用模型层与数据库进行交互,以及将数据返回给视图层展示。
模型层model:数据模型,它与数据库进行交互,进行CURD操作。
如下图:
这里模拟一个用户查询和新增的请求。
当用户通过浏览器的web界面发起查询请求时,首先会被控制层controller分发,然后会调取相应的model层进行数据库查询。然后model层再将数据库查询到的数据返回给控制层,控制层再将其返回view层,view层web页面中进行显示。
view-controller-service-dao
以前,我一直认为可以直接在控制层就调用model层来进行数据库的交互。因为之前接触到的项目业务逻辑比较简单,所以直接在控制层就将很多工作都完成了。当我慢慢理解了MVC的分层架构后,我觉得这是不严谨的,耦合性太强了,违背了MVC的初衷,即解耦。所以随着MVC学习的深入,慢慢地又加入到了业务层service和数据访问层dao。那么上述的情景就可以有如下的表示:视图层view:用于展示数据,与用户进行交互。
控制层controller:用于分发控制到来的请求,并将请求分发给相应的业务层。以及将数据返回给视图层展示。
业务层service:业务处理,调用数据访问层与数据库进行交互。
数据访问层dao:它与数据库进行交互,封装了对数据库的CURD操作。
当请求来了,controller就会将相应的请求分发到相应的service层,在service层中再调用dao层进行数据库交互。这里的dao层其实就是之前的model层,封装了对数据库的操作。这样一来,就把业务处理逻辑从controller中分离出来,从而实现了解耦。
通过网上的了解,在有些项目中,其实也是没有完全按照分层进行架构,省略了service层,直接将业务逻辑与数据访问揉在了一起,这样其实是不便于扩展的,为了项目的架构清晰,易于管理,方便扩展,还是应该按照分层的架构来构建项目。
相关文章推荐
- 优化网站
- 超大规模系统架构设计的一般原则(最佳实践)
- 前端学习【各种网站地址】
- 发现一个可以在线运行JS代码的网站
- 关于简单网站后台攻防技术
- 【设计模式 2】设计模式的来源,及其相混淆的模型、框架、架构区别
- 【设计模式 2】设计模式的来源,及其相混淆的模型、框架、架构区别
- 网站首页内容该怎么规划?
- 腾讯分析系统架构解析
- 好书好网站积累着有空看
- 游戏开发令人拍案叫绝的小网站收藏
- 《近匠》Worktile王涛:典型MEAN架构下的团队协作工具
- 理解本真的REST架构风格
- 探索大型网站技术架构(一)
- 魅族应用商店云端架构实践
- 如何做好网站SEO优化
- 大型网站架构演化发展历程
- Kafka的整体架构
- 基于Dubbo框架构建分布式服务
- iOS 开发-教大家如何使用github客户端上传自己的代码到github网站