通常,對於web application
,根據您的需要可以有多種選項來存儲複雜的對象。我不認爲有這樣做的BEST方式,只有最合適的方式和每一個解決方案,將帶着利弊
服務器端
會議 (我知道你說不能使用會話,但我只是想包括它):第一個選項浮現在腦海,適合大多數web應用程序陽離子。由於現代網絡的發展更多的是STATELESS,很多人都希望不惜一切代價避免使用Session
。然而,裏有一些特定的基礎設施配置,以支持會議無國籍應用程序,例如distributed session
或sticky session
或者你可以在一個dedicated server
或database
保存會話。
- 的觀光:簡單易用,支持Web應用程序自然
- 缺點:需要配置很多東西與無狀態應用
另一個專用服務器(工作之前有人問,我把它放在服務器端部分,即使它是另一臺服務器,但對我來說,無論我們的控制是SERVER SIDE) :這裏有幾個選項供您選擇,第一個選項可能是設置緩存服務器(Redis?)並使用密鑰(類似於會話)檢索/保存,或者您可以簡單地編寫應用程序以使用您自己的方法檢索/保存邏輯。
- 的觀光:可重用性,擴展性,適用於所有的
- 缺點應用不只是網絡,有自己的範圍:難以建立
數據庫:不是很明顯但數據庫確實支持這種要求
米
- 的觀光:可重用性,擴展性,適用於所有的應用程序而不只是網絡
- 缺點:性能問題
其他內存選項(TempData的,ViewBag等):
- PROS:易於使用,良好的ASP支持。NET MVC
- 缺點:somtimes很難繞過多個視圖
客戶端
- 有這麼多的選擇在這裏選擇像使用隱藏字段,Cookie,的localStorage,sessionStorage的,等等,甚至一個簡單的查詢字符串,將工作
- 的觀光:速度(因爲你不需要客戶端 - 服務器交通)
- 缺點:安全(你不能信任來自客戶端的任何東西),不是太複雜的對象(重物),安全性(敏感數據)做的很好,等
建議的解決方案
我希望我正確地理解你的問題,但在我看來,你不應該存儲複雜的對象,只需將複雜對象的ID存儲在的地方您的選擇,並進行查詢每次需要這個對象。所以你的對象總是最新的,你不會浪費資源來存儲複雜的對象。
希望它可以幫助你。
通過使用會話。 – CodeCaster
目前還不清楚爲什麼你的對象是由Web服務創建的,而不是僅僅在步驟2中使用模型綁定。你可以發佈你的相關操作方法嗎? – NightOwl888
爲什麼你不創建視圖模型並使用會話來達到這個目的? –