将用户购物车保存在 sessionState 中以使用 asp.net 使其持久化是否专业?

Is it professional to save Users shopping cart in a sessionState for making it persistent using asp.net?

我想为 MVC 应用程序制作一个永久性购物车,换句话说,如果用户在登录后将一些产品添加到 his/her 购物车,然后离开应用程序而没有下订单或从中删除商品his/her 购物车。我想让用户在他们的购物车中添加他们添加的项目,直到某个特定的时间,比如一个月,手动订购或从 his/her 购物车中删除项目。 将他们的购物车保存在 asp.net sessionState 中是个好主意吗?如果是,在哪种模式下,State Server、InProc、Out of Process 还是 SQLServer? 此致

会话状态仅在用户与您的网站交互时持续。从技术上讲会更长一些,但是一旦用户离开或关闭浏览器,您就应该认为会话已关闭。

选项A: 使用用户计算机上的 cookie 将项目存储在他们的购物清单中。尽可能少地存储信息,可能只存储产品 SKU 和数量。

例如:创建 cookie

HttpCookie cartCookie = new HttpCookie("TheCart");
DateTime now = DateTime.Now;

// Possibly a serialised string of the shopping cart object (ensure no sensitive info though)
cartCookie.Value = shoppingCartData;

// Set when the cookie should expire. 
cartCookie.Expires = now.AddMonths(1);

// Add the cookie too the response
Response.Cookies.Add(cartCookie);

阅读 Cookie:

HttpCookie cartCookie = new HttpCookie("TheCart");
cartCookie = Request.Cookies["TheCart"];

选项 B: 如果您的用户已登录,则将购物车状态保存在数据存储中 - 例如,关系、磁盘或 NoSQL 数据库中。

好吧,我不会那样做。 说个场景:

您使用 User1 登录并在购物车中添加了一个产品然后注销了。

令人惊讶的是,当您使用 User2 登录时,您会看到与 User1 创建的相同的产品和相同的购物车。

因为会话 cookie 系统使用基于浏览器的逻辑。因此,只要您使用相同的浏览器并且除非删除 cookie,即使您切换用户,购物车也会保留。