首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模块化开发中内部通信方式的选择

模块化开发中内部通信方式的选择
EN

Stack Overflow用户
提问于 2012-09-24 11:49:10
回答 1查看 84关注 0票数 0

我正在开发一个软件,它的核心,插件和图形用户界面模块分离。我按需动态加载模块。

我需要确定哪种类型的内部通信最适合以这种方式模块化的软件,以便不同的部分可以交换事件和信息,考虑到使用不同工具包的插件或GUI最终将由第三方开发。

现在,我已经考虑简单地从共享对象加载符号,并在知道它们的类型和函数签名的情况下使用它们。我也考虑过使用像DBus这样的进程间通信,但我不确定这是不是太过分了,还是完全没有必要。

目前,跨平台并不是什么大问题,但未来可能会是这样。

一种与另一种的优缺点是什么?有没有其他需要考虑的解决方案,我还没有找到?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-24 11:53:43

IPC对于进程内加载的组件来说是过度杀伤力。当调用者和被调用者可以直接共享指针时,所有关于缓冲区大小和复制方向的额外注释都是不必要的。

如果您希望迁移到Windows,请考虑共享库可能具有不同的分配器和不同的类布局。最好的做法是导出一个工厂函数,返回一个指向接口的指针(抽象类只有纯虚拟成员函数,没有数据,数据和实现都在一个子类中),然后让对象释放自身(其中一个虚拟成员函数会销毁它)。

例如,您可以查看COM IUnknown。您不需要复杂的接口查询等,但是使用纯虚函数和引用计数是一种非常灵活、非常可伸缩和非常可移植的模式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12558599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档