2009-04-28 76 views
0

我想知道是否有关于使用相同的数据库的asp.net和Windows应用程序之间的并发最佳做法? 我有一个数据库与他们的数量,任何这些项目可以从网站购物车或商店的位置不同数量的销售。当用户将商品添加到他们的购物车时更新商品数量似乎是一个有问题的方法。Windows和Web应用程序之间的并发C#asp.net

感谢

+0

也许你可以更具体地了解你的数据库系统和环境。看起来你基本上是在谈论ACID的隔离属性(http://en.wikipedia.org/wiki/ACID#Isolation),并且所有现代数据库都以某种方式解决了这个问题。 – 2009-04-28 07:23:39

回答

1

我会建议在你的系统中引入一个网关。网关将是一个单一的应用程序(或您的一个现有应用程序的一部分:Winforms应用程序或Web应用程序),作为Windows应用程序和Web应用程序的数据库的中介。这样,db请求和db本身之间只有一个故障点。设计网关来管理并发,然后你不必担心写入你的数据库的其他进程。

如果我处于您的位置,我可能会选择网络应用程序作为网关。创建一组服务/存储库以与数据库交互,并让Web应用程序的UI层访问这些服务。然后通过Web服务(或WCF服务)将这些服务公开给Windows应用程序,以便它访问数据库而不是直接访问数据库。这样你就可以分离你的系统并创建一个到数据存储的单点。除了这种方法的并发性,你可能会解决更多的问题。

-1

不知道关于如何一个项目可以在一个篮子里(如篮到期)保留的业务规则,你能不能保持“保留”和“卖”的计数?

好的根据你说的。我想可能是一个基于薪酬的系统,而不是一个基于交易的系统来处理这个问题。是的,你有交易发售但后备你不要

+0

该数据库是一个SQL 2008,并设置为与NorthWind db几乎相同,我最终添加了一个额外的字段到项目表“InSessionCount”,这将是一个可为空的int。当用户“任何用户”检出项目时,我们将所选数量放入InSessionCount中,如果交易获得批准,我们修改数量行else,我们将InSessionCount字段重置为空,并且订单被取消。 – Sammy 2009-04-28 18:36:13

相关问题