zoukankan      html  css  js  c++  java
  • MVC,SSM与三层架构的构成及相互关系

    MVC,SSM与三层架构的构成及相互关系

     

    本文主要想谈的内容有:

    1. 为什么要有架构?
    2. 三层架构是什么?
    3. MVC框架是什么?
    4. MVC框架和三层架构的关系?
    5. MVC框架的工作流程?
    6. SSM框架和三层架构的关系?

    为什么要有架构?

    这是为了满足“低耦合,高内聚”,实现代码的健壮性和可扩展性。比如为了更好的降低各层间的耦合度,在三层架构程序设计中,采用面向抽象编程。即上层对下层的调用,是通过接口实现的。而下层对上层的真正服务提供者,是下层接口的实现类。服务标准(接口)是相同的,服务提供者(实现类)可以更换。

    三层架构是什么?

    三层架构由用户界面层/表示层(User Interface),业务逻辑层(Business Logic Layer)和数据访问层(Data Acess Layer)构成。

    其中每一层的作用为:

    1. 用户界面层:负责与用户进行交互。
    2. 业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理。
    3. 数据访问层:主要是对非原始数据(数据库或者文本文件等存放数据的形式)的操作层,也就是说是对数据库,而不是对数据的操作,具体为业务逻辑层或用户界面层提供数据服务。
    • 举个例子:

    访问一个网站。用户需要经历的过程有:在浏览器输入 url,然后浏览器向 Server 发起一个 http 请求,Server 拿到这个 http 请求之后会根据相关的条件到数据库查询相关数据,然后把数据以特定的格式(网站是 html 格式)返回给浏览器,浏览器再根据特定数据渲染出相应页面。那么:

    1. 对用户来说,浏览器就是用户界面层,它主要是与用户交互的页面,根据用户的输入与事件,处理并显示返回的特定数据。
    2. 连接表示层与数据访问层的就是业务逻辑层,这包括后端程序中模型设计、验证、业务规则、各种计算等。
    3. Server 端必须要一个强大的数据库来存储所有用户交互产生的数据,而对这些数据的处理,包括增、删、改、查就属于数据访问层。
    • 三层架构图示:

    MVC框架是什么?

    MVC框架是由Model模型(JavaBean),View视图(Jsp) 和 Controller控制器(Servlet)构成

    其中每一部分的作用为:

    1. Model:承载数据,并对用户提交请求进行计算的模块。其分为两类,一类称为数据承载Bean,一类称为业务处理Bean。所谓数据承载Bean是指实体类,专门承载业务数据的,如Student、User等。而业务处理Bean则是指Service或Dao对象,专门用于处理用户提交请求的。
    2. View:为用户提供使用界面,与用户直接进行交互
    3. Controller:用于将用户请求转发给相应的Model进行处理,并将处理Model的计算结果向用户提供相应响应。
    • MVC图示:
    • (图片来源于公众号兄弟会)

    MVC框架和三层架构的关系?

    1. 三层架构是一种软件领域最普遍的分层式架构,而 MVC 是在三层架构的基础上设计的一种框架型架构,三层架构是一种宏观的概念,而 MVC 就是一种比较具体的三层架构的框架实现,我们在 MVC 的基础上把不同类别的代码文件进行分类就可以了
    2. 一般认为View 层和 Controller 层都属于三层架构的用户界面层,而Model属于业务逻辑层和数据访问层
    • 图示:
    • (图片来源于公众号科帮网)

    有的认为model只属于业务逻辑层,理由如下:

    人认为 Model 层除了定义业务需要的实体类与简单的逻辑算法处理之外,还应该包括对数据库的操作、对网络等的操作等,这对后端开发来说没问题,因为后端的数据全部来源于数据库,而且后端可以很方便的跟数据服务器进行连接,而 Model 的业务逻辑大多都是来自对数据的处理,所以这种方式很正常。

    但是对于客户端来说差别就大了,我们知道客户端的数据来源大多来自服务端的接口请求,但是很可能同时有本地数据库、本地的文件都能提供数据,比如可能会有离线操作,比如可能为了用户体验,用户断网的时候会做缓存处理,也就是说客户端的数据来源有多种多样,而 Model 本身的主要职责应该定义业务需要的数据模型以及简单的逻辑处理,如果同时也要处理本地数据库与网络数据未免变得臃肿起来,而且职责不清晰。

    • 图示:
    • 总的来说:MVC与三层架构并不是一一对应的,MVC只是三层架构基础上设计的具体框架

    MVC框架的工作流程?

    1. 用户通过View页面向服务端提出请求,可以是表单请求、超链接请求、AJAX请求等。
    2. 服务端Controller控制器接收到请求后对请求进行解析,找到相应 的Model对用户请求进行处理。
    3. Model处理后,将处理结果再交给Controller
    4. Controller在接到处理结果后,根据处理结果找到要作为向客户端发回的响应View页面。页面经渲染(数据填充)后,再发送给客户端
    • 图示:

    SSM与三层架构关系?

    SSM主要由Spring,SpringMVC 和 Mybatis三个构成。它们在三层架构中所处的位置是不同的,即它们在三层架构中的功能各不相同,各司其职

    1. SpringMVC:作为View层的实现者,完成用户的请求接收功能。SpringMVC的Controller作为整个应用的控制器,完成用户请求的转发及对用户的响应
    2. MyBatis:作为 Dao层的实现者,完成对数据库的增、删、改、查功能
    3. Spring:以整个应用大管家的身份出现。整个应用中所有的Bean的生命周期行为,均由Spring来管理。即整个应用中所有对象的创建、初始化、销毁,及对象间关联关系的维护,均由Spring进行管理
    • 关系图示:
     
  • 相关阅读:
    神经网络中的数据预处理方法 Data Preprocessing
    keras中 LSTM 的 [samples, time_steps, features] 最终解释
    keras 学习文档
    tensorflow 中 softmax_cross_entropy_with_logits 与 sparse_softmax_cross_entropy_with_logits 的区别
    对 tensorflow 中 tf.nn.embedding_lookup 函数的解释
    好久不git这么多问题
    去不去创业?
    抗压能力
    培养好的阅读习惯
    深度工作
  • 原文地址:https://www.cnblogs.com/lianxiaoniu/p/7705065.html
Copyright © 2011-2022 走看看