软件架构与设计 第 7 课 Software Connectors
在了解了整体的框架之后,这节课我们来看架构中很重要的一部分——连接器。这里主要是一些概念和设计的介绍。
我们首先要回答的问题就是:什么是连接器?
连接器是一个架构元素,负责组件之间的交互。组件之间的交互可以很简单,比如过程调用和共享变量访问,当然也可以很复杂,比如说客户端-服务端协议,数据库访问协议或者异步事件广播。所以总体来看,每个连接器要保证交互的方式和内容。
看看上面的图,就会发现,好像找不到所谓的连接器。的确,连接器在具体的实现中,可能没有明确的代码和实体,反而是一种分布式的实现,横跨不同的模块和交互机制。
但是在软件架构中,连接器是一等实体,有具体的身份,用来描述所有的系统交互。
可能有同学要问,为什么代码里没有,非要在概念上独立出来呢?
因为连接器和组件不同,组件提供应用相关的功能,而连接器是提供应用无关的交互机制,一旦交互变得复杂,这种抽象就非常有用。至少有如下好处:
- 分离计算和交互
- 最小化组件间的相互依赖
- 支持软件的演化
- 支持动态设计
- 方便多种实现方式
- 易于分布式
- 有助于系统分析和测试
连接器主要扮演下面的角色:
- 是不同组件交互的地方
- 定义协议规范的属性
- 支持的接口类型
- 保证交互属性
- 交互顺序规则
- 性能
- 负责 communication, coordination, conversion, facilitation
作为 communicator,连接器支持不同的通信机制,例如过程调用,RPC,共享数据访问,消息传递;同时限制规范通信的结构和方向,也保证服务质量。更重要的是,可以分离通信与计算,可能会影响到非功能性的系统特性(如性能,可拓展性,安全性)
作为 coordinator,连接器控制计算和数据传递,分离控制和计算,让 communication, conversion 和 facilitation 正交,互不影响。
作为 converter,连接器使得交互可以独立设计,解耦不同的组件(类型,数量,频次,顺序),比如 Adaptor 和 Wrapper
作为 facilitator,连接器让不同的组件协同工作,控制共享信息的访问,保证性能(负载均衡)以及提供同步机制(关键区,Monitor)
总结一下,常见的连接器类型有:
- Procedure call
- Data access
- Event
- Stream
- Linkage
- Distributor
- Arbitrator
- Adaptor
下面是一些具体的例子:


连接器使得为复杂交互进行抽象和建模成为可能,通过这种灵活性,是的系统可以方便地进行变化,但是需要注意在性能和灵活性之间进行权衡。
相关文章
- 软件架构与设计 习题课 6 设计模式进阶练习2016-03-30
- 软件架构与设计 习题课 5 设计模式练习2016-03-20
- 软件架构与设计 第 20 课 设计模式2016-03-17
- 软件架构与设计 第 19 课 People, Role, Teams2016-02-27