回到首页

输入关键词,多个关键词用空格分隔。

← 软件架构与设计 · 系列目录

软件架构与设计 第 7 课 Software Connectors

约 2 分钟

在了解了整体的框架之后,这节课我们来看架构中很重要的一部分——连接器。这里主要是一些概念和设计的介绍。


我们首先要回答的问题就是:什么是连接器?

连接器是一个架构元素,负责组件之间的交互。组件之间的交互可以很简单,比如过程调用和共享变量访问,当然也可以很复杂,比如说客户端-服务端协议,数据库访问协议或者异步事件广播。所以总体来看,每个连接器要保证交互的方式和内容。

看看上面的图,就会发现,好像找不到所谓的连接器。的确,连接器在具体的实现中,可能没有明确的代码和实体,反而是一种分布式的实现,横跨不同的模块和交互机制。

但是在软件架构中,连接器是一等实体,有具体的身份,用来描述所有的系统交互。

可能有同学要问,为什么代码里没有,非要在概念上独立出来呢?

因为连接器和组件不同,组件提供应用相关的功能,而连接器是提供应用无关的交互机制,一旦交互变得复杂,这种抽象就非常有用。至少有如下好处:

  1. 分离计算和交互
  2. 最小化组件间的相互依赖
  3. 支持软件的演化
  4. 支持动态设计
  5. 方便多种实现方式
  6. 易于分布式
  7. 有助于系统分析和测试

连接器主要扮演下面的角色:

  • 是不同组件交互的地方
  • 定义协议规范的属性
    • 支持的接口类型
    • 保证交互属性
    • 交互顺序规则
    • 性能
  • 负责 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

下面是一些具体的例子:

连接器使得为复杂交互进行抽象和建模成为可能,通过这种灵活性,是的系统可以方便地进行变化,但是需要注意在性能和灵活性之间进行权衡。

相关文章