MVC和三层架构之间的关系

作为一名Android研发,最近再研究一些服务端的开发,遇到一个问题“Mvc和三层架构之间的关系是啥”。参考了一些资料,做一些记录。

现在服务端JavaWeb开发比较流行的是使用脚手架SpringBoot框架来进行开发,SpringBoot能很方便的实现SSM框架的服务端架构。下面拿SSM框架和三层架构进行比较分析。

一、三层架构

三层架构是指:视图层View、服务层Service、持久层Dao,分别完成不同的功能。

View层:用于接收用户提交请求的代码。

Service层:系统的业务逻辑。

Dao层:直接操作数据的代码在这里写。

所有的架构的目的,都是为了解耦,是系统具备更好的扩展性、便捷性,在三层架构的设计中,采用了面向抽象编程,在耦合关系层面,是一种抽象耦合关系,实际实现中是上层对下层的调用,是通过接口实现的。而下层对上层是真正的服务提供者,是下层接口的实现类。【耦合关系】

三层架构的结构图如下:
MVC和三层架构之间的关系_第1张图片

二、MVC

MVC:Model模型、View视图、Controller控制器

View:视图,为用户提供使用界面,与用户直接进行交互。

Model:模型,承载数据,并对用户提交的请求进行计算的模块。其分为两类,一类是数据承载bean,一类是业务处理bean。所谓数据承载的bean,就是我们通常通过面向对象设计抽象出来的实体bean,比如User、Car、Order等。而业务处理的bean则是指Service或Dao对象,专门用于用户提交的请求。

Controller:控制器,用于将用户的请求转发给相应的model进行处理,并处理Model的计算结果向用户提供相应的响应。

我们看一个Mvc架构的应用程序的工作流程如下:

  1. 用户通过View页面向服务端发出请求,可以是表单请求,超链接请求、Ajax请求等。
  2. 服务端的Controller控制器接受到请求后,对请求进行解析,找到对应的Model对用户的请求进行处理。在SpringBoot中通过@RestController、@RequestMapping注解就能很方便的指定对请求处理的Controller对象。
  3. Model处理后,将处理结果再交给Controller。
  4. Controller在接到处理结果后,根据处理结果找到要做作为客户端发回的响应,这个响应可以渲染数据的页面,也可以是Restful风格的json/xml格式的返回体(多用于移动端开发),返回(发送)给客户端。
    MVC和三层架构之间的关系_第2张图片

经过上述的分析,其实相信应该对Mvc和三层架构之间的差别和联系应该有了一些了解,接下来,我们对Mvc和三层架构做一些结论性质的梳理。

Mvc和三层架构之间的关系的结论如下:

  1. 三层架构中的View层简单来说是和用户直接发生关系的层,MVC中的V和C就是这样的存在,所以MVC中的V和C均属于三层架构中的View层。
  2. MVC中的Model包含了数据承载和业务处理,对应了三层架构中的Service层和Dao层的实现。

三、SSM和三层架构的关系

SSM即SpringMvc、Spring、Mybatis三个框架。他们在三层架构中所处的位置是不同的。

SpringMVC:作为View层的实现者,完成用户的请求接受功能。SpringMvc的Controller作为整个应用的控制器,完成对用户请求的转发以及对用户的响应。

MyBatis:作为Dao层的实现者,完成对数据的增删改查处理。

Spring:Spring是整个应用中所有bean的管理者容器,包括对象的创建、初始化、销毁、以及对象之间关联关系的维护(对象的注入),均有Spring进行管理。

另外,现在的大多项目是基于SpringBoot开发的,如果把SSM理解成服务端架构的框架,则可以将SpringBoot理解成快速高效开发SSM应用的程序的脚手架工具。

作为一名曾经的Android研发工程师,这里联想一下15年左右Android的基础的开发模式,也被认为是MVC的方式架构,Activity充当着Controller的角色,我们也定义了Service模块进行网络的请求的发起和响应的数据处理,同样对于数据类型的操作,我们也可以定义Dao层对本地的Sqlite的数据库进行数据的增删改查。

MVC和三层架构之间的关系_第3张图片

当然,Android现在的技术生态早已很强大,Mvp和Mvvm的架构方式都存在,还有好多变种。Android官方的架构项目Android architecture也早已在Android Developer的官方网站呈现,官方架构的Jetpack组件包也在不但的壮大,后续也会再深入对比MVC、MVP、MVVM的理解和对比、以及对Android的架构做研究分享。

最后,架构是代码的组织形式,任何一种架构模式也并非一成不变,特定场景也会灵活使用,比如除了我们提的三层架构、MVC,其实还有很多对应的架构方式,比如多层架构、MVP、MVVM等等,而架构的核心目的说的通俗一点,都是为了更好的组织代码,让代码效率提升,包括但不限于扩展性、稳定性、容灾性等等。

你可能感兴趣的:(架构研究,MVC,架构研究)