【问题标题】:Interprocess communication with C# on Linux and Windows在 Linux 和 Windows 上与 C# 进行进程间通信
【发布时间】:2012-10-20 18:23:27
【问题描述】:

我需要在我的应用程序中引入 IPC,我还需要继续在 GNU/Linux 和 Windows 上进行分发(目前我在 GNU/Linux 上使用单声道,在 Windows 上使用 .NET,两者都支持 GTK+)。通信仅限于同一个盒子。

在两个系统上进行 IPC 的最佳方式是什么?

我了解到 DBUS 也可以在带有主流源代码的 Windows 上使用。任何人都有使用它的经验,我的意思是在 Windows 上?

在此先感谢大家。

【问题讨论】:

    标签: c# linux windows mono ipc


    【解决方案1】:

    我会简单地使用 Remoting

    只是因为其他选项很糟糕:

    • WCF 在 Mono 中非常有限

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

    • Rolf 提出的套接字对我来说太低级了。

    【讨论】:

    • .NET Remoting 现在是一项遗留技术,不建议用于新开发。见msdn.microsoft.com/en-us/library/72x4h507(v=vs.100).aspx
    • @j123b567 在那篇文章中,远程处理被认为是分布式应用程序的遗留问题,但是这个 S.O.问题仅与 IPC 用例有关
    • .NET Remoting 作为 API 是遗留的,因此对于 IPC 等某些用途没有例外。真正的问题是,它是否会被弃用并从 .NET 中删除。但这是完全不同的问题stackoverflow.com/questions/1294494/…
    • 是的,也许这些天最好的解决方案是 gRPC
    • 远程处理在 .Net Core 中不可用
    【解决方案2】:

    我使用 DBus(在 Linux 上)的体验非常糟糕。

    我最终将其替换为自定义格式的 tcp 套接字(但数据非常有限,因此开发自定义格式根本不需要很长时间)。

    【讨论】:

      【解决方案3】:

      Mono 具有中等良好的 WCF 支持,非常适合与平台无关的 IPC。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-13
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多