IPC使用支持双工通道或回调的.Net内核

时间:2017-06-08 16:03:12

标签: wcf callback .net-core ipc

我正在为IPC通信方面评估.net核心2.0。我确实发现.Net核心在服务器端不支持WCF。任何人都可以帮助我,.Net核心中的替代方案,可以用于进程间通信以及回调(用于发布 - 订阅)模型。

谢谢。

2 个答案:

答案 0 :(得分:2)

如果您准备进入低级别,那么您可以使用named pipes。但是你必须自己实现发布/订阅模式。

在更高级别,您可以查看像ZeroMQ / NetMQ这样的库 - 这些是在套接字之上的非常薄的层,支持各种模式(如发布/订阅)。

更高级别的是真正的消息队列 - Rabbit MQ

当然,本机方式是使用ASP.NET Core的Web API。

答案 1 :(得分:0)

我也有类似的需求,但是现有的解决方案对于我的喜好有太多依赖性,并且不支持正确的双向通信。

所以我写了PipeMethodCalls包:

var pipeServer = new PipeServerWithCallback<IConcatenator, IAdder>("testpipe", () => new Adder());
await pipeServer.WaitForConnectionAsync();
string concatResult = await pipeServer.InvokeAsync(c => c.Concatenate("a", "b"));
var pipeClient = new PipeClientWithCallback<IAdder, IConcatenator>("mypipe", () => new Concatenator());
await pipeClient.ConnectAsync();
int result = await pipeClient.InvokeAsync(a => a.AddNumbers(4, 7));

它将方法名称和参数序列化为JSON,在另一端调用它,然后将响应打包以发送回去。