DBus 是我要找的吗?

Posted

技术标签:

【中文标题】DBus 是我要找的吗?【英文标题】:is DBus what I'm looking for? 【发布时间】:2012-04-16 05:48:34 【问题描述】:

我需要一个 Linux 上的 IPC 系统。我的要求是:

    面向数据包/消息 能够处理点对点和一对多通信 没有层次结构,没有服务器和客户端 如果一个端点崩溃,必须通知其他端点 现有 Linux 发行版的良好支持 存在 Apache 的“绑定”,用于创建动态页面

按重要性排序(大致)。我不需要极高的性能,也不会发送大量数据。

我偶然发现了 DBus,它看起来是个不错的候选者(pecl::packages::dbus 是一个让 Apache 访问 DBUS 的好机制?)。但在深入研究 DBus 文档之前,我想听听一些建议。

【问题讨论】:

答案:是的。 dbus 满足这些要求。 我不明白你所说的 Apache 绑定是什么意思。这些平台/库/解决方案几乎总是独立于 Apache。 @MahmoudAl-Qudsi 我的意思是,我希望能够以一种简单的方式从这个通信系统收集信息并在 apache 中按需生成网页。我没有任何网络框架的经验,所以我对应该学习的内容没有偏好。但我需要一个稳定且通用的(在 linux 发行版中)库,因为该项目旨在供其他人使用。出于同样的原因,我想我将使用 apache,因为我猜它是 linux 领域最广泛的 Web 服务器。 您将网络服务器的用途与它将运行的脚本的用途混淆了。 【参考方案1】:

ZeroMQ 提供您要求的所有功能,然后提供一些功能。它基本上是一个“无论如何都可以工作”的消息传递系统,可以处理 IPC 消息传递中的所有极端情况和细微之处。

但是,ZMQ 和所有其他类似的不是应用程序 - 它们是您可以用来创建应用程序的 API。您可以从 Apache 正在运行的任何脚本(例如 php 后端)中使用 ZMQ。

【讨论】:

让我担心的是,我是否必须在 PHP 中为 zmq 自己的协议创建自己的解析器,还是已经有了绑定? 没关系,我刚刚在 zmq 网站上看到了一个 PHP 示例:D 缺少第 4 点:“此时,所有套接字都不会提供对等连接/断开连接的通知” 您可以使用“ping”消息轻松地自己实现它 - 0mq 不开箱即用的原因有很多,主要是因为“断开连接”的定义非常常见-具体的。如果你在 SO 上发布一个关于实现它的好方法的问题,你会得到回复。 (或者,更好的是,比断开通知更好的替代方案) 您必须明确使用 ZeroMQ,因为它更易于处理和使用 Apache 和 PHP 进行自定义。仅当您别无选择时才使用 D-Bus(相信我)

以上是关于DBus 是我要找的吗?的主要内容,如果未能解决你的问题,请参考以下文章

dbus系列教程dbus是什么东西?

dbus - 如何设置包含路径

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

dbus系列教程理解dbus核心概念

DBus通讯

dbus-send