在MVC应用程序中存储购物车的位置?

时间:2010-10-20 15:00:16

标签: c# asp.net asp.net-mvc

我正在铁路门户工作,需要维护用户选择的组件购物车,购物车中可能有多个不同类型的组件。我没有看到将购物车存储在数据库中的值,想将最终订单存储在DB中。我在哪里可以在MVC中按用户会话存储/保存(临时)购物车数据?我在网上看到的所有MVC样本都将购物车数据保存在数据库中 - 不知道为什么。

MVC表示层将与外部Web服务进行通信以获取这些组件的定价和可用性,因此我不能仅存储产品ID来查找购物过程中的实际产品描述/价格......我有将所有内容存储在购物车中(产品ID,描述,价格等)在内存中的某些位置。我的应用程序将在WEB FARM环境中运行,不能使用进程内会话存储。 我想到的选择是:

  1. SQL SERVER中的SESSION STATE
  2. 使用某种分布式缓存机制来存储会话数据,例如“Windows Server AppFabric”

5 个答案:

答案 0 :(得分:1)

始终可以选择将此数据存储在加密的客户端cookie中。 Ruby on rails就是这样做的,它可以很好地扩展。

有关Ruby如何执行此操作的详细信息,请参阅http://agilewebdevelopment.com/plugins/encrypted_cookie_store。不知道如何使用ASP.Net MVC实现这一点。

答案 1 :(得分:0)

购物车存储在数据库中,以便在需要时可以跨会话保留。

此外,通过将其存储在数据库中,您可以获得可以查询的其他信息,例如我的客户想要哪些商品尚未购买?

即使你现在不想要这个功能,也可以把它放在数据库中,因为稍后添加该功能将会更加困难,而且预先做起来相当容易。

答案 2 :(得分:0)

购物车是文档数据库的完美匹配。我建议首先查看RavenDB,Redis,MongoDB,CouchDB。

如果您想要极致性能,那么使用App Fabric的概念已经存在,之后您可以将购物车坚持到任何耐用的商店,因为性能是一个相对有用的点。

答案 3 :(得分:0)

尽管将购物车作为加密字符串存储在隐藏字段中很有吸引力,但这是错误的,因为大多数用户都希望他们的购物车能够保持其状态。

想象一下,如果亚马逊的购物车没有坚持会议。他们不会出售几乎所有书籍,电子产品或其他任何东西。

如果有疑问,请查看一个成功的同等网站,看看他们做了什么。这适用于生活中的所有事物,而不仅仅是网站。

答案 4 :(得分:0)

将购物车详情存储在数据库中 和cookie中的购物车参考用于识别特定浏览器/客户端。

e.g

tblCart (refId,proId,qty)

refId和ProId将是主键。

refId存储在cookie中