繁体   English   中英

3个模块之间的进程间通信

[英]Interprocess communication between 3 modules

我正在寻找有关进行进程间通信的最佳方法的建议。

该解决方案包含3个项目。

  1. GUI:这只会向用户显示消息并获得用户输入

  2. Windows服务:与UI通讯并使用提升的凭据运行第三个模块

  3. 工作者:将执行实际工作的内部DLL

我需要一种使工作人员直接与GUI通信以发送和接收更新的方法。

我有两种实现方法(很高兴看到更多建议):

  1. 使用两个命名管道。 一个用于GUI <> Service通信。 另一个用于GUI <> Worker通讯

  2. 将事件从“工作者”引发到“服务”。 并使用WCF从服务到UI的回调

实施交流的最佳方式是什么?

注意:这里的问题是GUI <> Worker通信。 不是UI <> Service通信。

1)WCF是正式推荐的实现进程间通信的方式(tcp或命名管道最快),它代替了远程处理(但始终使用序列化/反序列化)。 在高级方案中,可以使用以下方式实现通信

  • 内存映射文件;
  • 服务总线。 (服务总线允许创建松散耦合的组件/通信。nservicebus,rabbitmq,masstransit等的Google);
  • Web Sockets或SignalR之类的东西(如果您具有浏览器/ javascript客户端/ GUI,请考虑使用此选项)。

2)如果您的Worker只是库(.net程序集),它将在Service进程中运行。 在这种情况下,您无需发明任何方法即可将数据/事件从Worker传递到GUI,所有通信(我想应该是双工,订阅服务事件)都将在GUI和Service之间进行(服务仅通过常规方式将某些工作委托给Worker .net通话)

3)有时我们需要在服务,客户端和服务器之间分配器之类的东西。 您可以在此处找到一些信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM