Dbus简介

来源:互联网 发布:看刀路软件 编辑:程序博客网 时间:2024/05/01 20:43
 

Linux下基本的通信方式有如下8种:

1. 管道pipe: 进程需要共同祖先

2. 命名管道named pipe, 也就是fifo:  文件系统中有对应文件名

3. mapped memory:把一个共享的文件映射到自己的进程地址空间

4. 消息队列:信息量大,格式灵活

5. 共享内存:速度最快

6. 信号量:同步手段

7. socket:最灵活

8. signal:比较复杂,携带的信息量少

 

IPC/网络通信系统:(不限于Linux)

1. CORBA

2. DCOM

3. 数据通信设备DCE

4. SOAP

5. XML-RPC

6. Binder (Android中用的IPC机制)

.....

n. DBus

DBus 以GPL许可证发行。

DBus 底层是基于Socket的, Unix域的socket,  为了提高通信速度, 去掉了socket的循环等待机制。

 

三层框架: 接口层(提供函数接口库), 总线层(提供守护程序)和封装层(不同平台封装)。

在很多平台上都做了封装: 比如QT上有dbus-qt, 在glib上有dbus-glib。

DBus的三要素:

对象:对象是封装后的匹配器与回调函数,它以对等协议使每个消息都有一个源地址和一个目的地址。这些地址又称为对象路径,或者称之为总线名称。对象的接口是回调函数,类似C++的虚拟函数实现。当一个进程注册到某个总线时,都要创建相应的消息对象。

消息:D-Bus的消息包括:signals,method calls,method returns, errors。

服务:进程注册的抽象。进程注册某个地址后,即可获得对应总线的服务。

 

DBus具体实现和调试的文章, 网上介绍很多,这里就不详述了。

原创粉丝点击