为啥要用dbus,如果不用dbus要用啥来代替?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥要用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 架构不一样的一种架构。也可以参考。
参考技术A socket 。之所以用DBus,因为DBUS说:哥传递的不是数据,而是方法。

以上是关于为啥要用dbus,如果不用dbus要用啥来代替?的主要内容,如果未能解决你的问题,请参考以下文章

BaseJQueryEventObject、JQueryEventObject 等已弃用。我们用啥来代替它?

Oracle数据库存储过程中输出参数为自定义游标类型时,使用call或者exec调用时,用啥来给游标赋值

IOS开发 为啥要用block

为啥蓝牙在android中需要DBUS通信方式?

在我的 Qt 应用程序中,我可以用啥来代替 sleep 和 usleep?

为啥不能在 Python 中使用 dbus 调用 org.freedesktop.NetworkManager 中的方法?