表现层

表现层(Presentation Layer)是软件架构中最上层的部分,主要负责处理用户界面和用户交互。它也被称为展现层或UI层,是用户与系统交互的接口。

定义与职责

表现层的主要职责包括:

在分层架构中,表现层通常依赖于业务逻辑层(或应用层)来获取数据和执行业务操作,对用户隐藏了系统内部的复杂性。

主要模式

MVC(Model-View-Controller)

随着前后端分离以及后端微服务化的不断发展,传统的MVC已不适合现在的纯后端系统,Controller其实也是API,它代表了服务对外提供的接口,是一种合约

MVC模型演变

Model1模型

---title: Model1模型---sequenceDiagram  客户端 ->> JSP: 请求  JSP ->> JavaBean: 请求  JavaBean ->> DAO: 数据库操作  DAO ->> JavaBean: 数据库操作  JavaBean ->> JSP: 返回  JSP ->> 客户端 : 返回

Model2模型

---title: Model2模型---sequenceDiagram  participant 客户端  participant 控制器 as Controller(Filter/Servlet)  participant 模型 as Model(JavaBean)  participant 视图 as View(JSP)  客户端 ->> 控制器: 请求  控制器 ->> 模型: 请求  控制器 ->> 视图: 请求  视图 ->> 模型: 请求  模型 ->> 数据库: 请求

MVC的优势与弊端

优势

弊端

控制器类型

  1. 页面控制器: 为特定页面或动作处理请求的对象。控制器通过绑定请求来实现与用户的交互。其从请求中提取参数,对输入进行处理,执行业务逻辑,选择适当的视图以呈现结果。

  2. 前端控制器: 处理所有请求的控制器,执行一些通用的行为,如身份验证和日志记录,并且这些行为可以在运行时动态修改

  3. 应用控制器: 一个处理程序流的集中控制点,负责协调页面控制器与前端控制器之间的交互,确保请求在应用中的流转符合预期

Model(业务数据模型)

业务数据模型,Model层是高层策略,是技术无关逻辑的封装

View(视图)

当有用户的行为触发操作时,由控制器更新模型,并通知视图进行更新

Controller(控制器)

主要是接收用户请求,并负责协调Model与View

MVP(Model-View-Presenter)

stateDiagram-v2  View --> Presenter: User events  Presenter --> Model: Model update  Model --> Presenter: State changes  Presenter --> View: View update

MVVM(Model-View-ViewModel)

MVVM是MVC模式的进一步演变,特别适用于现代前端开发,如Vue.js等框架。

BFF(Backend for Frontend)

graph TB    subgraph "Applications"        WebApp[Web APP]        MobileApp[Mobile APP]        DesktopApp[Desktop APP]    end    subgraph "Gateways"        WebGateway[Web APP Gateway]        MobileGateway[Mobile APP Gateway]        DesktopGateway[Desktop APP Gateway]    end    subgraph "Services"        AccountService[Account Service]        PaymentService[Payment Service]        SecurityService[Security Service]        WarehouseService[Warehouse Service]    end    WebApp -- REST --> WebGateway    MobileApp -- RMI --> MobileGateway    DesktopApp -- gRPC --> DesktopGateway    WebGateway --> AccountService    WebGateway --> PaymentService    MobileGateway --> PaymentService    MobileGateway --> SecurityService    DesktopGateway --> SecurityService    DesktopGateway --> WarehouseService

与分层架构的关系

在传统的分层架构中,表现层是系统架构的最上层,通常与业务逻辑层、数据访问层和数据库层形成依赖关系:

graph TD    展现层[展现层]    业务逻辑层[业务逻辑层]    数据访问层[数据访问层]    数据库[(数据库)]    展现层 --> 业务逻辑层 --> 数据访问层 --> 数据库

在现代架构中,表现层与应用层、领域层和基础设施层形成更复杂的交互关系:

graph TD    展现层[展现层]    应用层[应用层]    领域层[领域层]    基础设施层[基础设施层]    展现层 --> 应用层 --> 领域层    领域层 --> 基础设施层

视图与模型关系

当系统有了一些不可见的逻辑时,就需要注意模型与视图分离。