zoukankan      html  css  js  c++  java
  • [1] [转]软件架构之三层架构和MVC的关系

    注:本文章内所有内容都来自互联网,本人主要是起了一个收集的作用

     

    又看到有人在问三层架构和MVC的关系,感觉这种问题有点教条化了。因为它们都在逻辑上将应用程序划为三块,凑了一个数字3,就有人非要把它们联系到一起了。

      这两个东西我接触有几年了,有一点体会,表达一下:

      三层是三层,MVC是MVC,它们毫无关系的。

    三层是从整个应用程序架构的角度来分的三层(如果程序需要,还可以分多层)。

      三层是为了解决整个应用程序中各个业务操作过程中不同阶段的代码封装的问题,为了使程序员更加专注的处理某阶段的业务逻辑。

      比如将数据库操作代码封装到一层中,提供一些方法根据参数直接返回用户需要的相应数据,这样在处理具体的业务逻辑的时候,就不用关心数据的存储问题了。

    MVC是在应用程序(BS结构)的视图层划分出来的不同功能的几个模块。

      MVC主要是为了解决应用程序用户界面的样式替换问题,把展示数据的 HTML 页面尽可能的和业务代码分离。MVC把纯净的界面展示逻辑(用户界面)独立到一些文件中(Views),把一些和用户交互的程序逻辑(Controller)单独放在一些文件中,在 Views 和 Controller 中传递数据使用一些专门封装数据的实体对象,这些对象,统称为Models。

      只所以说MVC和三层毫无关系,是因为它们二者使用范围不同:三层可以应用于任何语言、任何技术的应用程序;而MVC只是为了解决BS应用程序视图层各部分的耦合关系。它们互不冲突,可以同时存在,也可根据情况使用其中一种。

     

     

     

    http://blog.csdn.net/beijiguangyong/article/details/7029257

    三层架构就是MVC!

    起初老师总说三层MVC,MVC三层架构……

    所以开始的时候脑子就一个概念:三层就是MVC,MVC就是三层架构。而且想想也合理啊,都是“三”。MVC是三个字母,三层架构也是“三”,理所应当的就对应上了。然后就这么一直“错”了很长时间。

    三层架构绝不是MVC!!

    后来学习了J2EE之后发现老师说的好像不对,MVC和三层架构不是一个东西。三层架构是界面层(UI)业务逻辑层(BLL)和数据访问层(DAL)构成的,而MVC是模型层(M)界面层(View)和控制层(Controller)构成的,而且他们之间也不对应。

    如果硬要给他们对应的话,那么三层架构中的UI对应MVC中的view(jsp),都是用于显示以及获取界面的数据;三层架构中的BLL层和DAL层对应MVC中的Model(javabean)层都是用于处理上层传递来的数据以及从数据库获取的数据的;MVC中的Controller(Servlet)最多算是三层架构中的UI的一部分,也就我们常说的是Servlet。

    如下图所示:

    顿时感到世界明朗了,对分层又深入了解了一步。

    其实三层架构和MVC还是一个东西!!!

    这几天一直在思考三层架构和MVC到底是个什么关系,老师为什么起初会放在一起说嘞?然后恍然大悟:其实三层架构和MVC是一样的!!!我们所看到的不一样只是表面上的不一样。核心的东西是一致的,那么什么是核心?

    答曰:分层,解耦!

    如果从解耦的角度来看三层架构和MVC其实他们是一致的,只不过划分的方法不一样罢了,就像上面的图所示。从这一点说他们可以说是一个东西。这就相当于我们看到馒头和面条一样,表面上看他们不一样(注意仅仅是表面)但是他们核心是一致的,都是面……

    知识的学习过程就要像老牛反刍一样,需要不断的加深认识,最终才能真正领悟

    对事物的认识是从感性到理性的,是一步一步的加深的,每一步的加深也许会推翻以前的自己,也许会更加赞同以前的自己。如果是推翻以前的自己那么代表对这个事物的认识发生了翻天地覆的变化,但是如果赞许以前的自己也并不代表自己的观点没有变化,往往表面上看起来一致的东西其实内核并一定是相同的。就像刚开始的时候认为三层架构和MVC是一个东西到最后同样是认为这两是一个东西,但是理解的层次绝对是不一样的。

    至于以后会不会再次推翻自己的观点我不晓得,只能说每次推翻都代表着进步,代表着理解的更深一层,所以我期望着下次的否定自己

     

     

    http://baike.baidu.com/view/687468.htm

    与MVC的区别  MVC(模型Model-视图View-控制器Controller)是一种设计模式,我们可以用它来创建在域对象和UI表示层对象之间的区分。

     

      同样是架构级别的,相同的地方在于他们都有一个表现层,但是他们不同的地方在于其他的两个层。

     

      在三层架构中没有定义Controller的概念。这是我认为最不同的地方。而MVC也没有把业务的逻辑访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。当然了。在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是以实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。

     

     

    http://topic.csdn.net/u/20090710/14/07f4447d-60c4-4b74-af1c-ea1b6e2e9ca7.html

    当然啊,你要明白三层架构的MVC的区别和联系:

    三层架构是最基本的项目分层结果,而MVC则是三层架构的一个变体,MVC是一种好的开发模式。首先你要明白MVC分别代表的是什么意思.
    M 即Model(模型层),主要负责出来业务逻辑以及数据库的交互
    V 即View(视图层),主要用于显示数据和提交数据
    C 即Controller(控制器),主要是用作捕获请求并控制请求转发

    三层:UI 界面层 BLL 业务逻辑层,DAL数据访问层,Model 实体层
    MVC中的的M 不是三层中的Model(实体层),他其实包括三层中的 BLL,DAL,Model,这是非常要注意的,这也是他们之间的区别的关键所在

    其有点有如下:
    低耦合性
    高重用性和可适用性
    较低的生命周期成本
    快速的部署
    可维护性
    有利于软件工程化管理

    当然优点也有缺点,那就是内部结构复杂,不容易理解,文件数量大,管理难度自然也就大

     

     

    MVC设计模式…
    三层架构…
    他们细分之后得到的是:View(UI)、BIZ(BLL)、DAO(DAL)、Entity(Model)、Controller
    MVC把 BIZ(BLL)、DAO(DAL)、Model(Entity) 统一称之为 模型(MODEL),得到:View、Controller、模型(MODEL)
    三层 在我使用中 暂未体会到控制器的存在,完全是:UI、DAO、BLL

    他们相同的设计理念就是:把视图设计与数据持久化进行分离,从而降低耦合性,易于扩展,提高团队开发效率。

     

    三层是基于业务逻辑来分的,而mvc是基于页面来分的
    根本就没有什么可比性。
    其实两个一起用我感觉很好

     

    MVC模式是一种复合设计模式,一种解决方案
    三层是种软件架构,通过接口实现编程
    三层模式是体系结构模式,MVC是设计模式
    三层模式又可归于部署模式,MVC可归于表示模式

     

    引用楼主 daijun17 的回复:
    如何在三层架构和mvc之间进行取舍呢?



    没有什么取舍的,说的根本不是一回事。在所谓的“三层”中,它要求你将BLL层独立出来,它只是告诉你表示层和业务逻辑层之间的静态关系。而MVC则告诉你在这个具体的地方如何处理其动态驱动流程,尽管mvc仍然粗糙(甚至mvp也是粗糙的),但是已经比所谓三层更细致一些了。

     

    谢谢大家的关注,这几天都在忙面试,没来结贴。再次谢谢大家。
    我大概明白了:三层架构和mvc设计模式侧重点不一样,三层是一种笼统的架构思想,没有限制具体的设计;而mvc就比较具体的说明它的设计方法。
    还是自己动手做一下,理解会更深一些,以前都是用三层架构的方法

     

    ---------------------------------------------------------------------------------------------------------------

    http://apps.hi.baidu.com/share/detail/15057889

    ASP.NET MVC 与 WebForm 三层架构 区别

    1.传统WebForm开发中存在的一些问题

    传统的ASP.NET开发中,微软的开发团队为开发者设计了一个在可视化设计器中拖放控件,编写代码响应事件的快速开发环境。然而,它所带来的负面效应是:

    由于控件封装了很多东西,开发者很难了解这背后的HTML是如何运作的

    容易得到一个包含大量ViewState的页面,使得页面尺寸远远超过所需的内容,使得页面的打开速度较慢

    不容易被测试

    2.什么是MVC?

    MVC(Model-View-Controller,模型-视图-控制器模式)是软件工程中的一种软件架构模式。它把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。

    3.什么是ASP.NET MVC?

    ASP.NET MVC是微软的开发团队基于MVC开发的一个易于被测试的框架。它具有以下特性:

    没有数据回传

    没有在页面中保存视图状态

    开发者可以完全掌控页面的呈现过程

    易于单元测试

    易于测试驱动开发

    可扩展、可替换

    支持WebForm中的有关特性,如:用户控件、母版页、数据绑定、本地化等

    不在基于文件目录结构,而是将URL映射到控制器中

    4. 为什么使用ASP.NET MVC?

    易于进行单元测试

    易于进行测试驱动开发

    避免了WebForm中大量的ViewState导致页面文件变得臃肿

    5. MVC与三层架构?

    MVC是一种模式
    ASP.NET MVC是一个基于MVC模式的开发框架
    三层架构是一种架构

    至于区别,可以严格的从概念上区分开来。

    下图是MVC与三层架构的对应关系

    6. MVC与Webform如何抉择?

    7. 两种技术并存

    ASP.NET MVC框架只是给开发者提供欧诺个了开发web应用程序的一种选择,并不是要取代Webform

    这两种技术各有优缺点,开发者需要根据实际情况,选择对应的技术

    有时候,可以在同一个项目中混合使用这两种技术

    8.ASP.NET MVC与Webform技术的架构图

    总结:

    看完本文,相信ASP.NET WebForm与ASP.NET MVC的选择相信大家应该可以做到心中有数了,我始终觉得,很多时候并不是什么技术好不好的问题,而是适合不适合不适合的问题或者能否把它用好的问题。

    打个比方:如果让千里马犁地,恐怕未必能达到理想的效果,最终可能还会抱怨,什么破马,一点劲都没有。

  • 相关阅读:
    081、Weave Scope 多主机监控(2019-04-29 周一)
    080、Weave Scope 容器地图(2019-04-28 周日)
    079、监控利器 sysdig (2019-04-26 周五)
    078、Docker 最常用的监控方案(2019-04-25 周四)
    077、跨主机使用Rex-Ray volume (2019-04-24 周三)
    076、创建Rex-Ray volume (2019-04-23 周二)
    075、配置Virtualbox backend(2019-04-22 周一)
    074、如何安装和配置Rex-Ray?(2019-04-19 周五)
    073、如何实现跨Docker Host 存储? (2019-04-18 周四)
    072、一文搞懂各种Docker网络 (2019-04-17 周三)
  • 原文地址:https://www.cnblogs.com/fan-yuan/p/3432322.html
Copyright © 2011-2022 走看看