2011-02-26 111 views
2

我正在尋找關於如何最好地擁有連續運行的處理引擎來處理作業隊列的建議。連續處理

基本上,外部客戶可以添加作業隊列(通過.NET或WCF調用)。 這需要快速返回並且會經常被調用,所以它只是接收請求並將其添加到隊列中。

處理引擎應該是連續運行以及基於一堆BIZ邏輯順序處理隊列(沒有被直接調用)的單個過程。

我們如何才能最好地創建這個連續運行的過程?

  • 是否有可能在asp.net中穩定地執行此操作?
  • 將它作爲Windows Service託管的WCF執行此操作會更好嗎?
  • 其他建議或方法來完成這個?

感謝您閱讀此,我感謝您的幫助和建議

注:

我一直在使用MSMQ來傳遞數據。 是否有無論如何,您可以自動調用一個進程接收郵件運行(或MSMQ隊列中有消息(我不太瞭解MSMQ))。

例如,客戶機A發送MSMQ消息經由隊列Q. Q客戶端B是空的。客戶B現在在問:

如何調用處理此方法的消息?如何託管接收消息的客戶端?

回答

1

我認爲MSMQ就是您正在尋找的東西。其重要任務之一是確保可靠的交付。在.Net中使用它很容易,你最喜歡的就是它有一個WCF綁定。

+0

我一直在使用MSMQ來傳遞數據。有無論如何,你可以自動調用一個進程接收郵件運行(或MSMQ隊列中有消息(我不太瞭解MSMQ))。 例如,客戶端A通過隊列Q向客戶端B發送MSMQ消息.Q爲空。客戶B現在在Q中有一條消息。我如何調用一個方法來處理這個? 我一直在遇到的問題是如何處理隊列中的項目?你需要一個連續的處理引擎來處理這個隊列,或者它是以某種方式構建的嗎? 你有什麼好的鏈接嗎? – Summit 2011-02-26 20:33:05

+0

您不需要輪詢WCF中的隊列。 Net.msmq監聽器會爲你做到這一點。 – Serguzest 2011-02-26 21:59:13

+0

看看[this](http://www.codeproject.com/KB/WCF/WCFMSMQ.aspx),[this](http://blogs.msdn.com/b/tomholl/archive/2008/07/ 12/msmq-wcf-and-iis-getting-them-to-play-nice-part-1.aspx)and [that](http://msdn.microsoft.com/zh-cn/library/ms752246.aspx )[我建議這是爲了熟悉相關術語](http://msdn.microsoft.com/en-us/magazine/cc163357.aspx) – Serguzest 2011-02-26 22:11:00

3

將處理隊列的Windows服務是執行此操作的經典方法。它具有許多優點,包括重啓時啓動,良好的管理腳本(WMI)功能,因此它也是系統管理員的首選。

保持它與WCF服務分離 - 您應該使用它將作業放入隊列中。

+0

+1正如我所做的那樣;) – jgauffin 2011-02-26 20:04:57

2

是否有可能在asp.net穩定地做到這一點?

是的,這是可能的。但是,如果您傳遞了大量數據,則下面的選項可能會更好,因爲您有更多的通信渠道選項。

將它作爲Windows服務託管的WCF做得更好嗎?

這可能是最好的選擇。這將使您可以選擇使用更高性能的通信通道(以幫助您「多次請求」的吞吐量),良好的控制等。它的開銷也低得多,因爲您不需要設置IIS以便運行if你自己主持。

+0

這非常有幫助。我們沒有傳遞太多的數據,但會有很多請求。出於好奇,你怎麼能在.net中穩定地做到這一點? – Summit 2011-02-26 20:40:29

+0

@Summit:WCF具有許多穩定性和可靠性的內置功能。只要你妥善處理異常,這往往是非常穩定的。 – 2011-02-26 20:44:39

+0

對不起,我剛剛意識到我的問題還不清楚,我最初的意思是你可以在asp.net中穩定地做到這一點:)我只是意識到我把.net而不是asp.net。感謝您的幫助 – Summit 2011-02-26 20:56:36