2013-04-24 81 views
1

我正在開發一個應用程序來監視我們軟件套件的信息,所以我只能訪問我自己項目中的代碼,而另一半則取決於套件程序員。這些程序將全部運行在同一臺計算機上,監控軟件作爲服務運行。在應用程序/進程之間傳遞數據

的事情之一,我很好奇,拿哪條路線,是如何分配或通過應用程序或進程之間的信息。我們只是說數據的類型是什麼類型,不管我發送字節還是字符串等等都是不重要的(即使內心深處都是一樣的)。

打開一個TCP/IP監聽器/連接將數據發送到同一臺計算機似乎矯枉過正,只是某個端口上監聽收到的信息。還有什麼其他選擇?我已經對數據映射進行了一些研究,但我唯一擔心的是該套件是用delphi編寫的,所以我不確定c#和delphi之間訪問數據映射的兼容性(可以,delphi甚至可以做這樣的事情研究點我會研究)。

所以我的問題是,在TL; DR還挺方式,哪些選項有用於在進程間的水平傳輸數據?

+0

[NET中的進程間通信]可能的重複(http://stackoverflow.com/questions/232332/interprocess-communication-in-net) – 2013-04-24 11:22:51

+0

啊,奇怪,我沒有遇到這個,而打字它。會看看。另外,謝謝! :) – 2013-04-24 11:23:58

+0

這篇文章是5歲,我不認爲遠程處理仍然是一個推薦的方法:) – 2013-04-24 11:32:05

回答

1

在這種情況下我可能會使用監控服務作爲一種手段(使用輪詢系統例如)客戶端之間進行通信,和在同一臺機器上使用NetNamedPipeBinding跨進程通信。請參閱http://msdn.microsoft.com/nl-be/library/ms752247.aspx

另請參閱How can I communicate with WCF from Delphi using Named Pipes Binding關於從Delphi應用程序與WCF通信。

這種方法的好處是,你可以很容易地把它擴展到哪裏你有一個後端和多個客戶端的集中式系統,在需要時。

2

我會看看WCF(使用命名管道),它是理想的應用程序間通信。

1

你有很多選擇。我會研究命名管道以實現快速,高效的進程間通信。然而,還有另一種選擇是想到的,那就是WMI

你會做什麼,是在Delphi程序中實現一個WMI提供程序,在該程序中發佈監視數據。然後,您的監控服務將使用WMI查詢讀取數據。

這有幾個優點。它不會對您的部署設置施加任何限制,因爲它可以像在本地一樣遠程查詢WMI。因此,即使您現在針對本地解決方案,您也可以稍後輕鬆地調整爲遠程設置,只需通過遠程調用WMI而不是本地調用即可。

它還允許的過程彼此獨立工作,這樣你可以從你的監測服務獨立發佈你從你的Delphi套房想要的任何率統計和調查。這裏甚至有一些活動支持。

相關問題