2013-06-28 100 views
0

我有一個客戶端服務器設置,我通過http發送消息到服務器(我正在使用WCF服務託管爲Windows服務。)在我目前的設置中,我已經看到一些消息是當客戶端和服務器之間的連接斷開時丟失,爲了可靠性,我決定使用MSMQ.So客戶端將消息發送到隊列,服務器不斷輪詢隊列我需要做一些設計決定,發展。 哪一個將是最佳的Windows服務或wcf服務(託管爲Windows服務)?WCF或Windows服務實現MSMQ

除了Windows服務的WCF有什麼優勢,如果我必須開發這樣的服務,它所需要做的就是不斷從隊列中讀取消息並進行一些處理。我將使用一個專用隊列,它是transnactional。

+0

看看NService總線。它完全正是你想要完成的。很容易設置。 http://nservicebus.com/ –

+0

@JohnHartsock謝謝你,但我想自己寫一些東西。 – Macnique

+0

爲什麼不直接使用現有的WCF服務並使用WS-ReliableMessaging?如果您在MSMQ上設置了死鎖,那麼您可以將NetMSMQBinding用於傳輸層,但也支持其他基於HTTP的傳輸綁定。 – Gus

回答

1

我建議避免編寫直接與MSMQ集成的代碼,而是使用現有的服務總線爲您做這些(如NServiceBus或MassTransit)。滾動自己的消息傳遞層可能適用於最簡單的系統,但隨着時間需求的變化,您將需要更全面的特色服務總線。我提到的服務總線做以下事情在開發者友好的方式:

  • 消息模式(發射後不管,請求 - 響應,發佈訂閱)
  • 消息系列化
  • 消息路由
  • 失敗/重試邏輯(即一個消息處理程序應該更新數據庫,但該數據庫已關閉,你如何處理?)
  • 長時間運行的進程(也稱爲傳奇)

這些只是一些你不久將要寫的東西,如果你走自己的路線。

+0

+1我同意。沒有必要「重新創造輪子」。 –