|
|
1
1
使用共享内存比较困难,因为您必须管理共享内存缓冲区的大小(或者只是预先分配足够的内存)。您还必须手动管理放入其中的数据结构。一旦您对它进行了测试并开始工作,由于它的简单性,它将更易于使用和测试。 如果使用远程处理路由,则可以使用IpcChannel而不是TCP或HTTP通道进行使用命名管道的单个系统通信。 http://msdn.microsoft.com/en-us/library/4b3scst2.aspx . 这个解决方案的问题是,您需要提出一个注册表类型的解决方案(在共享内存或其他一些持久性存储中),进程可以向其注册端点。这样,当您查找它们时,您可以找到一种查询系统上运行的所有端点的方法,并且可以找到您要查找的内容。使用远程处理的好处是序列化和方法调用都非常简单。此外,如果您决定移动到网络上的多台计算机,您可以只需翻转开关来使用网络通道。缺点是,除非您将“远程”呼叫与“本地”呼叫明确区分开来,否则远程处理可能会令人沮丧。
或者,您可以创建一个“服务器”进程,该进程独立于所有其他进程,并启动(使用系统互斥来确保不启动多个进程),作为所有其他进程的中间人和注册中心。 还有一件事需要研究事件的发布-订阅模型(Pub/Sub)。当您有一个在事件源可用之前启动的侦听器,但您不想等待注册事件时,此技术会有所帮助。“服务器”进程将处理事件注册表以链接发布者和订阅者。 |
|
|
2
0
为什么不把服务器和客户机放在两边,谁先到谁就成为服务器?如果服务器退出,仍处于活动状态的客户端将切换角色。 |
|
|
3
0
|
|
|
4
0
我同意加罗的观点。
|
|
|
5
0
我花了两天的时间仔细研究了IPC的所有可用选项,同时寻找一种可靠、简单、快速的方法来实现全双工IPC。 IPCLibrary 嗯,, |