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 架構不一樣的一種架構。也可以參考。