[图解]企业应用架构模式2024新译本讲解01-事务脚本

news2024/9/20 16:26:03

1
00:00:00,220 --> 00:00:03,010
接下来,我们就要进入模式的讲解了

2
00:00:04,030 --> 00:00:05,940
这个是书里面的目录

3
00:00:06,230 --> 00:00:08,140
按照

4
00:00:08,150 --> 00:00:09,220
领域逻辑模式

5
00:00:09,230 --> 00:00:10,580
数据源架构模式

6
00:00:11,010 --> 00:00:12,450
对象-关系行为模式

7
00:00:12,460 --> 00:00:13,530
对象-关系结构模式

8
00:00:13,700 --> 00:00:14,730
后面还有很多

9
00:00:19,040 --> 00:00:24,460
我们把这个内容用类图、对象图建模出来

10
00:00:24,470 --> 00:00:25,620
你看,这个是类图

11
00:00:26,800 --> 00:00:30,210
这类图,左边这个

12
00:00:30,220 --> 00:00:33,350
模式类型就是这个标题

13
00:00:33,360 --> 00:00:34,870
领域逻辑

14
00:00:35,450 --> 00:00:38,890
数据源架构、对象-关系行为,对象-关系结构

15
00:00:38,900 --> 00:00:43,730
还有后面其他的,这叫模式类型

16
00:00:44,960 --> 00:00:47,840
然后模式就是这个了

17
00:00:48,430 --> 00:00:50,020
下面事务脚本

18
00:00:50,030 --> 00:00:51,740
领域模型、表模块

19
00:00:52,120 --> 00:00:57,490
服务层、表数据入口,就这么两个类

20
00:00:58,650 --> 00:01:01,090
如果这个还可以再分多层类型

21
00:01:01,100 --> 00:01:02,530
那就在哪里,就这里了

22
00:01:03,380 --> 00:01:07,170
这里搞自反关联

23
00:01:07,620 --> 00:01:08,250


24
00:01:08,930 --> 00:01:12,170
这个我们大家都知道了

25
00:01:12,900 --> 00:01:16,830
前面的课程已经说过很多遍了

26
00:01:18,500 --> 00:01:20,050
右边那个是对象图

27
00:01:20,060 --> 00:01:25,860
你看,模式类型这个类有这些对象,领域逻辑

28
00:01:25,870 --> 00:01:26,660
数据源架构

29
00:01:29,830 --> 00:01:33,060
这是Martin Fowler的分类了

30
00:01:38,200 --> 00:01:40,480
那么我们就会挑一些来讲了

31
00:01:41,070 --> 00:01:42,350
因为前面也讲了

32
00:01:42,360 --> 00:01:43,550
因为内容比较多

33
00:01:44,330 --> 00:01:45,400
不可能都讲

34
00:01:45,410 --> 00:01:47,310
我们挑一些来讲

35
00:01:48,620 --> 00:01:53,920
第一个讲的就是事务脚本和表数据入口

36
00:01:55,420 --> 00:01:56,810
这两个的结合

37
00:01:58,470 --> 00:02:06,140
事务脚本是领域逻辑模式的一个了

38
00:02:08,000 --> 00:02:09,800
它的类型是领域逻辑

39
00:02:10,410 --> 00:02:14,850
而表数据入口,类型是数据源架构

40
00:02:16,950 --> 00:02:19,150
相当于一个是在领域层

41
00:02:19,320 --> 00:02:23,390
一个是在数据层

42
00:02:23,400 --> 00:02:24,510
这两个结合起来

43
00:02:25,480 --> 00:02:26,680
完成我们的任务

44
00:02:28,790 --> 00:02:32,970
首先我们来看一下这两个模式的定义

1
00:00:01,130 --> 00:00:03,570
我们先来看事务脚本模式

2
00:00:05,960 --> 00:00:09,680
事务脚本,右边这个就是书上的截图了

3
00:00:10,010 --> 00:00:13,620
这些地方是这一次审校要修正的地方

4
00:00:15,070 --> 00:00:18,810
他说了,使用过程来组织业务逻辑

5
00:00:18,820 --> 00:00:22,290
每个过程处理来自表示层的单个请求

6
00:00:22,300 --> 00:00:25,130
就是说,界面那边过来的一个请求

7
00:00:26,310 --> 00:00:28,550
就把它做成一个事务脚本

8
00:00:32,110 --> 00:00:33,860
比如说,这个就是一个

9
00:00:35,560 --> 00:00:37,690
这个就是一个,界面过来

10
00:00:38,340 --> 00:00:40,510
也就是说,它对应的就是这里面的

11
00:00:40,800 --> 00:00:41,230
service

12
00:00:41,240 --> 00:00:44,660
就是应用的服务类了

13
00:00:45,160 --> 00:00:46,390
这里面一个操作

14
00:00:46,520 --> 00:00:50,650
就可以看作是一个事务脚本过程

15
00:00:51,640 --> 00:00:54,110
事务脚本这个词就是一个造词了

16
00:00:56,430 --> 00:00:57,420
Martin Fowler

17
00:00:57,430 --> 00:00:57,980
造出来的

18
00:00:58,340 --> 00:00:59,570
实际上是没有必要的

19
00:00:59,580 --> 00:01:01,990
就直接说面向过程就完了

20
00:01:02,000 --> 00:01:03,470
结果又造了一个词

21
00:01:04,600 --> 00:01:05,830
好像又是一个新概念

22
00:01:06,170 --> 00:01:07,500
有创新一样

23
00:01:07,510 --> 00:01:12,500
没有,反而是让人们有一种创新的感觉

24
00:01:12,510 --> 00:01:15,600
但是停滞不前,只是换了一个词而已

25
00:01:16,230 --> 00:01:17,200
这种就很不好

26
00:01:20,390 --> 00:01:21,620
如果你这个概念

27
00:01:21,630 --> 00:01:23,640
没有带来

28
00:01:24,420 --> 00:01:26,990
比以前更好的一个东西的话

29
00:01:27,000 --> 00:01:28,110
只是换了个名字

30
00:01:29,330 --> 00:01:32,790
就这个的话,相当于鸦片一样

31
00:01:33,530 --> 00:01:34,440
我是不赞成的

32
00:01:36,100 --> 00:01:41,850
这里说了,这个就直接调数据库

33
00:01:41,860 --> 00:01:45,010
或者通过一个比较瘦的

34
00:01:45,020 --> 00:01:48,860
或者比较薄的一个数据库包装器

35
00:01:50,210 --> 00:01:55,720
实际上就是刚才讲的表数据入口

36
00:01:59,910 --> 00:02:06,620
逻辑组织成单个过程,这里,事务脚本

37
00:02:10,640 --> 00:02:12,840
另外一个,就是刚才说的

38
00:02:12,850 --> 00:02:16,310
跟它配合的,表数据入口

39
00:02:19,110 --> 00:02:26,170
那么Gateway这个的话,有的翻译叫网关

40
00:02:26,180 --> 00:02:32,670
但是它不是

41
00:02:32,680 --> 00:02:36,820
网关是指网络上,用在网络上是网关

42
00:02:38,230 --> 00:02:40,000
这个本来是叫入口、关口

43
00:02:41,470 --> 00:02:46,290
网关是用在网络上的时候叫网关

44
00:02:46,300 --> 00:02:48,530
比如说,设备有网关设备

45
00:02:49,450 --> 00:02:51,970
但现在我们是用在数据访问上

46
00:02:52,180 --> 00:02:54,210
我们叫关口、入口就可以了

47
00:02:54,930 --> 00:02:56,690
结果有的人网关、网关

48
00:02:57,140 --> 00:02:59,220
相当于

49
00:03:00,860 --> 00:03:03,700
把先后顺序搞反了

1
00:00:00,340 --> 00:00:02,970
就像我们知道鼠标

2
00:00:06,590 --> 00:00:08,620
现在叫鼠标,英文叫Mouse

3
00:00:10,120 --> 00:00:12,110
Mouse以前是指老鼠

4
00:00:13,620 --> 00:00:18,130
鼠标一开始也不叫鼠标,发明是什么

5
00:00:18,480 --> 00:00:21,270
叫Engelbart就是恩格尔巴特

6
00:00:21,480 --> 00:00:24,020
就是斯坦福的一个教授

7
00:00:24,470 --> 00:00:26,100
后来到施乐公司

8
00:00:27,060 --> 00:00:31,060
他发明了,实际上那个东西叫轨迹球

9
00:00:31,830 --> 00:00:33,000
鼠标一开始是

10
00:00:33,010 --> 00:00:36,110
机械鼠标,它底部是一个球

11
00:00:37,470 --> 00:00:38,880
不像我们现在今天光电

12
00:00:39,330 --> 00:00:40,920
无线,不是这样的

13
00:00:40,930 --> 00:00:42,040
它是一个球

14
00:00:42,500 --> 00:00:46,310
然后手拿着这个球滚来滚去这样

15
00:00:48,070 --> 00:00:53,380
后来有人觉得它像老鼠,就叫Mouse,鼠标

16
00:00:55,210 --> 00:00:56,910
鼠标是后来的

17
00:00:57,400 --> 00:00:59,820
你不能说,因为你习惯于看到鼠标

18
00:00:59,830 --> 00:01:02,060
你看,我们现代人来说

19
00:01:02,450 --> 00:01:04,220
平时看到都是鼠标,对不对

20
00:01:04,230 --> 00:01:05,420
你见过老鼠吗

21
00:01:06,220 --> 00:01:07,620
很少有人见过老鼠

22
00:01:08,300 --> 00:01:13,800
除非你住的房子是比较老的房子

23
00:01:14,720 --> 00:01:17,910
农村什么的,乡下什么可以

24
00:01:17,920 --> 00:01:20,530
大城市老鼠很难找的

25
00:01:20,540 --> 00:01:25,170
不能说我平时见的都是鼠标

26
00:01:26,150 --> 00:01:30,070
没见过老鼠,所以我把老鼠叫鼠标

27
00:01:30,470 --> 00:01:31,340
不是这样的

28
00:01:35,780 --> 00:01:37,500
要分清楚哪个先哪个后

29
00:01:37,670 --> 00:01:39,060
所以我们这个叫入口

30
00:01:39,730 --> 00:01:41,320
如果说,你可以叫关口

31
00:01:42,540 --> 00:01:50,020
这个数据入口,是数据映射器

32
00:01:50,830 --> 00:01:52,620
这个模式,后面我们会再说

33
00:01:53,470 --> 00:01:55,630
普及之前,的普遍的做法

34
00:01:55,720 --> 00:02:00,460
我们“小时候”,职业生涯开始的时候

35
00:02:00,820 --> 00:02:04,090
就是通过这个,发过去

36
00:02:04,100 --> 00:02:06,050
然后返回一个记录集

37
00:02:06,740 --> 00:02:08,850
Recordset或者Resultset

38
00:02:09,480 --> 00:02:12,190
然后从记录集里面取字段

39
00:02:12,200 --> 00:02:14,790
然后干活

40
00:02:15,700 --> 00:02:20,460
类似于事务脚本+表数据入口

41
00:02:24,800 --> 00:02:27,110
这里的理由,为什么要这样一个入口

42
00:02:27,910 --> 00:02:28,710
他的理由是说

43
00:02:28,720 --> 00:02:33,870
在业务逻辑混杂SQL语句引起一些问题

44
00:02:34,860 --> 00:02:39,740
所以通过数据入口把这个SQL语句封装起来

45
00:02:39,830 --> 00:02:41,700
让外面的Service

46
00:02:42,460 --> 00:02:44,000
包括前面的表示层

47
00:02:44,950 --> 00:02:46,420
不需要接触到SQL

48
00:02:50,650 --> 00:02:51,600
但是的话

49
00:02:53,900 --> 00:02:58,160
你拿一个这个来放SQL语句

50
00:02:58,370 --> 00:03:00,050
SQL语句应该放在

51
00:03:00,060 --> 00:03:00,290


52
00:03:00,300 --> 00:03:02,010
SQL语句应该待的地方才对

53
00:03:02,330 --> 00:03:04,730
比如说,在DBMS那里

54
00:03:04,940 --> 00:03:06,290
在数据库管理系统那里

55
00:03:06,940 --> 00:03:09,170
作为存储过程存在,才对的

56
00:03:09,180 --> 00:03:10,370
你又把它放

57
00:03:10,380 --> 00:03:13,310
你这个要么用Java写

58
00:03:13,320 --> 00:03:15,510
要么用C#写

59
00:03:16,540 --> 00:03:18,690
然后你在C#、Java代码里面

60
00:03:20,010 --> 00:03:23,150
突然放上几个字符串,里面是SQL语句

61
00:03:23,690 --> 00:03:25,940
这个本身就已经是比较别扭的了

62
00:03:28,000 --> 00:03:29,630
下面我们来看一下案例

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

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

相关文章

一点点 cv 经验 1:cv方向、模型评估、输入尺寸、目标检测器设计

一点点 cv 经验 1:cv方向、模型评估、输入尺寸、目标检测器设计 cv 方向Pytorch数据集划分 模型评估误差偏差方差噪声 输入尺寸方法一:让数据适应模型方法二:修改模型适应数据方法三:划分Patch,分别处理 目标检测器结构…

探索演进:了解IPv4和IPv6之间的区别

探索演进:了解IPv4和IPv6之间的区别 在广阔的互联网领域中,设备之间的通信依赖于一组独特的协议来促进连接。前景协议中,IPv4(Internet 协议版本 4)和 IPv6(Internet 协议版本 6)是数字基础设施…

二、OpenWebUI 使用(.Net8+SemanticKernel+Ollama)

OpenWebUI的github上安装部署已经很详细,直接照着敲命令即可 GitHub:https://github.com/open-webui/open-webui 一、使用配置 1、访问:http://Ip:3000,打开如下OpenWebUI界面。 2、先点击“注册”,注册一个管理员帐号…

从普通神经网络到transformer

1.单隐藏层的多层感知机 2. 循环神经网络 3.现代循环神经网络。 GRU 门控循环单元 LSTM 长短期记忆网络 候选记忆元: ˜C t ∈ R (nh) 记忆元

重生之 SpringBoot3 入门保姆级学习(04、 包扫描)

重生之 SpringBoot3 入门保姆级学习(04、 包扫描) 2.1 包扫描 2.1 包扫描 默认包扫描规则: SpringBootApplication 标注的就是主程序 SpringBoot 只会扫描主程序下面的包 自动的 component-scan 功能 在 SpringBootApplication 添加参数可以…

一文搞透常见的Python编码陷阱(上)(分析+案例)

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 一、别忘了冒号 1. if 语句 2. while 语句 3. for 语句 4. 函数定义 5. 类定义 6. try/except 语句 …

把maven本地库(windows)导入Nexus3(ubuntu)

1、在nexus中创建导入仓库 点“Create repository” 选择maven2(hosted) 填上对应的仓库name,Version policy选“Mixed” Hosted中的Deployment policy选择“Allow redeploy” 点“Create repository”创建仓库 创建好的仓库如下 记下仓库的url,下…

HTML-JavaWeb

目录 1.标题排版 2.标题样式 ​编辑 ​编辑 小结 3.超链接 4.正文排版 ​编辑​编辑​编辑5.正文布局 6.表格标签 7.表单标签 8.表单项标签 1.标题排版 ● 图片标签 :< img> src:指定图像的ur1(绝对路径/相对路径) width:图像的宽度(像素/相对于父元素的百…

OrangePi AIpro 开箱初体验及语音识别样例

OrangePi AIpro 开箱初体验及语音识别样例 一、 前言 首先非常感谢官方大大给予这次机会&#xff0c;让我有幸参加此次活动。 OrangePi AIpro联合华为精心打造&#xff0c;采用昇腾AI技术路线&#xff0c;具体为4核64位处理器AI处理器&#xff0c;集成图形处理器&#xff0c;…

【Linux环境搭建实战手册】:打造高效开发空间的秘籍

文章目录 &#x1f680;Linux环境搭建&#x1f4a5;1. 设备要求❤️2. 了解虚拟机&#x1f680;3. 安装VMware&#x1f308;4. 终端基础信息解读 &#x1f680;Linux环境搭建 &#x1f4a5;1. 设备要求 处理器&#xff08;CPU&#xff09;&#xff1a;至少具有1 GHz的处理能力&…

《Ai企业知识库》-模型实践-rasa开源学习框架-搭建简易机器人-环境准备(针对windows)-02

rasa框架 Conversational AI Platform | Superior Customer Experiences Start Here 阿丹: 其实现在可以使用的ai的开发框架有很多很多&#xff0c;就需要根据各个模型的能力边界等来讨论和设计。 rasa整体流程以及每一步的作用 NLU(自然语言理解): 自然语言理解&#xff…

07、SpringBoot 源码分析 - SpringApplication启动流程七

SpringBoot 源码分析 - SpringApplication启动流程七 初始化基本流程SpringApplication的prepareContext准备上下文postProcessApplicationContext处理applyInitializers初始化器初始化load SpringApplication的refreshContext刷新上下文refreshServletWebServerApplicationCon…

谷歌开发者账号身份验证不通过?该怎么办?

我们都清楚&#xff0c;随着谷歌上架行业的快速发展&#xff0c;谷歌政策也在不断更新变化&#xff0c;对开发者账号的审核标准也在不断提升。其中一项要求就是&#xff0c;开发者账号需要进行身份验证才能发布应用。 Your identity couldnt be verified&#xff01;“我们无法…

BookStack VS HelpLook两款知识库软件的区别

现在很多企业都会进行知识管理&#xff0c;在这个过程中&#xff0c;选择一个合适的知识库软件是一个不可避免的问题。在众多知识库软件中&#xff0c;HelpLook和BookStack这两款软件备受企业瞩目。不知如何选择&#xff0c;今天LookLook同学就简单介绍一下这两款知识库的区别&…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-24.1,2 SPI驱动实验-SPI协议介绍

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

常用时序逻辑电路模块:移位寄存器

寄存器与移位寄存器 寄存器&#xff1a;数字系统中用来存储二进制数据的逻辑器件。存储N位二进制数据的寄存器需要N个触发器组成。 移位功能&#xff1a;存储代码在脉冲作用下依次左移或右移。 移位寄存器&#xff1a; 移位寄存器中的数据可以在移位脉冲作用下依次逐位右移…

微信小程序打印功能怎么用?

在数字化时代&#xff0c;微信小程序为我们提供了许多便捷的服务&#xff0c;其中就包括打印功能。而琢贝云打印小程序&#xff0c;作为一款功能强大、操作简便的线上打印平台&#xff0c;更是受到了广大用户的青睐。下面&#xff0c;我将为大家介绍如何使用琢贝云打印小程序完…

AI开发初体验:昇腾加持,OrangePi AIpro 开发板

文章目录 一、前言二、板子介绍2.1 拆箱2.2 板子规格2.2.1 常规项目2.2.2 扩展项目2.2.3 操作系统 2.3 点板画面 三、AI程序初体验3.1 新奇的地方3.2 运行第一个AI程序3.2.1 硬件连接3.2.2 串口连接3.2.3 开启外部IP端口3.2.4 查询板子IP地址3.2.5 了解 juypter lab 启动脚本&a…

【ES6】ECMAS6新特性概览(一):变量声明let与const、箭头函数、模板字面量全面解析

&#x1f525; 个人主页&#xff1a;空白诗 &#x1f525; 热门专栏&#xff1a;【JavaScript】 文章目录 &#x1f33f; 引言一、 let 和 const - 变量声明的新方式 &#x1f31f;&#x1f4cc; var的问题回顾&#x1f4cc; let的革新&#x1f4cc; const的不变之美 二、 Arro…

双指针法练习题(2024/5/27)

1 反转字符串 II 给定一个字符串 s 和一个整数 k&#xff0c;从字符串开头算起&#xff0c;每计数至 2k 个字符&#xff0c;就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个&#xff0c;则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个&#xff0c;则…