2008-12-01 31 views
9

我的組織正在準備實施一個新的系統,這是一個asp.net應用程序。該應用程序將有一個由網站發起的大量離線工作。該隊列將保存不同類型的活動,理想情況下用XML消息。想想電子郵件通知,計劃任務等。ASP.NET - 新應用程序的最佳隊列系統

過去,組織可能會使用MSMQ來完成此任務。但是,他們認爲MSMQ是老派(我部分同意他們),所以我們將要進行架構審查以確定「最佳」解決方案。

在我看來,有幾種潛在的選擇:

1.堅持在最新版本的MSMQ上的新實施 - 不是理想的,而是一個已知的產品。
2.使用Windows Workflow Foundation,我從其他一些開發人員那裏聽說過這種類型的事情。
3.開發自定義數據庫解決方案。

我是否缺少任何明顯的解決方案?理想情況下,這將是微軟產品,但實際上只需要在以微軟爲中心的商店中工作。

我關心以下幾點:
1.實施和維護
2.解決方案易於這將是一段時間左右
3.能夠處理行的卷好,用中等大小的XML數據其中
4.絕對可靠的隊列系統,具有快速更新(多個實用程序進程可能會抓取隊列中的記錄來處理它們)。

+1

WWF標記應該只是WF(http://msdn.microsoft.com/en-us/netframework/aa663328.aspx)。我想是因爲世界自然基金會是世界野生動物基金會,而不是與WWE,以前的世界自然基金會混淆。 – Bratch 2009-06-08 22:53:13

回答

13

閱讀帖子似乎是你認爲MSMQ不適合的唯一原因是因爲有人認爲它是「老派」。我不認爲這是一個不夠好的理由不使用它,因爲它看起來像你的公司有經驗,所以沒有學習曲線,這意味着易於實施和維護。

另外,MSMQ將完美解決您提到的所有問題。所以,除非有另一個「真正」的理由不使用它,否則我會堅持使用MSMQ。

1

你看過SQL Server中的Service Broker嗎?它是一個使用數據庫作爲後備存儲的排隊系統。

3

我建議尋找WCF,你可以配置它來指定持久的,排隊的消息傳遞,它使用MSMQ技術。 WCF抽象/接口和技術應該在很長的一段時間。

0

你有兩個選擇:

  1. Biztalk的:它是建立了可靠的消息傳遞和路由在企業層面。設置起來很難,而且價格昂貴,而且學習曲線陡峭,但是一旦你把它打開,它就會很穩定。

  2. MSMQ:快速,便宜,免費,易於使用,只是普通的作品。

  3. SQL Service Broker。這是從MSMQ邁出的一步,但是從Biztalk邁出了一大步。

主要問題真的歸結爲您需要的功能集。 Biztalk幾乎是它自己的開發環境。 MSMQ要求您在其周圍構建一切。

+0

雖然SSB有不少缺陷 - 我眼中有些大牌。 1)關於回收會話句柄的複雜規模問題。 2)每個節點的SQL許可證成本 - MSMQ超過了手中的收益 如果我已經在混合使用SQL,我只能使用SSB。 – stephbu 2008-12-01 10:42:43

2

我與駝鹿,在最叢林即MSMQ可能是你應該堅持什麼同意。

我也許會研究一些使用MSMQ的替代API,如Udi Dahan的nServiceBus

0

雖然對於您的整個系統來說,您可以使用Windows Workflow來管理您的業務邏輯,並將MSMQ用作任務列表的存儲。您的工作流程將從隊列中拉出下一條消息開始,然後確定如何處理它。

排隊是你不想惹自己的事情,把你的信任放在現成的東西上,並且已經被許多人測試過了。

2

作爲ActiveMQ(上面提到)的替代方案,有開源RabbitMQ。從他們所說的,它很好地與ASP.NET和WCF集成。

http://www.rabbitmq.com/