aierong [原作]
第一次做BToC站點的購物車,總結了一下購物車中資料的存放方式
方式1:用會話
會話中可以存放任何類型資料,每個使用者有一個唯一的會話ID,用此ID區分不同使用者的購物車會話資料是存放在WEB伺服器的記憶體中的,如果使用購物車的使用者比較多的話,這樣一來將佔用大量伺服器資源會話有一小缺陷,它是依靠COOKIE來與用戶通訊的,一旦用戶關閉COOKIE,使用會話將比較麻煩
當然在ASP。 NET還有另2種方式保存會話資料一種是指定另一台伺服器來存放會話數據,這樣一來可以有效分擔WEB伺服器的執行開銷。
另一種是把會話資料存放在MS SQL中,MS SQL是利用局部臨時表實現的,會話資料放在局部臨時表中,MS SQL為每個局部臨時表也分配一個唯一的ID
,我想是用此ID區分不同使用者的不同會話資料的。但是我不推薦使用此方法,頻繁在資料庫裡面建立和刪除臨時表對資料庫的開銷太大
方式2:在資料庫裡面用表(ShopingCart)
我喜歡的實作方式
表有幾個基本字段
CartId 購物車ID(唯一)
Id 商品的ID(唯一)
Qty 用戶購買商品的數量
CreateDate 購物車創建時間
此表的字段CartId是區分不同用戶的購物車的ID,要是登陸用戶,你可以在表中存放此登陸用戶的登陸名的ID,要是未登陸用戶使用購物車,
你可以給他分配一個GUID(全球唯一標誌)來做購物車ID
此方法有也有一些缺陷,一是它會造成大量無效數據,大家都知道,使用購物車的人,不一定會最終結賬購買商品。但使用購物車就得
往表(ShopingCart)裡面插入相關數據,未登陸用戶一離開站點,他在表中的數據就成了一堆廢數據,因為他在下次登陸時,我們分配給他的
是一個新的CartId購物車ID.有廢數據我們就得時常來維護此表,我們可以寫一個清除廢數據的過程(利用字段CreateDate和CartId可以判斷無效數據),人工調用運行也可以,要是想由MS SQL代我們來運行,就可以設定一個JOB,由JOB自動呼叫過程清楚廢數據
說拉缺陷,我們該說說此方式的優點拉
1。佔用系統資源少,我們可以把資料庫安置在一台電腦中,WEB伺服器安置在另一台電腦中,系統資源充分發揮
2。購物車中資料可以有效保留,我們可以試想一客戶在購物時,突然某其他原因(死機等原因)離開了購物站,他在購物車中數據有效
保留
下來,他下次登陸時購物車中還有上次保留的數據,避免用戶再次選購商品的操作(此功能只對登陸用戶的購物車有效) ,要是用會話實現
購物車,所有用戶一旦離開站點,他的購物車中數據全部失效
好拉,我就總結了這些,由於剛接觸ASP。 NET,對許多方面還認識不多,可能還有其他一些方法實現購物車,希望大家能夠給與指點,謝謝大家