2012-01-23 80 views
5

我有2個使用C#創建的Windows服務。如何在Windows服務之間進行通信

我希望其中一個服務在第二個Windows服務中調用一個函數。

我應該怎麼做?

編輯:

的問題是,我要的是運行(我不需要他們是相當的服務流程也不錯)應用程序,但我需要這2個應用程序進行通信,這2個應用在同一臺服務器上,

+0

查看[相關文章](http://stackoverflow.com/a/86286/175679)跨應用程序通信。 – SliverNinja

+1

哪種數據?多少條消息?什麼是平均郵件大小? – sll

回答

3

當然。有一堆你可以使用的IPC機制。遠程處理,TCP/HTTP監聽器等。

兩種服務是否提供可能在其他服務之外有用的功能?

更多的想法請參見本主題: IPC Mechanisms in C# - Usage and Best Practices

編輯: 作爲達維德Piras酒店所指出的,如果WCF是供你使用,那麼可以考慮使用它。它會簡化生活。 WCF配置文件有時會很痛苦,但也有一個很好的工具: http://msdn.microsoft.com/en-us/library/ms732009.aspx

+2

只要有可能,遠程處理和HTTP應該避免WCF –

2

服務在同一個盒子上嗎?你有.NET 4嗎?強烈建議使用最快的模式,memory-mapped files

如果它們在同一個盒子中,但沒有.NET 4,或者在同一個Microsoft Windows網絡中,則named pipes可以工作。更重要的是,我會使用WCF over a named pipe

4

我發現所有其他答案正確,但有點太複雜(WCF是一個大問題),而不是可擴展的(內存和命名管道只能在同一臺服務器上工作)。我建議你DotNetMQ消息系統。它易於使用和部署,甚至可以在不同服務器上運行的進程之間進行通信。

相關問題