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

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
下面我们来看一下案例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值