在应用程序/进程之间传递数据
我正在开发一个应用程序来监视我们软件套件的信息,所以我只能访问我自己项目中的代码,而另一半则取决于套件程序员。这些程序将全部运行在同一台计算机上,监控软件作为服务运行。在应用程序/进程之间传递数据
的事情之一,我很好奇,拿哪条路线,是如何分配或通过应用程序或进程之间的信息。我们只是说数据的类型是什么类型,不管我发送字节还是字符串等等都是不重要的(即使内心深处都是一样的)。
打开一个TCP/IP监听器/连接将数据发送到同一台计算机似乎矫枉过正,只是某个端口上监听收到的信息。还有什么其他选择?我已经对数据映射进行了一些研究,但我唯一担心的是该套件是用delphi编写的,所以我不确定c#和delphi之间访问数据映射的兼容性(可以,delphi甚至可以做这样的事情研究点我会研究)。
所以我的问题是,在TL; DR还挺方式,哪些选项有用于在进程间的水平传输数据?
在这种情况下我可能会使用监控服务作为一种手段(使用轮询系统例如)客户端之间进行通信,和在同一台机器上使用NetNamedPipeBinding跨进程通信。请参阅http://msdn.microsoft.com/nl-be/library/ms752247.aspx。
另请参阅How can I communicate with WCF from Delphi using Named Pipes Binding关于从Delphi应用程序与WCF通信。
这种方法的好处是,你可以很容易地把它扩展到哪里你有一个后端和多个客户端的集中式系统,在需要时。
我会看看WCF(使用命名管道),它是理想的应用程序间通信。
你有很多选择。我会研究命名管道以实现快速,高效的进程间通信。然而,还有另一种选择是想到的,那就是WMI
你会做什么,是在Delphi程序中实现一个WMI提供程序,在该程序中发布监视数据。然后,您的监控服务将使用WMI查询读取数据。
这有几个优点。它不会对您的部署设置施加任何限制,因为它可以像在本地一样远程查询WMI。因此,即使您现在针对本地解决方案,您也可以稍后轻松地调整为远程设置,只需通过远程调用WMI而不是本地调用即可。
它还允许的过程彼此独立工作,这样你可以从你的监测服务独立发布你从你的Delphi套房想要的任何率统计和调查。这里甚至有一些活动支持。
[NET中的进程间通信]可能的重复(http://*.com/questions/232332/interprocess-communication-in-net) – 2013-04-24 11:22:51
啊,奇怪,我没有遇到这个,而打字它。会看看。另外,谢谢! :) – 2013-04-24 11:23:58
这篇文章是5岁,我不认为远程处理仍然是一个推荐的方法:) – 2013-04-24 11:32:05