vault backup: 2026-04-13 09:36:51
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
# 中间件
|
||||
|
||||
中间件处于操作系统、网络和数据库之上,网络、数据库应用软件下层
|
||||
|
||||
按照中间件在分布式系统中承担的职责不同,可以划分为
|
||||
**通信处理**(消息)中间件:建网和制定出通信协议,以保证系统能在不同平台之间通信,实现分布式系统中可靠、高效、实时的跨平台数据传输
|
||||
**事务处理**(交易)中间件:大量事务在多台应用服务器上能实时并发运行,并进行负载平衡的调度,实现与昂贵的可靠性和大型计算机系统的同等功能
|
||||
**数据存取**管理中间件:为在网络上虚拟缓冲存取、格式转换、解压等带来方便
|
||||
Web服务中间件:有负载均衡、缓存、安全性等功能
|
||||
安全中间件:加密、认证等
|
||||
跨平台和构架的中间件:解决跨平台问题,如CORBA
|
||||
专用平台中间件:为特定应用领域设计参考模式、建立相应构架
|
||||
网络中间件:包括网管、接入、网络测试、虚拟社区和虚拟缓冲等
|
||||
|
||||
# 软件构件
|
||||
|
||||
构件又称为组件,是一个==自包容、可复用(最重要的属性)== 的程序集。构件是一个程序集或者说是一组程序的集合
|
||||
这个集合可能会以各种方式体现出来,如源程序或二进制的代码。
|
||||
这个集合整体向外提供统一的访问接口,构件外部只能通过接口来访问构件,而不能直接操作构件内部。
|
||||
|
||||
构件是独立的、自包容的,因此构架的开发也是独立的,构件之间通过接口相互协作。
|
||||
![[构件设计过程.png|697]]
|
||||
**构件组装模型的优点如下:**
|
||||
构件的自包容性让系统的扩展变得更加容易;
|
||||
设计良好的构件更容易被重用,降低软件开发成本;
|
||||
构建的粒度较整个系统更小,因此安排开发任务更加灵活,可以将开发团队分成若干组,并行地独立开发构件
|
||||
**构件组装模型的缺点如下:**
|
||||
对构件的设计需要经验丰富的架构设计师,设计不良的构件难以实现构件的优点,降低构件组装模型的重用度;
|
||||
在考虑软件的重用度时,往往会对其他方面做出让步,如性能等;
|
||||
使用构件组装应用程序时,要求程序员能熟练地掌握构件,增加了研发人员的学习成本;
|
||||
第三方构件库的质量会最终影响软件的质量,而第三方构件库的质量往往是开发团队难以控制的
|
||||
|
||||
**常见的构件标准**
|
||||
主流的商用构件标准规范包括
|
||||
对象管理组织(Object Management Group,OMG)的CORBA、Sun的J2EE、Microsoft的DNA
|
||||
|
||||
**CORBA**(Common Object Request Broker Architecture)
|
||||
主要分为三个层次:对象请求代理、公共对象服务和公共设施
|
||||
- 最底层的对象请求代理(Object Request Broker,ORB)规定了分布对象的定义(接口)和语言映射,实现对象间的通信和互操作,是分布对象系统中的软总线
|
||||
- 在ORB之上定义了很多公共服务,可以提供注入并发服务、名称服务、事务(交易)服务、安全服务等各种各样的服务
|
||||
- 最上层的公共设施定义了构件框架,提供可直接为业务对象使用的服务,规定业务对象有效协作所需的协定规则
|
||||
![[请求流.png]]
|
||||
- 伺服对象(Servant):CORBA对象的真正实现,负责完成客户端请求。
|
||||
- 对象适配器(Object Adapter):用于屏蔽ORB内核的实现细节,为服务器对象的实现者提供抽象的接口,以便他们使用ORB内部的某些功能。
|
||||
- 对象请求代理(Object Request Broker):解释调用并负责查找实现该请求的对象,将参数传给找到的对象,并调用方法返回结果。客户不需要了解服务对象的位置、通信方式、实现、激活或存储机制。
|
||||
- POA是对象实现与ORB其他组件之间的中介,它将客户请求传送到伺服对象,按需创建子POA,提供管理伺服对象的策略。
|
||||
BIN
01学习/软件类/理论知识/软考高级系统构架师/图片缓存/构件设计过程.png
Normal file
BIN
01学习/软件类/理论知识/软考高级系统构架师/图片缓存/构件设计过程.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
BIN
01学习/软件类/理论知识/软考高级系统构架师/图片缓存/请求流.png
Normal file
BIN
01学习/软件类/理论知识/软考高级系统构架师/图片缓存/请求流.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 52 KiB |
13
01学习/软件类/理论知识/软考高级系统构架师/白板/构件设计过程.canvas
Normal file
13
01学习/软件类/理论知识/软考高级系统构架师/白板/构件设计过程.canvas
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"nodes":[
|
||||
{"id":"8e5245e6f36f4a91","type":"text","text":"设计构件组装","x":-152,"y":-20,"width":142,"height":60},
|
||||
{"id":"67874d0bd425bec9","type":"text","text":"建立构件库","x":40,"y":-20,"width":126,"height":60},
|
||||
{"id":"725bf98da48bda5a","type":"text","text":"构件应用软件","x":220,"y":-20,"width":142,"height":60},
|
||||
{"id":"28c22aef18f6d3c3","x":415,"y":-20,"width":126,"height":60,"type":"text","text":"测试与发布"}
|
||||
],
|
||||
"edges":[
|
||||
{"id":"00555714743bc713","fromNode":"8e5245e6f36f4a91","fromSide":"right","toNode":"67874d0bd425bec9","toSide":"left"},
|
||||
{"id":"948f2156023ef1a6","fromNode":"67874d0bd425bec9","fromSide":"right","toNode":"725bf98da48bda5a","toSide":"left"},
|
||||
{"id":"c8a08f706ee9b030","fromNode":"725bf98da48bda5a","fromSide":"right","toNode":"28c22aef18f6d3c3","toSide":"left"}
|
||||
]
|
||||
}
|
||||
21
01学习/软件类/理论知识/软考高级系统构架师/白板/请求流.canvas
Normal file
21
01学习/软件类/理论知识/软考高级系统构架师/白板/请求流.canvas
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"nodes":[
|
||||
{"id":"45570b83ef5fe3ba","x":76,"y":60,"width":220,"height":440,"type":"group"},
|
||||
{"id":"ecad3bbe41bf2ad9","x":-400,"y":60,"width":221,"height":360,"type":"group"},
|
||||
{"id":"e6f3a890a1638e1a","type":"text","text":"CORBA对象","x":112,"y":80,"width":148,"height":60},
|
||||
{"id":"0a29e3ae7b0aae5b","type":"text","text":"服务器","x":139,"y":-12,"width":94,"height":60},
|
||||
{"id":"64309d6bd4c24857","type":"text","text":"伺服对象","x":131,"y":180,"width":110,"height":60},
|
||||
{"id":"6d736434f5b87e3d","type":"text","text":"对象适配器POA","x":96,"y":260,"width":180,"height":60},
|
||||
{"id":"5c27a9143e2b86e9","type":"text","text":"框架IDL Skeleton","x":96,"y":340,"width":180,"height":60},
|
||||
{"id":"f0fcb3586958d149","type":"text","text":"服务器ORB","x":96,"y":420,"width":180,"height":60},
|
||||
{"id":"40f062773c0262b4","type":"text","text":"桩/存根 IDL Stub","x":-380,"y":260,"width":180,"height":60},
|
||||
{"id":"bab680f7b28a8cee","type":"text","text":"客户端ORB","x":-379,"y":340,"width":180,"height":60},
|
||||
{"id":"49dfc2452cc7ff9d","type":"text","text":"对象引用","x":-344,"y":80,"width":110,"height":60},
|
||||
{"id":"4828268f80d9b1b8","type":"text","text":"请求调用","x":-344,"y":180,"width":110,"height":60},
|
||||
{"id":"d10a7bc8cac04c8d","type":"text","text":"客户端","x":-336,"y":-12,"width":94,"height":60}
|
||||
],
|
||||
"edges":[
|
||||
{"id":"afd5204fe777e100","fromNode":"49dfc2452cc7ff9d","fromSide":"right","toNode":"e6f3a890a1638e1a","toSide":"left","fromEnd":"arrow","color":"1","label":"逻辑连接"},
|
||||
{"id":"e9b83e964436b9d7","fromNode":"4828268f80d9b1b8","fromSide":"bottom","toNode":"64309d6bd4c24857","toSide":"bottom","label":"实际请求流"}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user