在应用程序/进程之间传递数据

本文关键字:数据 之间 进程 应用程序 | 更新日期: 2023-09-27 18:10:45

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

我很好奇的一件事是如何在应用程序或进程之间共享或传递信息。让我们说,数据的类型是什么并不重要,无论我发送的是字节,还是字符串等等(即使在本质上都是一样的)。

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

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

在应用程序/进程之间传递数据

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

您有很多选择。我将研究命名管道,以实现快速、高效的进程间通信。然而,我想到了另一个选项,那就是WMI

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

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

它还允许进程相互独立地工作,这样你就可以从你的Delphi套件中以任何你想要的速率发布统计数据,并独立于你的监视服务进行轮询。这里甚至还有一些事件支持。

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

参见如何使用命名管道绑定从Delphi应用程序与WCF通信。

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