2012-02-23 59 views
0

我正在使用C#編寫一個ASP MVC項目。我在哪裏可以將共享數據存儲在ASP MVC網站上?

我的問題基本上是哪裏是最好的地方來存儲一些數據,你在你的網站上給定的部分,例如說,處理用戶登錄到網站的方法,然後你想訪問網站的其他部分的數據,說你的模型層的類。

假設數據只是一個字符串列表,有什麼更好的,將它作爲列表存儲或用類包裝列表?

謝謝。

回答

2

這取決於您需要多長時間才能獲得數據。

  1. 你可以在控制器

  2. 上使用TempData如果你只是想(又名下一次該網站將消失在用戶登錄它來存儲每個會話建立一個請求的情況下)你可以使用Session

  3. 如果你想永遠保持它,那麼你將需要使用某種脫機存儲,比如數據庫或某種類型的文件。

祝你好運。

+0

非常清楚這個數據的範圍(請求與會話),然後按照shenku的建議。我唯一的補充是在內存緩存中考慮如memcached,redis或appfabric,如果你想在服務器之間共享東西。 – hoserdude 2012-02-24 00:06:30

0

這是爲了保存一些數據,你在一個給定 部分最好的地方你網站,例如說,處理用戶登錄到網站的方法,然後你想在網站的其他部分訪問那個數據 ,比如你的模型 層的類。

數據庫是存儲此類信息的絕佳選擇。或者一個cookie,如果它是用戶特定的,並且你不需要它持續很長時間。或者服務器上的文件。或者在雲端。或者在C++非託管Win32函數中編寫一個P/Invoke包裝器,該函數將數據存儲在公司的Intranet FTP服務器上。你擁有的可能性接近無限。選一個你感覺最舒服的。

而且我明確地提出而不是建議您使用會話與其他人可能會建議您相反。

+0

有時會話根本無法「合理」避免。我唯一使用它的地方是如果用戶試圖提交一些數據(例如表單),但沒有登錄,所以我需要重新指向註冊/登錄頁面,然後再次顯示預填充數據重定向。唯一的選擇是在數據庫中存儲「臨時」數據(例如保存,取出,刪除),這是過度殺傷。 – RPM1984 2012-02-23 23:02:01

+0

@ RPM1984,當然總是可以避免一個會話。我總是避免它。就你所描述的場景而言,有很多其他方法可以實現它,例如cookies,HTML 5 sessionStorage,... – 2012-02-23 23:05:11

+0

我想我可以使用cookies,但它仍然是「會話」,儘管客戶端-側。至於HTML5 dom存儲,這將如何工作?我如何從窗體獲取表單數據到註冊頁面,然後再返回?記住,它是一個POST,然後是GET(重定向到登錄頁面),然後是POST(登錄),然後是另一個GET(回到原始頁面)。加上一個餅乾,你必須明確地銷燬它(或者讓它懸掛)。至少使用TempData它會在讀取後自動刪除。無論如何,我們可以一整天都去。我知道你的感覺。 :) – RPM1984 2012-02-23 23:15:13

1

恩,請原諒我的無知,但不能將它存儲在數據庫中嗎?

你是什麼意思的「共享」?由誰共享,通過不同的頁面,但同一用戶?還是由不同的用戶?

如果後者 - > DB。

如果前者爲TempData,或者如果您在談論「身份驗證」數據,則將其存儲在表單身份驗證票證中(假設爲表單身份驗證)。