標籤

ASP.NET MVC (29) Visual C# (15) JQuery (10) Plugins (8) JQuery Plugins (6) JavaScript (6) MySQL (5) CSS (4) LinQ (4) Mac OS (4) CentOS (3) Design Pattern (3) Entity Framework (3) IIS (3) Python (3) Windows (3) php (3) Docker (2) LAMP (2) SQL Server (2) WCF (2) .NET (1) .NET Core (1) AWS (1) Browser (1) GIS (1) IE (1) Internet Security (1) Linux (1) Platform (1) React (1) SEO (1) Testing (1) VMware (1) Windows 7 (1) cookie (1) curl (1) laravel (1) phpBB (1) session (1) 中古屋 (1) 透天 (1) 閒言閒語 (1) 面試 (1) 鳥松 (1)

2014年10月16日 星期四

使用ASP.NET MVC 實作購物網站 (十六) - 購物車與Session


儲存購物車的方式
使用者瀏覽購物網站時,所選的購物商品資訊應該要被存放在哪裡呢?這是一個暫時性的儲存的資料,通常我們會使用

1. Cookie
  儲存在客戶端的瀏覽器,優點是不需耗費伺服端的記憶體空間,缺點是會暴露資訊在客戶端中

2. Seesion
  儲存在伺服端的記憶體空間,優點是資料有隱秘性,缺點是當同時上線人數超過一定數量,有可能會讓伺服器的記憶體滿載

其中由於Cookie有安全性疑慮,所以我們往後會採用Session的儲存方式來實作購物車..

Session儲存模式
ASP.NET MVC Session有三種儲存模式,分別是
1. In-Memory : 儲存在運行的Web伺服器記憶體中,如果運行的Web伺服器掛點則Session會消失
2. State Server : 儲存在某一台伺服器中的記憶體,但此台伺服器會提供狀態服務讓很多不同的Web伺服器連接,Web伺服器掛點不會造成State Server儲存的Session消失
3. SQL Server : 儲存在某一台SQL Server,Web伺服器掛點不會造成SQL Server儲存的Session消失

根據使用的情境可以自行決定Session的儲存方式,我們決定以最簡單的In-Memory方式來完成,實際上如果要切換為2 or 3的模式,只需要改變Web.config設定檔,原始碼是幾乎不需要改動的.


如何使用Session
在ASP.NET MVC 如何存取Session呢?例如將變數value儲存至Session的某個key值中:

Session["key"] = value;
是不是很簡單呢?

而取出Session也是一樣容易的,例如將Session的某個key值取出,並且設定給value:

var value = Session["key"];

以上例子中的value可以是實值型別(int ; string;  ...) 或者是某個類別的物件,對於購物車來說,我們要儲存的資訊會比較多,例如所有購買的商品列表,總價,優惠等資訊.

明天我們開始介紹如何設計購物車類別囉



沒有留言:

張貼留言