.NET:オンライン悲観的ロック、オンライン楽観的ロック、オフライン悲観的ロック、オプティミスティックロックのサンプルコードをオフライン

ペシミスティック・ロック

定義:私はデータを変更すると、他の人がデータを変更することはできません。

意図:同時は簡単に(多くの場合、悪い事は彼らに起こるのだろうと考える悲観主義者)を発生します。

シーン:実績スコアプロセスは、スコアリングプロセスが使用ペシミスティック・ロックに適しており、同じ期間における各評価点の後に評価結果テーブルと同じ行を変更し、そしてしばしば得点しなければなりません。

オプティミスティック・ロック

定義:1、失敗; 2、合併が提出された後:データがその間に変更された場合、誰でもデータ、ファイリングやデータベースの比較の時間を変更することができ、2つの治療のアイデアがあります。

意図:同時実行は、(多くの場合、楽観主義は悪いことでは彼らに起こらないと信じている)が発生する可能性はありません。

シーン:、同時シナリオはめったに発生しないため、より多くの人員管理者は楽観的ロックのより良い利用となりますので、ここで、労働契約を変更することができます。

オフライン

定義:また、長いトランザクションを呼び出し、ビジネス・プロセスは、多くの時間とサーバー間の通信を必要とします。

意図:ビジネス要件。

シーン:複数の要求のプロセスを継続する承認プロセスを変更し、複数の要求が長いトランザクションとして扱われなければなりません。

オンライン

定義:;一度、唯一のビジネス・プロセス・サーバーの通信も短いトランザクションと呼ばれます。

意図:ビジネス要件

シーン:ほとんどの企業は、このシナリオに陥ります。

オンライン楽観的ロック

【のtestMethod] 
        [ExpectedException(typeof演算(DbUpdateConcurrencyException))]
         公共 ボイド楽観的ロックテスト()
        { 
            使用VARの CONTEXT1 = 新しい新しいTestEntities())
            { 
                Context1.Users.First()名前 = " 李NIO 1。" ; 

                使用VARコンテキスト2 = 新しい新しいTestEntities())
                { 
                    context2.Users.First()名前 = " 李NIO 2 " ;  
                    context2.SaveChanges()。
                }

                context1.SaveChanges(); 
            } 
        }

悲観的オフラインロック

難易度がオフライン悲観的ロックの獲得と解放のタイミングを解決するものであり、一般的な考え方は、ロックされていない場合、彼らはロックを取得し、開いたフォームにロックするかどうかを判断する際に閉じた形のロックを解除し、セッションの有効期限が切れたとき、すべてのロックを解除することです。次のようにロック管理インタフェース:

パブリック インターフェイスIは、悲観的ロック管理インターフェースをオフライン
    { 
        BOOL かロック(GUIDドキュメント識別子); 

        ボイド取得ロック(GUIDユーザ識別子、のGUID文書識別子); 

        ボイドリリースロック(GUIDユーザ識別子、のGUID文書識別子); 

        ボイドリリースロック(GUIDユーザ識別); 
    }

 

おすすめ

転載: www.cnblogs.com/bangguo/p/12586161.html