1. 为什么要用dbus,如果不用dbus要用什么来代替
目前dbus 生态系统构建得还是比较广泛的,已经被 kernel 吸收, gtk 和 qt 也封装出high-level的框架。dbus 是 low-level 的消息机制,可以基于dbus 定制开发出自己的 event system. dbus 的性能和具体的技术架构还没有弄清楚(想着也是epoll/poll/select 的reactor)。由 dbus-daemon 为中心化的 C-S ,兼有route,device manager等作用。觉得 dbus 主要的优势在于 接口化(idl / xml)。
dbus 最底层无非是 八种 IPC 组合(pipe, socket, msgqueue, sharebuffer,...) ,所以替换dbus 从底层就是socket。如果想使用类似的机制,有各种 msgqueue(zeromq, Java 里的 ActiveMQ, Appach 的 RabbitMQ), 类似的消息中间件还有 Kafka(Scala), libevent, libev, libuv(Node.js)。
各有各的特性,可以根据自己的需求选用。
目前移植 boost 的时候遇到了 asio ,好像和 reactor 架构不一样的一种架构。也可以参考。