2009-01-27 72 views
6

我知道這個問題已經被問了一下。但環顧四周,我仍無法讓自己的頭腦決定走哪條路。這裏是我的情況,希望你可以幫幫忙:MSMQ vs臨時錶轉儲

我們將有一系列的,將計劃的基礎上由數百個移動應用程序被擊中的Web服務。這些服務將在設備上的數據與新的信息一起發送到設備並從它們返回。從設備返回的數據將需要更新一箇中央SQL服務器數據庫,該數據庫還提供幾個桌面應用程序和一個網站。

爲了減少這些服務的請求/響應的時間量,我們決定通過將這些數據粘貼到MSMQ實例中或者將序列化的對象存儲在一個臨時的數據存儲並讓Windows服務稍後處理它們。

所以這是我的選擇,但除了這這裏的一些事情,可以幫助你們告訴我:

  • 數據從設備返回不會在需要更小消息包退換訂購服務器端。
  • 我對MSMQ一無所知,但之前我寫過windows服務。儘管如果需要的話,我沒有挑選MSMQ的問題。
  • 我想繼續從一些地方在案件的處理由於某種原因,由該數據導致失敗的設備進行響應。這樣我可以詢問數據並查看是否有問題,即設備允許用戶添加在服務器端數據庫中擴展相關字段長度的註釋。

有了這些信息,你認爲值得我考慮學習MSMQ還是應該堅持更簡單的解決方案?

克里斯。

回答

8

MSMQ是個不錯的選擇,絕對不是難學,但請記住,有一些約束,你應該知道的。

缺點:

  • 每個隊列只能是2GB。
  • 每個消息4MB(altough 4MB的限制可以通過使用MSMQ與WCF被固定)。
  • 僅適用於Windows所以你只限於使用.NET,C/C++或COM庫支持COM的環境中使用它。

優點:

  • 支持Windows網絡負載平衡器。
  • 支持Microsoft羣集服務。
  • 與Active Directory集成。
  • 與Windows發貨。
  • 支持交易。
  • MSMQ消息可以通過Windows事件日誌中的審覈消息進行跟蹤。
  • 消息可以在發送時自動進行身份驗證(簽名)或加密,並在接收時進行驗證和解密。

另一種可能需要考慮的方法是將數據寫入臨時表。這可能是一個好主意,因爲你想要回消息日誌。

當我不知道系統架構的其他部分時,很難給出建議,但我希望這個答案會有所幫助。

有用的鏈接

Programming MSMQ in .NET - Part 1
Using MSMQ with WCF

+0

標識確實幫助三江源 – Owen 2009-01-29 16:58:51