2013-03-30 72 views
1

我需要在每次調用Web API時登錄數據庫。 當然,我不想每次打電話都去我的數據庫。記錄Web API調用MVC 4

因此,讓我們說我有一個字典或哈希表對象在我的緩存中, 和每10000條記錄我去數據庫。

我仍然不希望每10000個用戶等待這個操作。 因爲應用程序池 可以隨時回收,所以我無法爲長時間操作啓動不同的線程。

此場景的最佳解決方案是什麼?

謝謝

回答

0

我會爭辯說,你的耐用性觀點是不一致的。由於應用程序池回收或服務器崩潰,您的10000個對象緩存可能隨時丟失。

但對如何不會使用戶等待執行大量操作原題:

  • 上的應用程序池回收認沽約束和處理潛在的數據丟失。

  • 定期將緩存的消息轉儲到Windows服務以供進一步處理。這還不能100%保證保存數據,例如服務/服務器可能會崩潰。

  • 使用消息隊列(MSMQ),possibly with WCF。消息隊列可以保存到磁盤,所以這可以被認爲是合理可靠的。

消息隊列(MSMQ)技術使得能夠以 不同時間運行的應用程序能夠在異構網絡和系統 可以暫時脫機的通信。應用程序將消息發送到 隊列並從隊列中讀取消息。

消息隊列提供有保證的消息傳遞,高效的路由,安全性和基於優先級的消息傳遞。它可以用於 執行解決方案,要求高性能的異步和同步場景 。

採取這一一步...

根據您的要求和/或環境中,你也許可以消除您的緩存,並立即(和快速)寫的所有消息到消息隊列,而不必擔心關於性能損失的大寫操作。

+0

謝謝!我其實並沒有考慮把它帶到不同的服務/隊列 –