针对对象间跨线程或跨DLL通信时容易增加对象之间耦合度的现象,借鉴Action Script 3.0语言中事件模型以及PC机总线通信的思想,提出一种基于C++11的轻量级对象间通信机制.在设计上,该机制采用事件作为通信载体,事件可以在总线上传输形成事件流,同时也能被设置了相应类型监听器的对象捕捉.对象(或DLL)实质上是在和总线进行交互,交互接口是用户预定义好的一些事件,从而有效降低对象之间的耦合度.在实现上,该机制定义了一个两层的体系结构——运输层和适配层.让适配层(顶层)的各个DLL模块都以隐式链接方式加载运输层提供的DLL,该DLL主要任务是导出一个包含一个静态对象队列、一个静态事件队列和一条总线的类,这样适配层中实例化了此导出类的对象就可以通过接口成员函数方便、安全地访问到运输层的总线,从而完成对象间的交互.本文中使用的方法对编写大型软件系统的基础通信架构具有参考价值.
通信机制 跨DLL通信 软总线 跨线程通信 低耦合