C# 主从通信的IPC机制

C# 主从通信的IPC机制,c#,c,ipc,zeromq,C#,C,Ipc,Zeromq,我有一个要求,主进程需要向从进程发送命令,而从进程需要确认。我试图在ZMQ中使用请求-响应模式,将master作为响应服务器,将slave作为请求客户机。但每次奴隶都需要向主人请求命令,这是不可取的。我不确定这个请求是否有有效期。我只想在两个进程之间进行全双工通信。还有什么比这更好的选择 注意:我的主控是用C编写的,从机在C中,使用一个特定的ZeroMQ原型具有硬连线可伸缩的正式通信模式行为只有在代理双方行为与原型行为匹配时才有意义。 这意味着,只要有可能实现自由形式(即席)行为,就直接忘记使用

我有一个要求,主进程需要向从进程发送命令,而从进程需要确认。我试图在ZMQ中使用请求-响应模式,将master作为响应服务器,将slave作为请求客户机。但每次奴隶都需要向主人请求命令,这是不可取的。我不确定这个请求是否有有效期。我只想在两个进程之间进行全双工通信。还有什么比这更好的选择

注意:我的主控是用C编写的,从机在C

中,使用一个特定的ZeroMQ原型
具有硬连线可伸缩的正式通信模式行为
只有在代理双方行为与原型行为匹配时才有意义。 这意味着,只要有可能实现自由形式(即席)行为,就直接忘记使用
REQ/REP

一个人可以享受推/拉模式或成对模式,在这种模式下,你的代理不会陷入一些硬编码的消息排序或等待一条从未应答/丢失的消息的死锁,然后才能发送(),并将下一个交付给其分布式交易对手

是的,它将使您能够设计自己的消息计数、超时、服务看门狗/保持活动信令、消息重新发送和类似的健壮性激励策略,但这是分布式计算的关键,不是吗

不管怎么说,享受这一疯狂的分布式计算之旅吧&可能对


考虑到主机必须能够向特定的从机发送消息,我推荐这种方法。主机将绑定一个路由器套接字。每个从机将使用单个经销商插座连接到主路由器。(因此从机必须知道主机的地址和路由器端口。)

连接后,每个从机将向主机发送某种类型的“hello”消息,让主机知道它是什么类型的从机(或者它可以执行什么类型的任务)。现在,当奴隶在线时,主人将知道他们是什么类型的奴隶,并且能够向他们发送消息


这是一个相当高级的ZeroMQ配置。在尝试此操作之前,我建议您编写一个非常基本的主/从应用程序,其中包含路由器和经销商套接字对。您应该至少阅读本手册的第1-3章。至少您必须了解

是windows专用还是多平台?当前在windows上。我希望它在Linux上易于移植。在windows上,您可以将内部消息泵(
WndProc
)与
SendMessage
结合使用。但要将其移植到其他平台,我认为更好的方法是使用标准IO甚至共享内存。顺便说一句,为了便于移植和高效,我建议您基于平台编写IPC层。它允许对目标表格应用最佳技术。您正在声明不使用主从协议的要求。把设计弄得如此彻底的错误是一件大事,你必须和做出这个决定的人谈谈。如果没有人接电话,那么就创建两个队列。