2009-04-28 79 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

相關問題