1

我正在开发一个应用程序来监控我们软件套件的信息,所以我只能从我自己的项目中修改代码,而另一半将取决于套件程序员。这些程序都将在同一台计算机上运行,​​监控软件作为服务运行。

我对采取哪条路线感到好奇的一件事是如何在应用程序或进程之间共享或传递信息。我们只是说数据的类型并不重要,无论我发送字节还是字符串等等(即使在内心深处都是一样的)。

打开 TCP/IP 侦听器/连接以将数据发送到同一台计算机似乎有点矫枉过正,只是在某个端口上侦听以接收信息。还有哪些其他选择?我对数据映射进行了一些研究,但我唯一担心的是该套件是用 delphi 编写的,所以我不确定 c# 和 delphi 之间访问数据映射的兼容性(delphi 甚至可以做这样的事情是研究点我会调查)。

所以我的问题是,在 TL;DR 中,有哪些选项可用于在进程间级别传输数据?

4

3 回答 3

2

我会看看 WCF(使用命名管道),它是应用程序间通信的理想选择。

于 2013-04-24T11:22:55.860 回答
1

你在这里有很多选择。我会研究命名管道以实现快速、高效的进程间通信。然而,还有另一种选择,那就是WMI

您要做的是在您发布监控数据的 Delphi 程序中实现 WMI 提供程序。然后,您的监控服务将使用 WMI 查询读取数据。

这有几个优点。它不会对您的部署设置施加任何限制,因为远程查询 WMI 与本地查询一样可行。因此,即使您现在的目标是本地解决方案,您以后也可以轻松地适应远程设置,只需远程调用 WMI 而不是本地调用。

它还允许进程彼此独立工作,这样您就可以从您的 Delphi 套件中以您想要的任何速率发布统计信息,并独立于您的监控服务进行轮询。这里甚至还有一些活动支持。

于 2013-04-24T11:31:49.440 回答
1

在这种情况下,我可能会使用监视服务作为客户端之间通信的一种方式(例如,使用轮询系统),并使用 NetNamedPipeBinding 在同一台机器上进行跨进程通信。请参阅http://msdn.microsoft.com/nl-be/library/ms752247.aspx

另请参阅如何使用命名管道绑定从 Delphi 与 WCF 通信,以了解如何从 Delphi 应用程序与 WCF 通信。

这种方法的优点是,如果需要,您可以轻松地将其扩展到具有后端和多个客户端的集中式系统。

于 2013-04-24T11:22:31.193 回答