2011-03-23 134 views
0

我正在開發一個通用日誌記錄對象,將用於我們所有將來的應用程序中。它會向MSMQ提交一個日誌,然後將其異步發送到我們的服務器,該服務器將該消息記錄到數據庫。與WCF的異步通信

目前我正試圖瞭解這將如何工作的體系結構。在客戶端,一旦日誌被提交給MSMQ,MSMQ會將日誌提交給WCF發送給服務器(我假設將有另一個WCF端點接收消息)?基本上,我在問日誌會經過的服務順序是什麼?我已經閱讀了有關WCF的netMsmqBinding,這是我需要爲了從MSMQ發送日誌到WCF,然後我可以使用basicHttpBinding從WCF發送到服務器端的WCF?

喜歡的東西:

[客戶端應用程序] - >日誌 - > MSMQ - > WCF ----------> [服務器] WCF - > DB

回答

2

WCF具有netMsmqBinding那可以處理客戶端和服務器消息。如果你使用它,MSMQ對你來說幾乎是看不見的。你將發送消息給WCF服務,它將被放到MSMQ中,服務器端的WCF將選擇它並像其他任何綁定一樣調用方法。

如果您有任何創建WCF服務的經驗,您應該做同樣的事情,但也要創建MSMQ隊列。

這裏是有用的鏈接:http://sukasom.wordpress.com/2008/08/18/wcf-and-msmq-part-1/http://msdn.microsoft.com/en-us/library/ms752217.aspx

+0

我設置在客戶端或服務器端的端點netMsmqBinding?我現在看到的方式是,我根本不需要服務器端的MSMQ。還是我離開?客戶端如何知道服務器收到該消息,以便可以從客戶端的MSMQ中刪除該消息? – jnevelson 2011-03-23 16:40:35

+0

@jonathan MSMQ服務是獨立服務。從物理上講,它可以在任何地方運行,與服務器,客戶端在同一臺PC上運行,也可以單獨運行它必須有永久地址或主機名,就是這樣。 MSMQ是單向通信,您無法檢查該消息是從客戶端傳送的。實際上MSMQ是安全的消息傳遞,基礎設施控制交付。 – Andrey 2011-03-23 16:43:02

+0

@jonathan你在兩邊都設置了netMsmqBinding端點。 – Andrey 2011-03-23 16:44:24