我有2個使用C#創建的Windows服務。如何在Windows服務之間進行通信
我希望其中一個服務在第二個Windows服務中調用一個函數。
我應該怎麼做?
編輯:
的問題是,我要的是運行(我不需要他們是相當的服務流程也不錯)應用程序,但我需要這2個應用程序進行通信,這2個應用在同一臺服務器上,
我有2個使用C#創建的Windows服務。如何在Windows服務之間進行通信
我希望其中一個服務在第二個Windows服務中調用一個函數。
我應該怎麼做?
編輯:
的問題是,我要的是運行(我不需要他們是相當的服務流程也不錯)應用程序,但我需要這2個應用程序進行通信,這2個應用在同一臺服務器上,
當然。有一堆你可以使用的IPC機制。遠程處理,TCP/HTTP監聽器等。
兩種服務是否提供可能在其他服務之外有用的功能?
更多的想法請參見本主題: IPC Mechanisms in C# - Usage and Best Practices
編輯: 作爲達維德Piras酒店所指出的,如果WCF是供你使用,那麼可以考慮使用它。它會簡化生活。 WCF配置文件有時會很痛苦,但也有一個很好的工具: http://msdn.microsoft.com/en-us/library/ms732009.aspx
只要有可能,遠程處理和HTTP應該避免WCF –
服務在同一個盒子上嗎?你有.NET 4嗎?強烈建議使用最快的模式,memory-mapped files。
如果它們在同一個盒子中,但沒有.NET 4,或者在同一個Microsoft Windows網絡中,則named pipes可以工作。更重要的是,我會使用WCF over a named pipe。
我發現所有其他答案正確,但有點太複雜(WCF是一個大問題),而不是可擴展的(內存和命名管道只能在同一臺服務器上工作)。我建議你DotNetMQ消息系統。它易於使用和部署,甚至可以在不同服務器上運行的進程之間進行通信。
查看[相關文章](http://stackoverflow.com/a/86286/175679)跨應用程序通信。 – SliverNinja
哪種數據?多少條消息?什麼是平均郵件大小? – sll