[图解]企业应用架构模式2024新译本讲解14-服务层2

news2024/12/23 18:43:32

1
00:00:01,070 --> 00:00:01,820
我们来看案例

2
00:00:02,600 --> 00:00:06,620
案例也同样是之前跟事务脚本

3
00:00:07,030 --> 00:00:09,400
领域模型等等用过的案例是一样的

4
00:00:10,480 --> 00:00:12,700
这里译文改了一些

5
00:00:16,200 --> 00:00:20,430
应用服务类在这里

6
00:00:21,080 --> 00:00:22,990
我们看它的命名

7
00:00:23,530 --> 00:00:24,590
我们往往是以

8
00:00:26,110 --> 00:00:28,510
实际上就相当于我们分析类里面的控制类

9
00:00:31,720 --> 00:00:33,040
用用例的名字来命名

10
00:00:34,140 --> 00:00:40,080
这个在事务脚本里面已经见到过了

11
00:00:40,690 --> 00:00:42,920
只不过事务脚本的时候

12
00:00:42,930 --> 00:00:45,630
说的重点在事务脚本上面

13
00:00:45,930 --> 00:00:50,170
现在我们说的是服务类的上面

14
00:00:51,860 --> 00:01:01,200
可以说,泛化一个抽象的应用服务类

15
00:01:02,030 --> 00:01:06,030
同样,这些具体的这些的话也可以泛化

16
00:01:06,040 --> 00:01:14,020
但这里面的话它就直接,这个就是什么

17
00:01:14,030 --> 00:01:19,540
这个就是接口了

18
00:01:19,860 --> 00:01:21,090
刚刚说错了

19
00:01:21,100 --> 00:01:22,330
这个就是接口了

20
00:01:22,340 --> 00:01:25,190
一会我们看后面的

21
00:01:25,200 --> 00:01:27,200
书上

22
00:01:27,210 --> 00:01:28,560
还有更细的图

23
00:01:29,790 --> 00:01:31,660
这个的话有点冲突

24
00:01:31,830 --> 00:01:33,580
跟我们后面演示的代码冲突

25
00:01:33,590 --> 00:01:34,620
后面的演示代码的话

26
00:01:37,000 --> 00:01:41,060
这个名字是描述实现接口的类的

27
00:01:41,660 --> 00:01:43,420
接口应该有个I在这里

28
00:01:43,680 --> 00:01:47,450
前面有个I,这个的话

29
00:01:47,460 --> 00:01:49,090
他就把这个标成接口

30
00:01:49,630 --> 00:01:56,160
意思就是说,这个类它依赖的是接口

31
00:01:56,370 --> 00:01:57,280
后面的实现

32
00:01:57,290 --> 00:02:00,930
包括Email怎么发

33
00:02:00,940 --> 00:02:03,660
还有后面的第三方应用

34
00:02:03,670 --> 00:02:05,260
怎么样发布到那里去

35
00:02:06,320 --> 00:02:09,000
由实现类里面来写

36
00:02:11,410 --> 00:02:13,430
我们来看这个案例

37
00:02:13,950 --> 00:02:15,270
同样的,来源

38
00:02:15,280 --> 00:02:17,790
也是跟我们前面的来源是一样的

39
00:02:18,830 --> 00:02:23,870
这是类图,你看,这个就要多几个类

40
00:02:24,040 --> 00:02:26,420
你看,刚才这个类在这里

41
00:02:27,090 --> 00:02:30,370
刚才这个类把它说是接口

42
00:02:30,620 --> 00:02:32,920
这里单独分成一个接口

43
00:02:34,420 --> 00:02:35,420
这个是实现它

44
00:02:35,430 --> 00:02:39,130
这个也是

45
00:02:41,060 --> 00:02:44,260
你看这多了一个I,II看起来有点

46
00:02:44,270 --> 00:02:48,180
两个I

47
00:02:49,330 --> 00:02:52,610
一个是电子邮件的接口

48
00:02:52,620 --> 00:02:55,810
一个是集成应用的接口

49
00:02:55,820 --> 00:02:57,470
也就是说,这里面

50
00:02:58,600 --> 00:03:03,470
它就添加了一点点应用的逻辑

51
00:03:03,600 --> 00:03:06,380
就是说,前面收入确认这些东西

52
00:03:06,590 --> 00:03:07,720
我们前面讲

53
00:03:07,730 --> 00:03:09,280
用一个领域模型什么

54
00:03:09,660 --> 00:03:10,760
都可以封装了

55
00:03:12,140 --> 00:03:15,360
但是它这里加了一个内容,就是说

56
00:03:15,370 --> 00:03:19,530
算完之后发一个邮件

57
00:03:20,870 --> 00:03:21,850
显然,发邮件

58
00:03:22,020 --> 00:03:25,460
就不能跟之前

59
00:03:25,670 --> 00:03:27,420
产品合同这些类混在一起了

60
00:03:27,430 --> 00:03:27,660
对吧

61
00:03:28,650 --> 00:03:29,330
这是一个

62
00:03:29,340 --> 00:03:30,010
第二个

63
00:03:31,000 --> 00:03:34,610
并用一个面向消息的中间件来发布消息

64
00:03:35,110 --> 00:03:37,060
通知其他已集成的应用

65
00:03:39,920 --> 00:03:43,450
显然这是另外一个领域的内容

66
00:03:45,550 --> 00:03:47,660
跟合同、产品

67
00:03:48,230 --> 00:03:49,620
这个不是一个领域的

68
00:03:50,480 --> 00:03:54,950
所以不能够混在一起

69
00:03:59,000 --> 00:04:04,350
所以在这个地方定义了两个入口

70
00:04:05,500 --> 00:04:07,140
入口的类,这个一样

71
00:04:08,560 --> 00:04:11,830
管理数据库连接,DbManager

72
00:04:12,800 --> 00:04:13,870
这是主程序

73
00:04:14,740 --> 00:04:18,280
然后同样这是一个入口的类

74
00:04:19,830 --> 00:04:22,920
定义了数据库的访问

75
00:04:23,290 --> 00:04:28,500
表数据入口,跟事务脚本里面的一样,没有区别

76
00:04:30,630 --> 00:04:33,300
这是类图,我们来看序列图

77
00:04:34,620 --> 00:04:37,830
序列图,你看,它这里就比较多了

78
00:04:37,920 --> 00:04:42,960
对象在这里,很多个

79
00:04:42,970 --> 00:04:49,200
1234567

80
00:04:49,210 --> 00:04:52,370
这里你看,Email的入口

81
00:04:52,770 --> 00:04:55,450
这是集成应用的入口

82
00:04:56,230 --> 00:04:59,060
上面算完了

83
00:04:59,520 --> 00:05:01,960
这下面发Email,发布到集成应用

84
00:05:03,730 --> 00:05:07,080
在这里,我们看一下

85
00:05:09,330 --> 00:05:11,010
工具上,更清楚一点

86
00:05:11,020 --> 00:05:12,690
工具上字体不太好看

87
00:05:12,980 --> 00:05:16,170
但是更清楚,序列图

88
00:05:19,410 --> 00:05:20,090
类图在这里

89
00:05:21,800 --> 00:05:30,310
序列图,这是应用服务类

90
00:05:30,760 --> 00:05:31,840


91
00:05:31,850 --> 00:05:33,800


92
00:05:45,050 --> 00:05:45,140
这里

93
00:05:46,710 --> 00:05:48,850
创建了一个电子邮件入口

94
00:05:49,390 --> 00:05:49,950
然后

95
00:05:58,500 --> 00:06:01,860
里面让它发送电子邮件信息

96
00:06:03,560 --> 00:06:06,550
同样的,下面一个集成应用的入口

97
00:06:08,180 --> 00:06:14,560
然后这里发布到集成应用

98
00:06:15,380 --> 00:06:20,910
涉及到的类是比较多的

99
00:06:21,330 --> 00:06:27,440


100
00:06:29,510 --> 00:06:34,730
有8个类来协作

101
00:06:35,950 --> 00:06:37,760
我们来看一下它的代码

1
00:00:00,730 --> 00:00:01,890
这是代码

2
00:00:03,660 --> 00:00:04,730
我们看主程序

3
00:00:06,390 --> 00:00:08,420
同样,我们这里也加了一些注释

4
00:00:09,510 --> 00:00:14,260
我们逐步逐句运行

5
00:00:32,620 --> 00:00:35,290
这里面,也是跟前面事务脚本一样

6
00:00:35,300 --> 00:00:39,370
用了一个SQLite的数据库

7
00:00:40,210 --> 00:00:42,280
我们前面说过了,就不再说了

8
00:00:44,850 --> 00:00:49,550
首先DbManager

9
00:00:52,070 --> 00:00:54,590
用DbManager来创建数据库连接

10
00:00:55,350 --> 00:00:59,130
这里把它放到一个using的块里面来

11
00:00:59,390 --> 00:01:03,590
意思是确保它在使用之后能够被释放

12
00:01:03,760 --> 00:01:07,150
一旦这个代码块结束之后

13
00:01:07,590 --> 00:01:09,480
它就会被释放掉

14
00:01:13,060 --> 00:01:15,890
那么这个就跳到DbManager这里了

15
00:01:16,580 --> 00:01:17,970
前面跟事务脚本一样了

16
00:01:18,260 --> 00:01:24,750
这个一样,数据源,一样的,就不多说了

17
00:01:24,760 --> 00:01:25,670
打开连接

18
00:01:26,950 --> 00:01:29,680
然后创建一个Command对象

19
00:01:29,930 --> 00:01:31,480
数据库命令对象

20
00:01:32,480 --> 00:01:35,930
然后设置命令的SQL语句

21
00:01:36,480 --> 00:01:39,230
SQL语句就是如果这个表存在的话

22
00:01:39,240 --> 00:01:40,870
就清空,这几步就是

23
00:01:42,450 --> 00:01:45,330
把数据库里面的内容给建立起来了

24
00:01:46,580 --> 00:01:47,850
有的话就清空

25
00:01:49,380 --> 00:01:51,210
设置,执行,一样的

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

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

相关文章

ai创作是什么?分享ai创作的方法

ai创作是什么?在当今这个信息爆炸的时代,文字的力量愈发显得重要。无论是日常沟通还是专业创作,我们都需要用文字来表达自己,传递思想。然而,面对海量的信息和快速变化的世界,如何高效地生成高质量的文字内…

高效、智能、稳定,LoRa监测终端为光伏跟踪支架系统保驾护航

在光伏发电领域,光伏跟踪支架作为提高光伏系统发电效率的关键技术之一,已经得到了广泛的应用。然而,如何有效地监测光伏跟踪支架的状态,确保其稳定、高效地运行,一直是业界关注的焦点。近年来,随着物联网技…

基础模型服务商SiliconCloud,新注册用户赠送 14 元的配额(约 1 亿 token)

注册链接:https://cloud.siliconflow.cn?referrerclx1f2kue00005c599dx5u8dz 开源模型可以自己部署,对服务器的要求还是挺高,以及学习成本、部署过程成本都是比较高,硅基流动SiliconFlow提供了另一个方式,可以像使用…

C++ (week8):数据库

文章目录 一、数据库简介1.数据库2.MySQL(1)数据库的结构(2)MySQL的三种使用方式(3)命令行(4)Navicat Premium 二、SQL1.SQL (Structured Query Language),即结构化查询语言2.数据定义语言 DDL (Data Definition Language) ,创建、修改、删除数据库、表结…

LCB模型引领机器人进入端到端新维度

论文标题: From LLMs to Actions: Latent Codes as Bridges in Hierarchical Robot Control 论文作者: Yide Shentu,Philipp Wu,Aravind Rajeswaran,Pieter Abbeel 项目地址: https://fredshentu.gith…

WDF驱动开发-计时器

WDF可以使用框架的内置计时器支持。 它适用于 Kernel-Mode Driver Framework (KMDF) 驱动程序,以及从版本 2 开始的 User-Mode Driver Framework (UMDF) 驱动程序。 框架提供了一个 计时器对象 ,使驱动程序能够创建计时器。 在驱动程序创建计时器对象并…

北斗高精度定位终端的应用领域和作用

北斗高精度定位终端的技术进步不仅体现在硬件设备的优化上,还深入到软件算法的革新。采用先进的实时动态差分技术(RTK),结合地面增强基站网络,能够大幅度提高定位解算的精度和速度,即使在复杂的城市峡谷或茂…

哪些好用的AI绘画生成软件?建议你试试这四款

哪些好用的AI绘画生成软件?随着人工智能技术的飞速发展,AI绘画生成软件逐渐走入大众的视野,为艺术创作领域带来了革命性的变革。今天,就让我们一起探索四款备受推崇的AI绘画生成软件,看看它们如何以独特的魅力&#xf…

2024-05-31T08:36:09.000+00:00 转换 YYYY-MM-DD HH-MM-SS

function formatDate(date) {// 处理ISO 8601字符串if (typeof date string) {date new Date(date);}// 处理时间戳else if (typeof date number) {date new Date(date * 1000); // 假设后端时间戳为秒,需要乘以1000转换为毫秒}// 自定义格式化,例如…

教你python自动识别图文验证码的解决方案!

验证码识别解决方案 对于web应用程序来讲,处于安全性考虑,在登录的时候,都会设置验证码,验证码的类型种类繁多,有图片中辨别数字字母的,有点击图片中指定的文字的,也有算术计算结果的&#xff0…

HTML(11)——CSS三大特性

CSS拥有三大特性&#xff0c;分别是&#xff1a;继承性&#xff0c;层叠性&#xff0c;优先级 继承性 说明&#xff1a;子级标签默认继承父级标签的文字控制属性。 如果子级自己有样式&#xff0c;则父级的属性不生效 例如&#xff1a; <style> body{ font-size:30px;…

第十五章 观察者模式

目录 1 观察者模式介绍 2 观察者模式原理 3 观察者模式实现 4 观察者模式应用实例 5 观察者模式总结 1 观察者模式介绍 观察者模式的应用场景非常广泛&#xff0c;小到代码层面的解耦&#xff0c;大到架构层面的系统解耦&#xff0c;再或者 一些产品的设计思路&#xff0c…

“AI引擎”澎湃动力!深圳机场携手实在智能打造民航财务数字员工

近日&#xff0c;深圳机场集团&#xff08;000089&#xff09;与实在智能达成合作&#xff0c;引入了业内领先的平台级自动化产品——实在RPA数字员工&#xff0c;部署实在智能集“自动化平台开箱即用解决方案咨询”为一体的数字员工解决方案&#xff0c;实现纳税申报、报表制作…

一键简易桌签(带背景)-Word插件-大珩助手

问题整理&#xff1a; 如何Word中设计简易桌签&#xff1f;如何设置带背景图的桌签&#xff1f; Word大珩助手是一款功能丰富的Office Word插件&#xff0c;旨在提高用户在处理文档时的效率。它具有多种实用的功能&#xff0c;能够帮助用户轻松修改、优化和管理Word文件&…

3ds Max软件下载安装:3D建模软件 轻松开启你的建模之旅!

3ds Max&#xff0c;在建模过程中&#xff0c;网格建模和NURBS建模两大技术发挥着不可或缺的作用。网格建模允许用户通过顶点、边和面等元素的调整&#xff0c;精确地塑造出模型的形态&#xff1b;而NURBS建模则以其优秀的曲线和曲面处理能力&#xff0c;为设计师们提供了更为平…

el-table动态表头 浏览器大小改变产生表格错位问题

问题描述 使用element-ui的table组件时,表头由前端发送请求后动态更新,左侧编号列设定为fixed:left左侧固定定位;在改变屏幕大小(主副屏互转)时出现表格错位问题. 问题分析 element-ui的官方文档对该情况提供了一个doLayout方法来解决该问题; doLayout:对 Table 进行重新布局。…

ICMAN触摸芯片——大金属触摸

ICMAN触摸芯片之大金属触摸 按照工业级别设计 稳定性与抗干扰能力强 单颗芯片支持 1~12按键 可以轻松实现 金属灯触摸方案的触摸开关&#xff0b;无极调光 高性能ICMAN触摸芯片在金属LED触摸台灯的应用

PDF为何成为职场必备?编辑不求人,这几款工具助你一臂之力

不管是工作和学习&#xff0c;我们使用PDF文档的频率非常高&#xff0c;但是说起为什么要用PDF&#xff0c;却又只知其一不知其二。 为什么我们需要PDF&#xff1f; PDF&#xff0c;全称为Portable Document Format&#xff08;可移植文件格式&#xff09;&#xff0c;是一种…

网络校时服务器:铁路对时有妙招

在信息高速发展的今天&#xff0c;铁路作为国家的经济大动脉&#xff0c;与广大市民生活息息相关&#xff0c;担负着运送大流量乘客、保证交通畅通的重任&#xff0c;为了保证列车的正点运行和乘客的行程&#xff0c;对时间精准度的要求是非常严格的。随着我国铁路的发展速度和…

LSM-Tree数据结构原理

LSM-Tree树原理 什么是LSM-Tree LSM-Tree 即 Log Structrued Merge Tree&#xff0c;这是一种分层有序&#xff0c;硬盘友好的数据结构。核心思想是利用磁盘顺序写性能远高于随机写。 LSM-Tree 并不是一种严格的树结构&#xff0c;而是一种内存磁盘的多层存储结构。HBase、L…