logo资料库

d-bus概念简介.docx

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
从官方首页中可以看到这样一段描述 D-BUS 的话:“D-Bus is a message bus system, a simple way for applications to talk to one another. In addition to interprocess communication, D-Bus helps coordinate process lifecycle; it makes it simple and reliable to code a “single instance” application or daemon, and to launch applications and daemons on demand when their services are needed. ” 因此,D-BUS 从本质来说就是进程间通信(inter-process communication)(IPC)的一个实现。 他最初产生于 Linux 平台,是做为 freedesktop.org 项目的一部分来开发的。正开始深入地渗透到 Linux 桌面之中。已经在 Qt4,GNOME,Windows 以及 Maemo 实现。在 KDE4 中已经取代了著 名的 DCOP,在 GNOME 取代笨重的 Bonobo。在嵌入式系统中常用来实现 C/S 结构。 作为一个 IPC,他实现了两点: 1.在同一个桌面会话中不同的应用程序进行通讯:系统总线(system bus),这个总线由操作系统和后 台进程使用,安全性非常好,以使得任意的应用程序不能欺骗系统事件。应用程序可以直接和系统总线通 信,但是发送的消息受限制。 2.桌面程序与内核或守护进程进行通讯:会话总线(Session bus),属于登录用户私有。它是用户的 应用程序用来通信的一个会话总线。 二、D-BUS 特性 1.D-BUS 的协议是低延迟而且低开销的,设计得小(但是代码量不算很少吧)而且高效,以便最小化传 送时间。从设计上避免往返交互并允许异步操作。 2.协议是二进制的,而不是文本,这样就排除了费事的序列化过程(我们的万能参数序列化就比较占时间)。 3.考虑了字节顺序问题。 4.易用性:它按照消息而不是字节流来工作,并且自动地处理了许多困难的 IPC 问题,并且 D-Bus 库以 可以封装的方式来设计,这样开发者就可以使用框架里存在的对象/类型系统,而不用学习一种新的专用 于 IPC 的对象/类型系统。 5.请求时启动服务以及安全策略。 6.因为是做为 freedesktop.org 项目来开发的,有许多达人参加,所以质量应该是很有保证的。 7.支持多语言(C/C++/JAVA/C Sharp/Python/Ruby),多平台(Linux/windows/maemo)。 8.采用 C 语言,而不是 C++。 9.由于基本上不用于 internet 上的 IPC,因此对本地 IPC 进行了特别优化。 10.提供服务注册,理论上可以进行无限扩展。 三、构架 分成三层: a.libdbus 库,实现了底层的 API 以及协议,他除了需要 XML 解析器以外没有必须的依赖。对于不同 的语言,协议可能被重新实现。这个库是一个基础,虽然官方说他不是设计给应用程序调用的,但是实际 上应用程序是可以直接调用的,特别是 windows 版,后面的使用分析中的例子就能看到; b.消息守护进程,建立在 libdbus 的基础上,可以管理多个应用程序之间的通信。每个应用程序都和消 息守护进程建立 dbus 链接,由消息守护进程统一进行消息的派发; c.各种包装库,绑定了一些常见的框架(qt,Glib,Java,Python,C sharp etc.)没什么新功能, 只是对 dbus 进行了一层封装。方便使用官方建议应用程序使用这层进行调用;
分享到:
收藏