2009-07-10 14 views
0

asp.netのWebサイトでは、管理者がアクセス可能なフォームを作成しています。asp.netの同時実行性を解決するには

複数の管理者が登録できます。すべての管理者が同時にフォームを開いてフォームからいくつかのコンボボックス値を選択したら、どうすれば並行性を維持できますか

一度最初の管理者がcomboxから値を選択して保存すると、

しかし、2人または3人の管理者が同じ値を同時に保存すると、どのように並行性の問題が解決できますか。

ここで、適切な場所コードまたはデータベースはありますか?そしてどうやって?

答えて

1

オプティミスティックな並行性制御についてお読みください。本当に楽観的な、悲観的な、最後の1つの勝利の中から選ぶことに至ります。通常、正しい選択は楽観的です。最後に別のユーザーが失敗すると時間がかかるプロセスでなければ楽観的です。

適切な場所については、現在どのようにデータアクセスコードを行っているかを伝える必要があります。また、どのデータベースを使用していますか?

This articleで始めることができます。我々のアプリで

0

我々は両方でそれを処理:

すべての更新プログラムは、更新ストアドプロシージャを通過します。 フィールド "Modified"、mandetoryは、指定されたものより新しい場合、このspはエラーを表示します。エラーは、コード内の特別な例外クラスによってスローされ、同時実行例外として識別できます。

例:

  • 読む1:12時〇一分30秒(変更の変更なし:午前12時00分00秒
  • 読む2(更新日は、過去に例午前11時00分00秒です)日付)
  • 更新1:12:03:00
  • 更新2:12:04:00(並行性の向上、アップデートの参照先:ああ、変更されたものが新しい1)
+1

単純な日付/時刻フィールドはお勧めできません。最近のコンピューターは非常に高速で、2つのUPADTE操作がタイマー解決単位より高速に実行される可能性があります。通常、カウンターが良いアイデアです。 MSSQLの「タイムスタンプ」列のタイプを参照してください。 –

0

Aコモ並行処理を実装するためのテクニックは、あなたのビジネスプロセスに応じて開発者がコードを書くのと同じように、あなたとのアップデートにタイムスタンプを使うことです。最後に勝利したので、最後の書き込みが勝ち、競合をユーザーに通知し、変更をコミットするかどうか、または変更された値をマージするかどうかを選択できるようにします。

この最後の手法は、ユーザーが1つの値セットをコミットするが、別のセットが更新されるという意味でデータベースには共通していません(また、複雑なルールが必要です) 。いくつかのソース管理プロバイダが動作する方法について考えるなら、これがどのように実装されているかを見ることができます。

削除操作の場合、2人のユーザーが同じレコードを削除したことが本当に問題になるため、心配する必要はありません。 2つ目は効果がありません。

関連する問題