文档章节

初识MVC与三层架构

白志华
 白志华
发布于 2015/10/18 10:56
字数 720
阅读 19
收藏 0

MVC 即 Model View Controller 。mvc是一种很好的设计模式的综合应用。其中

M 即Model(模型层),主要负责处理业务逻辑以及与数据库的交互。

V 即View(视图层),主要用于显示数据和提交数据。

C 即Controller(控制器),主要用于接受请求并控制请求转发。

 

三层架构,是最基本的项目分层结果。秉承“高内聚,低耦合”的思想,将整个业务应用划分为:UI层(表示层)、BLL(业务逻辑层)、DAL层(数据访问层)。系统的主要功能和业务逻辑在BLL层进行处理。

UI:表示层,也叫做用户界面层,用来接受用户的请求,以及数据返回。。可以是WEB、也可以是WinForm。

BLL:业务逻辑层,主要负责对数据层的操作,对数据业务逻辑的处理。

DAL:数据访问层,直接操作数据库,包括增、删、改、查、备份、还原等操作。

 

从二者的区别,我没有在网上找到一个定论,主要观点以下有几个:

① MVC是一种复合设计模式,而三层是一个软件架构。

软件架构是用接口来实现的,而设计模式则是一种设计思想、设计理念的升华,也可以算做一种解决方案。一个系统一般只有一个软件架构,而可以有多个设计模式,因为设计模式是可以复用的。

② 在三层架构中没有定义Controller的概念,而MVC中也没有将业务的逻辑访问看成两个层。当然了。在三层中也提到了Model,但是三层架构中Model(Entry)的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是以实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。  

三层结构模式又可归于部署模式,MVC可归于表示模式。

④三层架构划分为:View(UI)、BIZ(BLL)、ADO(DAL)、Entity(Model)、Controller。而MVC把 BIZ(BLL)、ADO(DAL)、Model(Entity) 统一称之为 模型(MODEL),得到:View、Controller、模型(MODEL) 三层。

       我认为,二者并不是互斥的,相反,MVC和多层应用软件结构有着异曲同工之妙,而且可以相互结合进行开发。MVC中的每一个环节都可以采用多层应用软件结构进行设计。而多层应用软件中的每一层又可以采取MVC来进行设计。所以说​可以是:M层对应于BLL和DAL。V对应于UI,而C则对应于层与层之间的联系。也可以M对应于DAL,C对应于BLL,而V仍然对应于UI。 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

本文转载自:http://blog.csdn.net/xiaoxian8023/article/details/6948154

共有 人打赏支持
白志华
粉丝 31
博文 265
码字总数 57524
作品 0
长沙
程序员
私信 提问
.NET架构设计、框架设计系列文章总结

从事.NET开发到现在已经有七个年头了。慢慢的可能会很少写.NET文章了。不知不觉竟然走了这么多年,热爱.NET热爱c#。突然想对这一路的经历进行一个总结。 是时候开始下一阶段的旅途,希望这些...

王清培
2016/11/13
0
0
mvc与三层结构终极区别

注:本文章内所有内容都来自互联网,本人主要是起了一个收集的作用 http://www.cnblogs.com/zhhh/archive/2011/06/10/2077519.html 又看到有人在问三层架构和MVC的关系,感觉这种问题有点教条...

长平狐
2012/11/12
10.4K
0
L2TP-VPN通用原理取证及在华为防火墙上的实施

L2TP-VPN通用原理取证及在华为防火墙上的实施 课程目标: ü 系列VPN课程的起步,通过该课程识别VPN的典型架构 ü 完整的理解并取证L2TP的工作原理及各种配置方案 ü 为理解其它VPN比如:IPS...

kingsir827
2016/04/06
0
0
三层架构与MVC

三层架构与MVC有区别,但联系紧密。 他们的作用都是为了降低系统耦合度。 三层架构 三层架构 视图层(View) 存放接收用户提交请求的代码 服务层(Service) 存放系统的业务逻辑代码 持久层(Dao)...

stormxing
2017/12/11
0
0
浅谈MVC与三层架构

首先给大家引入下MVC的概念: MVC(Model View Controller)模型、视图以及控制器,它是一种较为广泛应用的结构设计模式。 模型:就是在MVC设计模式中需要被显示的数据。在通常情况下,该模型...

邵鸿鑫
2014/11/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

用any-loader封装jQuery的XHR —— 随便写着玩系列

哎,都说没人用JQuery啦,叫你别写这个。 其实我也是好高骛远使用过npm上某个和某个很出名的XHR库,嗯,认识我的人都知道我喜欢喷JQ,以前天天喷,见面第一句,你还用JQ,赶紧丢了吧。但我也...

曾建凯
今天
4
0
聊聊storm的AggregateProcessor的execute及finishBatch方法

序 本文主要研究一下storm的AggregateProcessor的execute及finishBatch方法 实例 TridentTopology topology = new TridentTopology(); topology.newStream("spout1", spout......

go4it
今天
3
0
大数据教程(7.5)hadoop中内置rpc框架的使用教程

博主上一篇博客分享了hadoop客户端java API的使用,本章节带领小伙伴们一起来体验下hadoop的内置rpc框架。首先,由于hadoop的内置rpc框架的设计目的是为了内部的组件提供rpc访问的功能,并不...

em_aaron
今天
5
0
CentOS7+git+github创建Python开发环境

1.准备CentOS7 (1)下载VMware Workstation https://pan.baidu.com/s/1miFU8mk (2)下载CentOS7镜像 https://mirrors.aliyun.com/centos/ (3)安装CentOS7系统 http://blog.51cto.com/fengyuns......

枫叶云
昨天
4
0
利用ibeetl 实现selectpicker 的三级联动

1. js 直接写在html页面上面,ibeetl 就可以动态地利用后台传上来的model List ,不需要每次点击都要ajax请求后台 2. 使用selectpicker 的时候,除了对selecct option的动态处理后,还需要 $("#...

donald121
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部