首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >跨c#、c++和更多语言的进程间发布/订阅模型

跨c#、c++和更多语言的进程间发布/订阅模型
EN

Stack Overflow用户
提问于 2013-03-07 00:48:38
回答 2查看 1.4K关注 0票数 0

我想做一个有几个通信进程的系统。

主进程将引发事件。将有不同的事件,每个事件都包含结构化数据。几个从进程将订阅事件,接收数据并调用适当的处理程序。关于我的情况有两个考虑因素。

  1. 我不关心安全性,因为不会有第三方服务。
  2. 我担心性能。

人们建议在这种情况下使用像Zero MQ这样的消息队列。我对它的实现方式有点困惑。据我所知,ZeroMQ只能发送\接收原始字符串数据。

我应该在发布者端将数据打包成字符串(例如json或xml),在订阅者端手动解压缩数据,并只过滤必要的消息吗?

如果有更好的方法来解决我的问题,我会很高兴听到的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-07 11:30:52

对于您描述的场景,我将使用消息传递提供程序。我看到的优势是

1)无需编写代码即可将消息传递给订阅者。这让我专注于我的业务逻辑和数据格式。我可以选择一种数据格式(XML/JSON/任何符合我的需求并能被订阅者理解的格式)并发布消息。

2)如果有需求,可以在不增加/修改任何代码的情况下增加用户数量。

3)用户可以迁移到不同的机器上,不影响解决方案。

4)订阅者也可以离线,master/publisher仍然可以发布消息。订阅者可以稍后进入并调用所需的处理程序。

票数 0
EN

Stack Overflow用户

发布于 2013-03-07 19:42:58

以下是我看到的选项:

  1. 如果只关心性能,而事件的持久性和持久性不是要求的一部分,那么将数据打包到字节数组中的自定义协议结构中,并使用套接字进行进程间通信。但请注意,自定义字节数组结构在可扩展性和可维护性方面代价高昂。另一种选择是选择JSON作为数据交换格式,可读性相对更好。
  2. 如果事件数据的持久性和持久性是需求的一部分,那么就可以利用面向消息的中间件的好处。声明性同步等特性是MOM可以带来的其他一些好处。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15253223

复制
相关文章

相似问题

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