`
az7772010
  • 浏览: 203292 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

三层架构与MVC的区别

 
阅读更多

这几天学习三层架构和MVC,因为刚刚接触,前几天感到非常的困惑,从网上找了N多资料,看了N多人的看法,也浏览了几本书和视频,这几天稍微有了一点头绪。但是每个人都有自己的看法,甚至有的人的看法在有些人看来都是错误的(我也觉得有的人的看法是错误的),下面谈谈我对他们的理解,希望大家可以指正。

<wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr> 首先说三层架构,即:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。每一层都有自己的职责,完成不同的任务,尽量减少不同层之间的交流,所有内聚性得到了大大的降低。下面是我对百度百科中的图加工之后的,很形象的表达了三层之间的关系。它就像一个夹心饼干,最上层的饼干是一个外表,最下层的饼干起到了不可或缺的支撑作用,中间的奶油将上下层连接起来,完成它们的交互作用。</wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><img style="pADDinG-riGHT: 0px; pADDinG-LeFT: 0px; pADDinG-BoTToM: 0px; MArGin: 0px; WiDTH: 367px; BorDer-Top-sTYLe: none; pADDinG-Top: 0px; BorDer-riGHT-sTYLe: none; BorDer-LeFT-sTYLe: none; HeiGHT: 317px; BorDer-BoTToM-sTYLe: none" alt="\" src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src="http://www.2cto.com/uploadfile/2011/1007/20111007025101509.gif" title="三层架构与MVC的区别"></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr></wbr>

<wbr></wbr>

<wbr><wbr><wbr><wbr> 那么三层的到底都是做什么的呢?</wbr></wbr></wbr></wbr>

1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。

2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。

3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。

<wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr> 三层是将简单的问题复杂化,使用三层做过项目的朋友都知道用三层架构的项目比不用三层的代码量更加庞大,那还为什么还要分层呢?</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr>那就说说三层的优点:<wbr><br style="pADDinG-riGHT: 0px; pADDinG-LeFT: 0px; pADDinG-BoTToM: 0px; MArGin: 0px; pADDinG-Top: 0px"> 1.解耦。上一层只依赖于下一层,如果测试下一层没有问题,那么问题就只可能出现在本层了。便于发现和改正BUG。<wbr><br style="pADDinG-riGHT: 0px; pADDinG-LeFT: 0px; pADDinG-BoTToM: 0px; MArGin: 0px; pADDinG-Top: 0px"> 2.简化复杂问题。就比如tcpip协议的四层模型或OSI七层模型,各层分工明确,将一个复杂问题简化了。<br style="pADDinG-riGHT: 0px; pADDinG-LeFT: 0px; pADDinG-BoTToM: 0px; MArGin: 0px; pADDinG-Top: 0px"> 3.便于系统维护/升级。各层间通过接口解耦,接口与实现分离,从而可以非常方便的替换掉实现,或者升级实现等。<wbr><br style="pADDinG-riGHT: 0px; pADDinG-LeFT: 0px; pADDinG-BoTToM: 0px; MArGin: 0px; pADDinG-Top: 0px"> 4.逻辑复用。例如原来基于B/S开发的程序现在要改成C/S,那么只要业务层的接口没有改变,那么业务层和数据层都可以直接复用。在如,只要数据访问层接口不变,那么使用便可以有对不同数据库的实现。<wbr><br style="pADDinG-riGHT: 0px; pADDinG-LeFT: 0px; pADDinG-BoTToM: 0px; MArGin: 0px; pADDinG-Top: 0px"> 5.便于团队开发。只要各层接口在开发前规定好,那么各层可以独立开发,进化或维护。<wbr><br style="pADDinG-riGHT: 0px; pADDinG-LeFT: 0px; pADDinG-BoTToM: 0px; MArGin: 0px; pADDinG-Top: 0px"> 6.方便部署。将各层开发成组件,则可以独立部署。</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr></wbr>

<wbr><wbr><wbr><wbr> 其实分层也不一定只是分三层,如果你愿意的话你可以分得更多,分层分得少得话就和不分一样了,分得多的话软件的复杂性相应的也会增加,对别人来说也就不好理解了,同样也就不容易维护了。容易维护的产品必定是容易理解的,维护只是一个附带的产物罢了。</wbr></wbr></wbr></wbr>

<wbr></wbr>

<wbr></wbr>

<wbr><wbr><wbr><wbr> 多分层说了这么多了,下面说说MVC吧。其实MVC和三层不是一种东西,很多朋友都将二者混在了一起,没有真正的弄清二者之间的区别,它们确实也非常的相似,但是不是一种东西,就像让你比较社会主义制度和欧洲联盟一样。</wbr></wbr></wbr></wbr>

<wbr></wbr>

<wbr><wbr><wbr><wbr><wbr>MVC是"Model-View-Controller"的缩写,中文翻译为"模型-视图-控制器"。View就是界面视图,所以我们容易和三层架构相混淆。三层架构为了各司其责,每个人都只顾自己的那点事,不关心别人是怎样实现的,而它们之间相互联系的部分谁都不愿意干,所以在它们中间(UI层和BLL层之间)就应用到了MVC,就像下面老赵(微软高级讲师,赵劼)的这张图所表达的含义一样。</wbr></wbr></wbr></wbr></wbr>


<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><img style="pADDinG-riGHT: 0px; pADDinG-LeFT: 0px; pADDinG-BoTToM: 0px; MArGin: 0px; WiDTH: 630px; BorDer-Top-sTYLe: none; pADDinG-Top: 0px; BorDer-riGHT-sTYLe: none; BorDer-LeFT-sTYLe: none; HeiGHT: 329px; BorDer-BoTToM-sTYLe: none" alt="\" src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src="http://www.2cto.com/uploadfile/2011/1007/20111007025103170.gif" title="三层架构与MVC的区别"></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr></wbr>

<wbr><wbr><wbr><wbr> 以上都是仅代表我个人的看法,非常诚恳的希望大家提出不同的看法和意见</wbr></wbr></wbr></wbr>

摘自:许德鹏的专栏

分享到:
评论

相关推荐

    UML图设计模式、三层架构、MVC.EAP

    UML图设计模式、三层架构、MVC.EAP

    三层架构和MVC模式区别

    三层架构和MVC模式区别

    三层架构与MVC.pdf

    三层架构与MVC.pdf

    MVC三层架构

    MVC三层架构基础介绍简单来说,Design Patten 就是一个常用的方案。 在我们的开发过程中,经常会遇到一些相同或者相近的问题,每次我们都会去寻找一个新的解决方法,为了节省时间提高效率,我们提供一些能够解决这些...

    C#三层架构的MVC项目源码

    本程序一个基于三层架构的MVC模式应用的完整示例项目源码,基于Asp.net 3.5开发, 结构更简洁,提供更多有效的示例源码参考。 方便用户更好的理解和使用该架构进行开发,配合动软.Net代码生成器,可以使开发效率...

    三层架构和MVC的区别和联系

    简单地解释了什么是三层架构,什么是MVC,用图解的方式描述了二者的区别和联系

    MVC模式与三层架构区别

    清楚透彻地为你解答什么是mvc模式。三层架构,区别MVC与三层架构区别。 更好地运用MVC

    AMX三层架构(MVC)家庭财务管理系统源码

    AMX三层架构(MVC)家庭财务管理系统源码 源码描述: 家庭财务管理系统: 典型的MVC三层架构编写,代码层次清晰,是学习三层架构以及工厂模式,反射的轻量级DEMO学习实例。 主要功能包含: 1、财务项目管理、家庭...

    MVC 三层架构示例

    MVC 三层架构示例 实例 .NET C# MVC 三层架构示例 MVC 三层架构示例 MVC 三层架构示例

    MVC与三层架构

    MVC与三层架构的区别以及三层架构和mvc的搭建过程

    三层结构与MVC

    还在纠结三层结构和MVC的区别吗,本文档详细介绍了三层结构与MVC的区别和联系,让你面试不在纠结

    ASP.NET MVC 三层架构与mvc实例

    一个MVC开发模式和三层架构相结合的asp.net bbs实例,数据库是sql。

    一个三层架构的MVC代码

    一个三层架构的MVC代码,资料是从网上看的,自己调试出来的。

    asp.net MVC三层架构

    Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。 通常模型对象负责在数据库中存取数据。 View(视图)是应用程序中处理数据显示的部分。...这个适合刚接触三层架构的来学习,比较简单。

    三层架构+MVC+Linq to SQL 入门实例,

    三层架构+MVC+Linq to SQL 入门实例 本程序主要通过一个产品的添加、修改及用户注册登录等来演示MVC的使用,主要针对 MVC和三层架构入门人员 数据实现了列表并分页 App_Data下为Sql2005数据库,采用的是|Data...

    三层架构+MVC+Linq to SQL 实例

    三层架构+MVC+Linq to SQL 实例 本程序主要通过一个产品的添加、修改及用户注册登录等来演示MVC的使用,主要针对 MVC和三层架构入门人员 数据实现了列表并分页

    MVC+三层架构+EF的增删改查操作(连接数据库的).rar

    一个MVC+三层架构+EF的增删改查操作(连接数据库的)的demo可以借鉴学习一下mvc+EF的增删改查操作.主要方便自己以后用的时候来看一下复习,温故而知新。

    三层架构+MVC+Linq to SQL 入门实例.rar

    三层架构+MVC+Linq to SQL 入门实例.rar VS2010

    mvc三层架构应用案例简单代码

    mvc三层架构应用案例简单代码 详见其中brand-demo 技术:mybatis+maven+mysql+JSP+HTML+servlet+JS

Global site tag (gtag.js) - Google Analytics