NormanZyq
发布于 2020-03-30 / 504 阅读
0
0

3.30 周一 软件架构 分层风格、MVC风格

分层 Layered System

概述:下层构件向上层构件提供服务,上层构件被看作下层的客户

分层原则

  1. 分离关注,减少重叠
  2. 抽象,删枝节留主干
  3. 隐藏,只暴露需要访问的接口

构件、连接件

  • 构件:各个层次内部包含的构件

  • 连接件:层间的交互协议

  • 拓扑结构:分层结构;

  • 拓扑约束:对相邻层之间的交互要进行约束:

    • 集中式部署
    • 分布式部署

分层模式

某一层的构件只能跟同级别的对等实体或者较低级别的构件交互。注意:下层也可以与上层进行交互,但是需要特殊的方法

  • 严格模式 Strict System Layering
  • 松散分层 Loosely System Layering
  • 横切关注 Cross-Cutting Concerns

例子:三层C/S结构

客户端、数据库服务器中间加设一个中间层,可能是事务处理监控服务器、消息服务器、应用服务器等;它负责消息排队、业务逻辑执行等等

  1. 表示层:
    • 用户接口部分,通常使用GUI;
    • 功能包括:检查用户输入、显示应用输出,不包含或包含一部分业务逻辑
  2. 功能层:
    • 主体,大部分的逻辑;
    • 从表示层获得输入并处理,向数据层获得数据或向其更新数据;
    • 处理结果返回给表示层
  3. 数据层:
    • DBMS,接受功能层的数据查询、执行请求等;
    • 执行结果返回给功能层

表示层 ↔️ 功能层 ↔️ 数据层

浏览器/服务器

是三层C/S风格的一种实现方式

表示层:浏览器

逻辑层:Web服务器、应用服务器

数据层:数据库服务器

优点:

  • 维护成本低:客户端无任何业务逻辑
  • 安全性:客户端不访问任何数据
  • 瘦客户端
  • 容错能力
  • 负载平衡能力

缺点:

  • 同步的请求/响应
  • 受HTTP协议的文本的数据交换
  • 页面为单位,动态交互性不强
  • 难以复杂GUI

MVC 风格

Model-View-Controller,关注点分离,实现model和view的解耦

构件、连接件

构件:MVC

连接件:显式调用、隐式调用

Model 模型

负责数据存取、负责业务逻辑实现、可能负责数据验证

View 视图

  • 获取用户输入
  • 向controller发送处理请求、接收来自controller的反馈,并将model的处理结果显示给用户
  • 一个model可能有多个view——同一批数据,使用不同的方式来呈现

Controller 控制器

  • 接收来自客户的请求
  • 调用model执行业务逻辑
  • 调用View显示执行结果

应该可以理解成:controller管理view和model,这两个可以作为controller的一个私有属性

原则、优缺点

原则:

  1. 展示与模型分离
  2. 控制器与视图分离

优点:

  • 易于开发维护
  • 同一信息显示方式可以多样
  • 业务逻辑更易测试

可用的框架

  • J2EE
    • Struts MVC
    • Spring MVC
  • PHP
    • CakePHP
    • Struts4php
  • ...

评论