c - Dbus glib接口(interface)设计与使用

标签 c object dbus

在我们的项目中,我们使用 dbus 进行进程间通信。我们有一个接口(interface),其中需要暴露给其他进程的所有方法都捆绑在一起。这只是所有方法的一个接口(interface)。这是个好主意吗?将方法分组到不同的接口(interface)中是否更好?我们有大约 50 种方法。我不熟悉面向对象语言。但我觉得最好将它们分组到不同的界面中。

将方法拆分到不同的接口(interface)下有什么好处?我需要一些在不同接口(interface)下对方法进行分组的理由。

请注意,dbus 有自动代码生成器,当 xml 作为输入给出时,它会生成必要的类和方法。

最佳答案

从面向对象的角度来看,最好根据消息的含义将消息分组到不同的接口(interface)中。对于像 pidgin 这样的即时通讯软件,您可以:

  • MyIPCInterface:
    • accountCreate(...)
    • 账户列表(...)
    • 帐户删除(...)
    • 消息发送(...)
    • messageReceived(...) * 信号
    • 状态更改(....)
    • statusChanged(...) * 信号

但更好的选择是根据其含义将其分成不同的接口(interface):

  • AccountManager界面

    • 创建(...)
    • 列表(...)
    • 删除(...)
  • 帐户界面

    • 发送消息(...)
    • messageReceived(...) * 信号
    • 状态更改(...)
    • statusChanged(...) * 信号

当然,还有很多其他的设计方法,但要点是,当您收到 AccountInterface 对象的“messageReceived”信号时,您知道哪个帐户“对象”收到了该信号,这比您分离更好谁应该管理帐户的问题来自于谁应该管理帐户对象的问题。

关于这一点还有很多话要说,但我希望这可以帮助澄清......

关于c - Dbus glib接口(interface)设计与使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16521842/

相关文章:

c - 我在代码块中编写的堆栈实现代码编译成功,但在运行时显示错误

c - 套接字编程 connect() 在我第二次运行循环时失败

c# - 如何获取对象的基础对象(不仅仅是 BaseType)

c++ 对象初始化和构造函数语义

c++ - 在 C++ glib 应用程序中连接到 dbus 信号的最简单方法是什么?

c - I2C 地址格式

c - 为什么C语言中的cexp(+infinity+I*infinity)=+/-infinity+I*NaN?

java - 为什么在对象和 vector 之间进行选择时,Java 的多态性无法捕捉到正确的方法?

python - dbus_to_python() 正好接受 1 个参数?

macos - Krusader 在 Mac OSX 10.7.2 上崩溃