http://blog.163.com/henan_lujun/blog/static/19538333201341453117804/
boost.asio 学习笔记04——asio的体系结构
三层类关系图
根据前面的分析,我们知道asio有着这样的逻辑:
- 参考STL,提供basic模版,对外使用basic模版的实例提供接口。
- basic模版将具体操作委托给下层服务类完成。
- 下层服务类再把操作委托给平台相关的服务类。
鉴于此,我们将asio体系划分为三层:io object层,basic_ 模版类层,服务层。
- 第一层:io object层,作为应用程序直接使用的对象,是各种basic_ 模版类的typedef实例类。
- 第二层:basic_ 模版类层,提供对外操作的接口,并把具体操作转发给服务类。
-
第三层:服务层。提供具体操作的底层实现,这一层又分为两层:
- 操作接收层
- 平台适配层
基本的体系结构关系如下图所示。 注意:图中并非全部asio中的类。
动态组装
前面已经提过,resolver和STL中的string一样,都是使用了basic_模板类的一个具体实例。这种在编译时动态地选择对应的组件进行编译,我们姑且称为动态组装。这种技术使得我们可以对asio的service进行扩展。例如自己实现一个resolver的service类,然后告诉basic_resolver,你要使用自己的service类,而非默认的那个……
不过话说回来,自己对boost或者STL进行扩展,需要点实力的 J