1

私はこの Web アプリケーション開発に不慣れで、やるべき仕事があります。これはおそらく、データベース内のレコードのロックとロック解除を担当するある種のサービス (おそらくこれは少なくともこれは私の考えです) です。それを行うためのある種のベストプラクティスやツールを探しています。ツールとは、オープンソース ソリューションなどを意味します。ケースは、ユーザーがブラウザを閉じたとき、または一方がレコードを編集していて、もう一方もレコードを編集しているときに何をすべきかということです。これが私が達成したいことを理解できることを願っています。私が知っていることから、ロックの問題は統計がないため、これはある種の問題ですが、どのような問題かはわかりません:)事前に助けと時間をありがとう:)

ps。私はスタックでこれをグーグルしようとしました..しかし、私が得るのはc#のロックキーワードだけであり、グーグルにはソウルションがありますが、私が探しているものではありません。間違ったキーワードを入力しているのかもしれません...わかりません

4

2 に答える 2

2

ある種のベストプラクティスを探しています

これをしないでください。データベース内のデータを明示的にロックおよびロック解除するア​​プリケーションを作成しないでください。これには絶対に 0 (ゼロ) の有効なシナリオがあります。

オプティミスティック同時実行制御について読むことをお勧めします。

Entity Framework Optimistic Concurrency PatternsAnti-Pattern #3: Mishandled Concurrencyもお読みください。

于 2012-12-19T10:56:46.937 に答える
0

全体として、データベース内のレコードをロックすることは、特に実際のデータ操作プロセスとは関係のないサービスを通じて行うのは非常に危険です。他のプログラムがそのロックされたレコードに遭遇し、そこに書き込みたい場合、風変わりな同期の問題に対処しなければならない傾向があります - 彼らは待つのですか? 書きたかった変更を破棄しますか?

ほとんどのデータベース エンジンでは、ロックされたプロセスは待機するだけです。気付かないうちに、数十または数百のデータベース タスクが中断され、すべてロックが解放されるのを待っている可能性があります。

Remus Rusanu が書いているように、オプティミスティック同時実行制御について読む必要があります。これは、トランザクション Web アプリケーションのベスト プラクティスです。MS Entity Framework でサポートされています (アプリが .Net を使用して構築されている場合)。コード例はこちら

于 2012-12-19T14:04:53.380 に答える