2

みんな、私は大きな問題を抱えています。

バックオフィス アプリケーションを実行していますが、編集可能なグリッド ビューを含むフォームがあるとします。

  1. 100人のユーザーがページにアクセス
  2. 100 人のユーザーがデータベースから提供されたデータとしてフォーム ページを表示します
  3. 100 人のユーザーがいくつかのフィールドを編集
  4. この例では、最終的なデータと一貫性をどのように制御しますか?
4

2 に答える 2

0

これに対する技術的解決策を計画して実装する前に、つまり. コードに基づいて、ソリューション全体を設計する必要があります。

つまり、100 枚の紙を 100 人の異なる人々に配り、それぞれにその Web フォームのコピーを配ったとします。その 100 人が自分の紙にメモを書き、順不同であなたに返します。

このシナリオで一貫性をどのように処理しますか? それに答えることができれば、それを実装することができます。

ただし、その形式で保持しているデータについて詳しく知らなければ、具体的なアドバイスを提供することは事実上不可能です。

于 2010-07-06T13:51:35.510 に答える
0

あなたが本当に欲しいものに依存します。要件はありますか?あなたは提案を求めていますか?

考えられる解決策の 1 つ

編集が完了したときに呼び出される明示的な保存アクションがある場合、

  1. ユーザーがページに移動し、
  2. ユーザーがテーブルを変更し、
  3. ユーザーが「保存」し、
  4. ページはデータストアから現在の値を取得します (保存時点)
  5. ページは現在の値と変更された値を比較します
  6. すべての競合が強調表示され、ユーザーに競合の「解決」を要求します
  7. ステップ 3 に進みます。競合が検出されなくなるまで

別の可能な解決策

ステップ 3. からステップ7.までのループを回避したい場合は、ステップ 4. から 6. までを常にトランザクションでラップすることができます。これはかなり手間がかかり、もう少し作業が必要であり、全体的な並行性を効果的に低下させる可能性があります。

さらに別の可能な解決策

別の可能な解決策は、プロセスの離散性を減らし、より連続的なものにすることです。データのライブ フィードを提供します。

  1. テーブル データのプッシュまたはポーリングを許可する WindowsService/WCF サービスを作成します。
  2. データのページ ポーリング、またはリモート サービスからのデータの非同期受信、
  3. ページは、受信したデータでユーザーのページのコンテンツを変更します
  4. 競合しない新しい値は、一時的に 1 つの色 (競合のない変更を示す) で強調表示されます (薄緑色など)。
  5. 競合する新しい値は、永続的に赤で強調表示されます

保存プロセスがある場合、解決されるまで赤の値は保存されません。

最後の (推奨される) 可能な解決策

明示的な保存アクションがない場合は、

  1. ユーザーがセルをクリックします (実質的にセルの編集を要求します)
  2. ページは、そのセルの「ロック」を要求する Windows\WCF サービスと通信します。
  3. その特定のセルで他のユーザーが「ロック」を要求していない場合は、セルをそのユーザーにロックし、true を返します。別のユーザーがその特定のセルのロックを要求した場合は、現在のロックを尊重して false を返します。

リモート サービスが false を返す場合、ユース ケースは終了し、セルは変更できません。リモート サービスが true を返した場合、ユーザーはコンテンツを変更し、ユーザーがセルを離れるか、ページをリロードすると、リモート サービスはロックを解除します。

結論

よし、ちょっと手を振ったけど、噛むには十分な脂だ。考えてみてください。解決策はたくさんあります。

于 2010-07-06T14:01:42.263 に答える