《系统架构设计师教程(第2版)》第13章-层次式架构设计理论与实践-03-中间层(业务层|逻辑层)架构设计

news2024/9/17 8:46:27

文章目录

  • 1. 业务逻辑层组件设计
    • 1.1 业务逻辑组件的实现类
    • 1.2 业务逻辑组件的配置
  • 2. 业务逻辑层工作流设计
    • 2.1 工作流
    • 2.2 工作流参考模型
      • 2.2.1 概述
      • 2.2.1 工作流参考模型
  • 3. 业务逻辑层实体设计
    • 3.1 业务逻辑层实体概述
    • 3.2 逻辑层实体的表示方法
      • 3.2.1 XML表示业务层实体
      • 3.2.2 通用DataSet表示业务层实体
      • 3.2.3 有类型的DataSet表示业务层实体
  • 4. 业务容器的框架
    • 4.1 组成
      • 1)Domain Model
      • 2)Service
      • 3)Control
    • 4.2 互动关系

1. 业务逻辑层组件设计

  • 业务逻辑组件分为接口实现类两个部分。

1.1 业务逻辑组件的实现类

  • DAO

    • Data Access Object
    • 数据访问层(数据访问对象)
    • 中间层的下一层,我们将在下一章详细讲解
  • Spring容器

    • 概念:
      • 是Spring框架的核心
      • 用于管理和组织Java应用中的对象
    • 功能:
      • 控制对象的创建和生命周期

        开发人员只需要配置对象的依赖关系和相关属性,而不需要手动创建对象。

      • 依赖注入

        将对象之间的依赖关系交给容器来管理,降低了对象之间的耦合度,提高了代码的灵活性和可维护性。

      • 事务管理

教材原文:业务逻辑组件以DAO组件为基础,必须接收 Spring容器注入的 DAO 组件。

  • 业务逻辑组件的实现类
    • 将DAO组件接口实例作为属性(面向接口编程)
    • 对于复杂的业务逻辑,需要调用多个DAO 接口,将具体实现委派给DAO 完成

1.2 业务逻辑组件的配置

  • DAO 组件初始化:是由 Spring的依赖注入 (Dependency Injection) 机制完成的

教材此处写了spring框架业务逻辑组件的具体配置,虽然java对架构的支持很好,但作为架构师考试不应该局限于某一门语言,这里就不写了。

2. 业务逻辑层工作流设计

2.1 工作流

  • 定义:业务流程的全部或部分自动化,在此过程中,文档、信息或任务按照一定的过程规则流转,实现组织成员间的协调工作以达到业务的整体目标

2.2 工作流参考模型

2.2.1 概述

  • 概念:
    • 是一种反映业务流程的计算机化的模型
    • 是在计算机环境的支持下,为实现经营过程集成和经营过程自动化而构建的业务模型
    • 可供工作流管理系统执行
  • 目的:让文档、信息或任务可以在多个参与者之间依据预定规则自动传递,以达成预期的业务目标
  • 用工作流的思想组织业务逻辑优点是
    • 将应用逻辑与过程逻辑分离,通过修改过程模型改变系统功能

2.2.1 工作流参考模型

放在引用里,表示了解即可

在这里插入图片描述
说明:

  • interface 1: 过程定义导入/导出接口
  • interface 2: 客户端应用程序接口
  • interface 3: 应用程序调用接口

    允许工作流机直接激活一个应用工具,来执行一个活动

  • interface 4: 工作流机协作接口

    其目标是定义相关标准,以使不同开发商的工作流系统产品相互间能够进行无缝的任务项传递。

  • interface 5: 管理和监视接口

    提供的功能包括用户管理、角色管理、审查管理、资源控制制、过程管理和过程状态处理器等。

3. 业务逻辑层实体设计

3.1 业务逻辑层实体概述

  • 业务逻辑层实体特点
    • 业务逻辑层实体可以是可序列化的
    • 业务逻辑层实体不直接访问数据库
    • 业务逻辑层实体不启动任何类型的事务处理

    事务处理由使用该实体的应用程序或业务过程来启动

3.2 逻辑层实体的表示方法

应用程序中表示业务逻辑层实体的方法:如XML、 通用DataSet、 有类型的 DataSet等

3.2.1 XML表示业务层实体

  • 优点:
    • 标准支持

    • 灵活性

      XML 能够表示信息的层次结构和集合

    • 互操作性

3.2.2 通用DataSet表示业务层实体

  • DataSet概念
    • ADO.NET 中
    • 一个用于在内存中存储和操作数据的对象
    • 包含:多个数据表(DataTable),以及它们之间的关系(Data Relation)
  • 作用:用于表示数据访问逻辑组件从数据库检索到的信息

示例1:用于Product业务逻辑层实体的通用 DataSet对象

  • 该DataSet对象具有一个DataTable, 用于保存产品信息
  • 该DataTable具有一个唯一约束(Unique Constraint)对象,用于将ProductID 列标记为主键。
    在这里插入图片描述

示例2:用于Order业务逻辑层实体的通用 DataSet对象

  • 此DataSet对象具有两个DataTable对象,分别保存订单信息和订单详细信息
  • 每个DataTable具有一个对应的Unique Constraint对象,用于标识表中的主键
  • 该DataSet还有一个 Relation对象,用于将订单详细信息与订单相关联
    在这里插入图片描述
  • 优点

    • 灵活性

    DataSet可以包含数据的集合,能够表示复杂的数据关系。

    • 序列化

    在层间传递时, DataSet本身支持序列化。

    • 数据绑定

    可以把 DataSet绑定到 ASP.NET应用程序和 Windows 窗体应用程序的任意用户界面控件

    • 排序与过滤

    使用 DataView对象排序和过滤DataSet。 应用程序可以为同一个DataSet 创建多个DataView对象,以便用不同方式查看数据。

    • 与 XML 的互换性

    可以用 XML格式读写 DataSet

    • 开放式并发

    开放式并发检查是一种用于检测并发冲突的机制

    • 可扩展性

3.2.3 有类型的DataSet表示业务层实体

  • 有类型的DataSet:
    • 是包含具有严格类型的方法、属性、类型定义的类
    • 用以公开DataSet中的数据和元数据
  • 优点
    • 代码易读
    • 比通用 DataSet更方便
    • 编译时可检查无效的表名称和列名称

    DataSet只能在运行时检查

4. 业务容器的框架

在这里插入图片描述

  • 优点:
    • 降低业务层和相邻各层的耦合

4.1 组成

1)Domain Model

  • 包含业务相关的属性

2)Service

  • 概念:应用程序的不同功能单元
  • 特点:服务之间以松耦合连接

    即,互相连接的接口采用中立的方式定义(没有强制绑定到特定的实现上)

  • 优点:
    • 灵活性
    • 当服务的内部结构和实现发生改变时,它能够继续存在

3)Control

  • 概念:
    • 服务控制器
    • 实现不同服务之间的切换
  • 优点:提高了服务实现的灵活性、重用性

4.2 互动关系

  • Service 的运行会依赖于 Domain Model的状态; Service根据业务规则改变Domain Model 的状态
  • Control根据 Domain Model 的状态和相关参数,决定Service之间的执行顺序及相互关系

其吸取了 Model—View—Control 的优点,通过将服务和服务控制隔离,使程序具备高度的可重用性和灵活性。


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1962498.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Prometheus+Grafana 监控平台实践-搭建常用服务监控告警

前言 Prometheus 是一个开放性的监控解决方案,通过各种 Exporter 采集当前主机/服务的数据,和 Grafana 相结合可以实现强大的监控和可视化功能 本篇将分享使用 docker compose 构建 Prometheus+Grafana,并监控之前文章所搭建的主机&服务,分享日常使用的一些使用经验 文…

Qt基础 | UDP通信 | UDP单播、广播、组播的介绍与实现

文章目录 一、QUdpSocket 实现 UDP 通信1.UDP 通信概述2.UDP 单播和广播2.1 主窗口类定义和构造函数2.2 UDP通信实现 3.UDP 组播3.1 主窗口类定义和构造函数3.2 组播功能的程序实现 Qt 网络模块: Qt基础 | 主机信息查询 | QHostInfo的介绍和使用 | QNetworkInterfac…

排序算法:选择排序,golang实现

目录 前言 选择排序 代码示例 1. 算法包 2. 选择排序代码 3. 模拟排序 4. 运行程序 5. 从大到小排序 循环细节 外层循环 内层循环 总结 循环次数测试 假如 10 条数据进行排序 假如 20 条数据进行排序 假如 30 条数据进行排序 选择排序的适用场景 1. 数据规模…

SAP PowerDesigner@官网下载

背景 略 问题 略 解决 用户可以通过访问SAP支持网站的首页(‌https://support.sap.com/home.html)‌,‌然后导航到“Software Downloads”(‌软件下载)‌部分来访问SAP软件的下载入口。‌在这里,‌用户可…

HCIP笔记1

hcia复习 osi--开放式系统互联参考模型---7层参考模型 tcp/ip协议栈道---4或5层 osi: 应用层 抽象语言-->编码 表示层 编码-->二进制 会话层 提供应用程序的会话地址 上三层为应用程序对数据流量进行加工及处理的阶段 传输层 分段、端口号 tcp/udp 网…

Apache2 Ubuntu-XXE漏洞渗透

Apache2 Ubuntu-XXE漏洞渗透 Apache2 Ubuntu Default Page 是一个包含xxe漏洞的页面,如何找到和利用xxe漏洞,并找到flag呢? 第一步:先打开其网页 当安装好虚拟机环境后,打开虚拟机我们并不知道它linux的账号密码 因…

通配符https证书的申请途径和配置方法

一、通配符SSL证书的功能 通配符SSL证书,也被称为泛域名证书,是一种特殊类型的SSL证书,它能够保护一个主域名及其所有次级子域名(不可跨级保护)。例如,如果您的主域名是example.com,那么一个通…

Vue2从基础到实战(v-bind对于样式控制的增强-操作style,v-model在其他表单元素的使用)

v-bind对于样式控制的增强-操作style 语法&#xff1a;style"样式对象" <div class"box" :style"{ CSS属性名1: CSS属性值, CSS属性名2: CSS属性值 }"></div> 代码解析&#xff1a; HTML结构&#xff1a; 包含了一个div元素&…

什么是数据血缘?怎么做好数据血缘分析?

目录 一、什么是数据血缘&#xff1f; 二、数据血缘关系的四大特征 三、数据血缘分析怎么做&#xff1f; 1.定义元数据模型 2.收集元数据 3.建立血缘关系模型 4.追踪数据流动 5.可视化分析 6.集成到数据治理中 7.持续更新和维护 8.应用分析结果 四、数据血缘技术趋势 1.通用的血…

51单片机-第六节-LED点阵屏与_74HC595_

1.LED点阵屏的结构&#xff1a; 与数码管相同&#xff08;数码管只是把LED排成8字结构&#xff09;&#xff0c;8*8的点阵屏有8816个引脚。 双色点阵屏有82*824个引脚&#xff0c;结构如图&#xff1a; 注&#xff1a;点阵屏引脚多为乱序排列&#xff0c; 控制需看单片机说…

基于SpringBoot+Vue的大学生租房系统(带1w+文档)

基于SpringBootVue的大学生租房系统(带1w文档) 基于SpringBootVue的大学生租房系统(带1w文档) 该系统主要实现了用户和房主通过系统注册用户&#xff0c;登录系统后能够编辑自己的个人信息、查看首页&#xff0c;房屋信息&#xff0c;房屋评价&#xff0c;公告资讯&#xff0c;…

Linux第七节课gcc与g++

一、补充权限 普通用户无法执行sudo&#xff1a; 通过sudo执行后显示不在sudoers file中&#xff01;&#xff08;张三不被信任&#xff01;&#xff09; 需要修改配置文件&#xff08;白名单&#xff01;&#xff09; 配置文件位于以下目录&#xff1a; ls /etc/sudoers -…

[Day 40] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

強化學習概述 強化學習&#xff08;Reinforcement Learning, RL&#xff09;是一種機器學習方法&#xff0c;主要用於訓練智能體&#xff08;agent&#xff09;在特定環境&#xff08;environment&#xff09;中進行決策。智能體通過嘗試和錯誤來學習&#xff0c;以最大化其累…

【iOS】—— iOS持久化

iOS持久化 1. 数据持久化的目的2. iOS持久化的方案3. 数据持久化方式的分类内存缓存磁盘缓存 4. 沙盒机制5. 沙盒的目录结构获取应用程序的沙盒路径每次编译代码会生成新的沙盒路径&#xff0c;每次运行获得的沙盒路径都不一样。访问沙盒目录常用C函数介绍沙盒目录介绍 6. 持久…

浅谈线程组插件之bzm - Arrivals Thread Group

浅谈线程组插件之bzm - Arrivals Thread Group bzm - Arrivals Thread Group 是 JMeter 中的一个高级插件&#xff0c;由 BlazeMeter 提供&#xff0c;旨在为性能测试提供更灵活、更贴近实际场景的负载生成方式。与传统的线程组不同&#xff0c;Arrivals Thread Group 通过控制…

网上订餐系统2024((代码+论文+ppt)

网上订餐系统2024((代码论文ppt),编号:sp006 代码经过修正,确保可以运行,下载地址在文末 技术栈: springbottvuemysql 展示: 下载地址: CSDN现在上传有问题,有兴趣的朋友先收藏.正常了贴上下载地址 备注: 专业承接各种程序java,c,c,python,cuda,AI 运行有问题请私信我,…

互联网医院系统源码与医保购药APP开发的完整技术指南

本篇文章&#xff0c;笔者将详细介绍互联网医院系统与医保购药APP的开发全过程&#xff0c;帮助开发者理解其技术要点和实现路径。 一、互联网医院系统开发 1.需求分析与系统设计 需要明确系统的功能需求&#xff0c;如在线问诊、预约挂号、电子病历管理、远程医疗、支付系统…

木材缺陷数据集:从手工模式到智能时代的跨越

亲爱的读者们&#xff0c;您是否在寻找某个特定的数据集&#xff0c;用于研究或项目实践&#xff1f;欢迎您在评论区留言&#xff0c;或者通过公众号私信告诉我&#xff0c;您想要的数据集的类型主题。小编会竭尽全力为您寻找&#xff0c;并在找到后第一时间与您分享。 引言 …

【运维指南】常见的防火墙端口操作

每当一个应用程序想通过网络访问自己时&#xff0c;它就会申请一个 TCP/IP 端口&#xff0c;这意味着该端口不能被其他任何程序使用。那么&#xff0c;如何检查开放的端口&#xff0c;看看哪个应用程序已经在使用它呢&#xff1f; Windows 查看端口使用情况和进程名称 netst…

详解Qt 之QMdiArea 和 QMdiSubWindow

文章目录 前言QMdiArea概念作用为什么需要 QMdiAreaQMdiArea 的主要函数和成员函数列表 QMdiSubWindow概念作用为什么需要 QMdiSubWindowQMdiSubWindow 的主要函数和成员函数列表 示例代码 更多用法... 总结 前言 在复杂的应用程序中&#xff0c;尤其是那些需要同时管理多个子…