在Linux和Windows上使用C#进行进程间通信

5
我需要在我的应用程序中引入IPC技术,并且需要在GNU/Linux和Windows上继续分发(我目前在GNU/Linux上使用mono,在Windows上使用.NET,两者都支持GTK+)。通信只限于同一台计算机。
在这两个系统上实现IPC的最佳方式是什么?
我了解到,DBUS也可在Windows上通过主流源代码使用。有没有人在Windows上使用过它,能分享一下经验吗?
非常感谢您的帮助。
3个回答

3

我在Linux上使用DBus的经历非常糟糕。

最终我用自定义格式的TCP套接字替换了它(但数据相当有限,因此开发自定义格式并不需要太长时间)。


3
我会简单地使用 Remoting
只是因为其他选项不好:
  • WCF在Mono中非常有限。

  • DBus有它的问题,正如Rolf所说;更不用说C#与它的故事有点笨拙,即:最好的解决方案是使用管理的Dbus,你可以使用NDesk.Dbus,但这个库被重命名为dbus-sharp;但Gnome世界正在使用GDbus,并且还没有绑定它。

  • Socket,就像Rolf提出的那样,对我来说太低级了。


.NET Remoting现在已经成为传统技术,不建议用于新的开发。请参阅https://msdn.microsoft.com/en-us/library/72x4h507(v=vs.100).aspx。 - j123b567
在那篇文章中,Remoting被认为是分布式应用程序的遗留技术,但这个S.O.问题仅涉及IPC使用情况。 - knocte
.NET Remoting 是一个旧的 API,所以在某些情况下(如 IPC)没有任何例外。真正的问题是它是否会从 .NET 中被弃用和移除。但这是完全不同的问题。 https://dev59.com/-nM_5IYBdhLWcg3wn0vT - j123b567
可能这些天最好的解决方案是 gRPC。 - knocte
1
远程调用在 .Net Core 中不可用。 - Denis Nutiu

1

Mono在WCF方面有着相当不错的支持,适用于跨平台的IPC。


因为WCF在Mono中的支持非常有限,所以被downvote了:http://www.mono-project.com/Compatibility - knocte

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接