boost.asio 学习笔记04——asio的体系结构

时间:2022-09-09 12:33:28

三层类关系图

根据前面的分析,我们知道asio有着这样的逻辑:

  • 参考STL,提供basic模版,对外使用basic模版的实例提供接口。
  • basic模版将具体操作委托给下层服务类完成。
  • 下层服务类再把操作委托给平台相关的服务类。

 

鉴于此,我们将asio体系划分为三层:io object层,basic_模版类层,服务层。

  • 第一层:io object层,作为应用程序直接使用的对象,是各种basic_模版类的typedef实例类。
  • 第二层:basic_模版类层,提供对外操作的接口,并把具体操作转发给服务类。
  • 第三层:服务层。提供具体操作的底层实现,这一层又分为两层:
    • 操作接收层
    • 平台适配层

 

基本的体系结构关系如下图所示。注意:图中并非全部asio中的类。

 

boost.asio 学习笔记04——asio的体系结构

 

动态组装                 

前面已经提过,resolverSTL中的string一样,都是使用了basic_模板类的一个具体实例。这种在编译时动态地选择对应的组件进行编译,我们姑且称为动态组装。这种技术使得我们可以对asioservice进行扩展。例如自己实现一个resolverservice类,然后告诉basic_resolver,你要使用自己的service类,而非默认的那个……

 

不过话说回来,自己对boost或者STL进行扩展,需要点实力的:)