MVC 中的购物车和并发 ASP.NET
本文关键字:并发 ASP NET 购物车 MVC | 更新日期: 2023-09-27 18:31:05
我刚刚开始考虑构建购物车,设计过程中出现的问题之一是在这种情况下如何处理 - 假设产品 A 的剩余库存水平为 5。 然后客户 A 到达页面,他们可以在其中选择所需的数量并选择 3。 但他们尚未确认订单/付款等。 然后客户 B 来到现场并选择数量 4。 那么问题就出现了,如果两个客户都确认他们的订单,其中一个会遇到错误,因为他们做出选择后库存水平会降低。 处理此问题的标准方法是什么? 是否可能创建一个"暂停"字段并在每次用户选择数量时添加到其中,以便在他们确认或取消之前搁置该库存? 如果他们不取消而是离开网站怎么办?
只是从可能已经处理过这个问题的任何人那里寻找一些指示。
在计算特定产品的可用库存时,您应该考虑"库存预留"。您决定何时将某个购物车行置于"预订"模式以及何时再次"释放"它。
我已经实现了一个商店,在用户开始付款时"保留"库存,当用户取消付款时"释放"或在付款成功时"发行"。
不要忘记在预订时仔细检查可用库存。
嗯,
在用户未确认订单之前,您不应保留库存。如果我在您之前购买了产品,您应该会收到一条消息,告诉您有人已经购买了该产品,或者只是没有足够的库存。
它会让你摆脱很多头痛
我的立场是您想实现购物卡,并且您遇到了一个问题,而多个用户登录并托盘购买东西:)
这是解决方案..出现此问题是因为购物卡在用户之间共享。您可以只为登录用户维护购物卡的 TMP 列表。当他们准备付款时,将其添加到购物卡中并显示详细信息。
注意:执行此操作时必须处理库存。
我可以建议您不要锁定用户物品,直到他到达订单确认页面,并有一个合适的锁定持续时间,标记在特定持续时间内保留的物品,在此之前订单应该完成,否则物品会反映回库存中。如果您查看亚马逊购物车帮助页面,它是这样说的
将商品放入购物车不会为您保存该商品。仅在您单击"放置您的"订购"按钮并接收电子邮件确认我们已收到您的次序。
一个极端的情况是在最终订单完成之前不预订,或者仅在您到达付款页面时才预订。
您需要最小化阻止窗口并处理存在冲突的情况(通过提供抢注选项)