在某些請求中,必須從Soap服務中獲取外部數據。很明顯,我不想在每次通話時爲同一用戶獲取這些數據。如何在MVC中將一個請求中的臨時數據存儲到另一個請求中
什麼是從一個請求到其他存儲臨時數據的最佳做法是什麼?數據可能需要10兆。
在某些請求中,必須從Soap服務中獲取外部數據。很明顯,我不想在每次通話時爲同一用戶獲取這些數據。如何在MVC中將一個請求中的臨時數據存儲到另一個請求中
什麼是從一個請求到其他存儲臨時數據的最佳做法是什麼?數據可能需要10兆。
如果你真的需要保留Web請求和數據之間的數據的數量是特定於用戶,我建議連載,並用鑰匙將用戶會話存儲在數據庫中的臨時表。如果您正在使用Sql服務器會話,那麼您可以通過Session對象執行此操作,否則您需要編寫一個自定義的實現。
如果數據不是唯一的用戶,但可以分享,那麼你可以存儲和從器件的應用緩存中檢索。
一個具體的答案取決於有關應用程序和有關數據結構的更多信息。您可以考慮將數據放入臨時文件中。如果不關心內存,並且沒有太多的並行用戶,則可以使用會話狀態。
或者,如果您在sql server而不是內存中持有會話狀態,則可以使用該狀態而不是寫入自定義進程來編寫和檢索數據。我建議將它保存到臨時表中,而不是寫入文件系統。 – 2010-01-25 16:37:15
也許它存儲在光盤上的文件就足夠了,但是,你必須創建自己的實現文件管理器或類似這樣的東西。
的10Mb會話太大,但它發送到數據庫是資源的浪費。保存到文件將是臨時數據的最輕和最快的方法。
使用Sql Session狀態的好處是,所有的方法都已經存在,您可以保存,檢索和清除數據。如果您存儲到文件系統中,則需要自己編寫這些文件,並非常小心磁盤空間(100個用戶== 1Gb)。您將需要確保這些文件在不再需要時被刪除。我自己並沒有真正看到這樣做的優勢。最好儘量避免在Web請求之間保存這些數據量。 – 2010-01-25 16:57:02
「(100個用戶== 1Gb)」 - 數據庫相同。編寫處理該場景的文件管理器不是問題。 – dariol 2010-01-25 23:23:38
在SQL Server中存儲會話狀態似乎是最簡單的選擇。這個鏈接應該有幫助http://support.microsoft.com/kb/317604 – 2010-01-25 11:28:49
10兆是大的會話狀態,至少會議不是這樣使用。 – Robert 2010-01-25 12:50:08
@Robert - 這就是爲什麼我指定使用'Sql server'會話狀態而不是'inproc'會話狀態! – 2010-01-25 16:37:49