MVC开发模式和三层架构

Posted 喜欢历史的工科生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVC开发模式和三层架构相关的知识,希望对你有一定的参考价值。

MVC开发模式

为什么会有MVC开发模式?

这和jsp演变历史有关

  • 早期只有servlet,只能使用response输出标签数据,非常麻烦
  • 后来有了jsp,简化了servlet的开发,如果过度使用jsp,在jsp中写了大量的java代码,并且还有html表,这样难于维护,难于分工协作
  • 再后来,java的web开发,借鉴了mvc模式,使得程序的设计更加合理

什么是MVC开发模式?

将之前写在jsp中的代码提取出来分成三部分:

  • M:Model,模型
    • 完成具体的业务操作,如:查询数据库,封装对象
  • V:View,视图
    • 展示数据
  • C:Controller,控制器
    • 获取用户的输入
    • 调用模型
    • 将数据交给视图进行展示

这样写代码的优点:

  • 耦合性低,方便维护,可以利于分工协作
  • 代码重用性高

什么是三层架构?

三层架构是一种软件设计架构。

  • 界面层(表示层):用户看的界面。用户可以通过界面上的组件和服务器进行交互
  • 业务处理逻辑:处理业务逻辑的
  • 数据访问层:操作数据存储文件

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

区别:

  • mvc侧重将前端的数据显示处理逻辑进行分离,通过控制器进行衔接,更强调的是一种逻辑。
  • 三层架构则更深一步定义了软件的架构,并不仅仅考虑数据显示处理逻辑的分离。而是进一步对代码进行解耦,将处理逻辑分为service层和dao层,实现代码的“高内聚,低耦合”,并且层与层之间是依赖调用关系。

联系

  • mvc和三层架构都分出三个部分,都是为了降低代码的耦合性
  • mvc和三层架构在代码上的对应关系

MVC模式和三层架构

MVC模式和三层架构

MVC模式

  MVC(Model View Controller)是软件工程中的一种软件设计模式,它把软件系统分为模型、视图和控制器三个基本部分。用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

MVC 是一种分层开发的模式,其中:

  • M:Model,业务模型,处理业务,应用程序的核心功能,管理这个模块中用的数据和值(bean,dao)。
  • C:Controller,控制器,处理请求,调用模型和视图,对用户的输入做出反应,管理用户和视图的交互,是连接模型和视图的枢纽 (servlet/service)。
  • V:View,视图,界面展示,管理模型如何显示给用户,它是应用程序的外观(jsp/html)。

  控制器(serlvlet)用来接收浏览器发送过来的请求,控制器调用模型(JavaBean)来获取数据,比如从数据库查询数据;控制器获取到数据后再交由视图(JSP)进行数据展示。在这个过程中,控制器其实只是起到了承上启下的作用,它只负责中转(指挥调度),不负责具体的业务操作。

MVC 优点:

  • 职责单一,互不影响。每个角色做它自己的事,各司其职。
  • 有利于分工协作。
  • 有利于组件重用

MVC 缺点: 使得项目架构变得复杂,对开发人员要求高

三层架构

  三层架构(3-tier architecture) 是将我们的项目分成了三个层面,分别是 表现层(User Interface layer)业务逻辑层(Business Logic Layer)数据访问层(Data access layer)

区分层次的目的即为了高内聚低耦合的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。

  • 数据访问层:对数据库进行CRUD基本操作。
  • 业务逻辑层:对业务逻辑进行封装,组合数据访问层中基本功能,形成复杂的业务逻辑功能。例如 注册业务功能 ,我们会先调用 数据访问层selectByName() 方法判断该用户名是否存在,如果不存在再调用 数据访问层insert() 方法进行数据的添加操作。
  • 表现层:接收请求,封装数据,调用业务逻辑层,响应数据。

  而整个流程是,浏览器发送请求,表现层的Servlet接收请求并调用业务逻辑层的方法进行业务逻辑处理,而业务逻辑层方法调用数据访问层方法进行数据的操作,依次返回到serlvet,然后servlet将数据交由 JSP 进行展示。

三层架构的每一层都有特有的包名称:

  • 表现层: controller 或者 web
  • 业务逻辑层:service
  • 数据访问层:dao 或者 mapper

我们经常听到的SSM框架就是对不同层进行的封装:

三层架构优点

  1. 开发人员可以只关注整个结构中的其中某一层。
  2. 可维护性高,可扩展性高。
  3. 可以降低层与层之间的依赖。
  4. 有利于标准化。
  5. 利于各层逻辑的复用。

三层架构缺点

  1. 降低了系统的性能。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
  2. 有时会导致级联的修改,这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
  3. 增加了开发成本。

MVC与三层架构的联系

  如上图上半部分是 MVC 模式,上图下半部分是三层架构。 MVC 模式 中的 C(控制器)和 V(视图)就是 三层架构 中的表现层,而 MVC 模式 中的 M(模型)就是 三层架构 中的 业务逻辑层 和 数据访问层。

可以将 MVC 模式 理解成是一个大的概念,而 三层架构是对 MVC 模式实现架构的思想。 其实,无论是MVC还是三层架构,都是一种规范,都是奔着高内聚,低耦合的思想来设计的。

MVC与三层架构的异同

不同点

  • 三层架构是程序设计的一种典型架构方式,确立项目后首先做的是对其进行架构设计,三层架构就是把应用程序的分层,从而降低各个模块之间的耦合。而MVC是程序的一种设计模式,即应用程序确立架构后再根据需求决定是否要采用的一种模式, 是一种使程序代码变得条理、逻辑、通用的代码规范。因此二者的区别也就显现出来了,三层架构是一种架构方式而MVC是一种设计模式(或者说是一种设计思想)

  • 三层架构的分层模式是典型的上下关系,上层依赖于下层。但MVC作为表现模式是不存在上下关系的,而是相互协作关系。即使将MVC当作架构模式,也不是分层模式。MVC和三层架构基本没有比较的意义,是应用于不同领域的技术。

相同点: MVC与三层架构虽然说实质是不同的,但在所达到的目的、所实现的效果是相同的,二者都是为了应用程序解耦,即使应用程序达到”高内聚,低耦合“的目的

以上是关于MVC开发模式和三层架构的主要内容,如果未能解决你的问题,请参考以下文章

三层架构和mvc模式有啥关系

MVC模式和三层架构

MVC和三层架构的区别

MVC和三层架构

基础 | 三层架构与MVC模式

.Net5005MVC开发和三层架构