我們在我們的網站上有幾個嚮導樣式表單應用程序,我們從每個頁面上的用戶獲取信息,然後使用Web服務提交到後端進程。您可以/應該在用戶會話對象中存儲多少數據?
不幸的是,我們不能每個表單提交期間提交以塊的信息,所以我們要保存它的用戶會話,直到該過程結束,並在同一時間提交這一切。
是服務器內存/ SQL服務器的磁盤空間有多少,我可以在用戶會話存儲或者是有別的東西,我需要考慮的唯一約束金額是多少?
編輯:該網站建立在ASP.NET網頁表單上。
我們在我們的網站上有幾個嚮導樣式表單應用程序,我們從每個頁面上的用戶獲取信息,然後使用Web服務提交到後端進程。您可以/應該在用戶會話對象中存儲多少數據?
不幸的是,我們不能每個表單提交期間提交以塊的信息,所以我們要保存它的用戶會話,直到該過程結束,並在同一時間提交這一切。
是服務器內存/ SQL服務器的磁盤空間有多少,我可以在用戶會話存儲或者是有別的東西,我需要考慮的唯一約束金額是多少?
編輯:該網站建立在ASP.NET網頁表單上。
假設信息不敏感,那麼您可以將信息存儲在cookie中,這會減少服務器端存儲所需的信息量。這也可以讓你通過JavaScript訪問信息。
或者您可以使用視圖狀態來存儲信息,雖然這可能會導致大量數據的服務器和客戶端,而不是我的首選解決方案之間發送。
的會話信息,你應該店鋪不同似地根據不同的應用,預計用戶數量,服務器規範等方面給予更準確的答案將需要更多的信息:)
最後的量,假設其中的信息在整個過程中收集並不是必需的,因此您可以將所有信息存儲在數據庫表中,並且只在會話中存儲記錄唯一ID。當每個頁面被提交時,db記錄被更新,然後在最終頁面上檢索並提交所有信息。如果您需要在每個後續頁面上檢索以前的信息,由於需要的數據庫讀取次數不同,這不是一個解決方案。
如果使用傳統的HTTP模型(即不使用RUNAT =「服務器」),您可以將數據上傳到另一個ASP頁面,然後將上述發佈數據到隱藏的表單元素,您可以然而,許多網頁做到這一點您需要避免在會話變量中放置任何東西。
你也可以有1 ASP頁與整個HTML表單,並隱藏其中的一部分,直到用戶填充和「提交」可見部分...
然後簡單地隱藏在填寫和部分顯示錶單的下一個部分......
這將是在.NET框架中,使用面板爲每個「嚮導的第一步」非常容易,並添加loggic何時顯示和隱藏每塊面板。
然後,您將在一頁上獲得所有數據。
由於它是從性能的角度來看有問題的大量數據存儲在用戶會話對象,ASP.Net提供什麼是在上述柱中提到頂部其他一些解決方法。 ASP.NET Profile Provider允許您在數據庫中保存與會話相關的信息。您也可以使用Session State Server,它使用單獨的服務器來存儲所有會話信息。如果您需要使用羣集或負載平衡器,這兩種情況都會考慮在內,但服務器仍然可以識別不同服務器上的會話信息。如果將信息存儲在Http Session對象中,則會遇到一個問題,即一個用戶必須始終訪問該會話的同一臺服務器。
會話,視圖狀態,數據庫。這些都很緩慢,但會完成工作。
隱藏的表單域是我最喜歡的答案。
還有其他的方式來堅持狀態。餅乾,彈出窗口,框架集或iframes。
您仍然可以通過asp.net從每個表單菊花鏈postdata,只需刪除runat = server併發布到另一個.net頁面即可。 – mmattax 2008-09-16 15:06:34