下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

MVC和三层架构一样吗?

作者:课课家教育     来源: http://www.kokojia.com点击数:1235发布时间: 2016-08-02 18:19:34

标签: MVC和三层架构MVC三层架构

大神带你学编程,欢迎选课

  总会有很多朋友刚刚学习MVC,不小心就把MVC以及三层结构混为一谈了,但是这两个并不是同一个概念。MVC是一个设计模式,而三层结构是一个分层的软件体系架构设计。但是你在了解概念的时候也会弄错,因为在解析上两者的概念以及作用也有一点关系。下面我们对两者进行分析一下。

    先了解三层结构以及MVC

   三层结构

   数据访问层(DAL):在这一层之中所做的事务直接操作数据库,是针对数据的修改、删减等。

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

   表示层(UI):平时的手机系统中常说的UI,也就是展现给用户的界面,就是用户操作一个系统所见到的界面。

   在三个层次中,系统主要的功能以及业务逻辑都是在业务逻辑层进行处理的。

   MVC

   主要在应用程序的视图层分出来几个不同功能的模块。

   视图(view)界面设计人员进行图形图像界面设计

   控制器(Controller):负责转发请求,对请求进行处理。转发来自用户界面的输入并调用相对应的Model中的方法。然后处理来自Model返回的数据,将之显示给用户。

   模型(model):程序员编写程序应有的功能,负责整个方案的业务逻辑实现。

  三层结构和MVC

  当我们在接手一个项目的时候,我们最先需要进行结构的设计,而我们一般使用的就是分层式的架构设计,就是我们文中的三层架构。在我们确定了架构之后,我们会根据项目的要求再去考虑要使用什么的设计模式,例如文中说的MVC或者抽象工厂等。

  很多人就MVC里的三个核心部件同三层架构等同起来,认为界面层等于View,业务逻辑层等于Controller,数据访问层等于Model。这是不完全对的,深层的来说,MVC只是三层架构中的UI层。

  在三层架构中数据传递的方向如下图。

  而在MVC中,控制器是负责把视图的请求传给模型,把模型返回的数据显示在视图。这样子三层和MVC就是完全不同的。三层架构的分层模式是典型的上下关系,上层依赖于下层。意在职责分离。即为了“高内聚,低耦合”的思想。但MVC作为表现模式是不存在上下关系的,而是相互协作关系。即使将MVC当作架构模式,也不是分层模式。

  层次不同

   MVC是一种复合设计模式,是一种在特定场合用于解决某种实际问题来得出的可以反复实践的解决方案。只是巧合它也由3个事务组成,并且三层架构会和MVC一起使用,造成了人们的误区。但是MVC中的单个事物之间不存在层次结构。

   上文已经说了深层的说MVC只是三层架构中的UI,但是如果你硬要它们相对应,只能说三层架构中的UI对应MVC中的view,都是用于显示以及获取界面的数据;三层架构中的BLL层和DAL层对应MVC中的Model层都是用于处理上层传递来的数据以及从数据库获取的数据的;MVC中的Controller最多算是三层架构中的UI的一部分。

三层架构和MVC的对应

  为什么会混淆?

   1.因为两者都恰好是三层,虽然说是三层架构,但是三层架构也是N层架构。

      2.MVC总是伴随着三层架构。

   3.都是在分层,虽然它们的侧重不一样,但是它们都是为了解耦。即降低程序之间的紧密程度,避免一个程序错误导致牵一发而动全身。

       虽然说在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的。总的来说,两者就不是同一个概念的,知识恰好都有三层,而且总会相伴出现,导致大家的误区。最后希望本文对那些有混淆的朋友有帮助。

赞(20)
踩(4)
分享到:
上一篇:MFC的简单介绍
华为认证网络工程师 HCIE直播课视频教程