2009-04-28 4 views
0

同じデータベースを使用しているasp.netとWindowsアプリケーションの並行性に関してベストプラクティスがあるのだろうか? 私は商品の数量のデータベースを持っています。これらの商品のいずれかは、ウェブサイトのショッピングカートまたは店舗の場所から異なる数量で販売することができます。ユーザーがショッピングカートに商品を追加する際に商品数量を更新することは問題が多いようです。ウィンドウとWebアプリケーションの同時実行性C#asp.net

おかげ

+0

おそらく、データベースシステムと環境についてより具体的に考えることができます。あなたは基本的にACID(http://en.wikipedia.org/wiki/ACID#Isolation)の隔離プロパティについて話しているようですが、現代のデータベースはすべてこれに何らかの形で対応しています。 –

答えて

1

あなたのシステムにゲートウェイを導入することをお勧めします。ゲートウェイは、WindowsアプリケーションとWebアプリケーションの両方のDBの仲介役を担う単一のアプリケーション(または既存のアプリケーションの一部:winformsアプリケーションまたはWebアプリケーション)になります。この方法では、db要求とdb自体の間に1つの障害点しかありません。並行性を管理するためにゲートウェイを設計し、その後、dbに書き込む他のプロセスについて心配する必要はありません。

私があなたの立場にいた場合、私はゲートウェイとしてウェブアプリケーションを選択するかもしれません。 dbとのインタフェースをとるための一連のサービス/リポジトリを作成し、WebアプリケーションのUIレイヤにそれらのサービスにアクセスさせます。その後、Webサービス(またはWCFサービス)を介してそれらのサービスをWindowsアプリケーションに公開し、dbに直接アクセスするのではなく、データベースにアクセスします。この方法で、システムを切り離し、データストアへの単一のエントリポイントを作成しました。おそらく、このアプローチでは並行性以外の多くの問題を解決するでしょう。

-1

項目は(そのようなバスケットの有効期限など)バスケットに予約することができる方法に関するビジネスルールあなたが「予約済み」とカウントを「販売」を維持することはできませんを知りませんか?

あなたが言うことに基づいて私はおそらくこれを処理するためのトランザクションベースのシステムではなく、補償ベースのシステムだと思うだろう。はい、あなたは売買中の取引を持っていますが、予約していません。

+0

データベースはSQL 2008で、NorthWind dbとほぼ同じに設定されています。アイテムテーブル "InSessionCount"に追加可能なフィールドを追加しました。これはnull可能なintになります。ユーザが「任意のユーザ」がアイテムをチェックアウトすると、選択された数量がInSessionCountに格納されます。トランザクションが承認されると、数量行が変更されます。 – Sammy

関連する問題