- - PR -
ASP.NETで排他制御するには?
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-06-04 10:37
こんにちは。お世話になってます。
ASP.NETで開発を始めました。 ある伝票をあるユーザが開いているときは、他のユーザが開けないなどの排他制御 を行う場合、C/S型ならロック用テーブルを設けるなど、比較的簡単に行えました。 Web系システムでは、画面遷移の状態をシビアに制御しにくいため、あるユーザが ある伝票をロックしても、正常に画面を遷移せず(閉じず)にしたため、ロック を残したままの状態にある可能性も高いと思われます。 こういった場合、どのような設計を行うべきでしょうか? |
|
投稿日時: 2005-06-04 20:43
不特定多数のユーザーが使用するWebアプリケーションにおいて
「ある伝票をあるユーザが開いているときは、他のユーザが開けないなどの排他制御」 をやること自体が、あまりよろしくないのではないでしょうか。 参照は排他なしに許可して、更新処理を楽観的ロックするのが一般だと思います。 どうしてもやるなら 1.帳票のテーブルに「開いた時間」と「開いたユーザー」を格納する列を追加する。(デフォルトはNULL) 2.帳票を開く時、「開いたユーザー」が自分以外で「開いた時間」の列が、NULLか一定時間たっていなければ開けない。 3.開ける場合は、「開いたユーザー」にユーザーと「開いた時間」に、現在日付を格納する。 4.ユーザーが明示的に帳票を閉じた場合は「開いた時間」と「開いたユーザー」をNULLにする これならば、ユーザーが正規の手順で処理を行わなくても、一定時間たてばロックが無効になります。 |
|
投稿日時: 2005-06-06 14:35
返答ありがとうございます。
考えていたことはその方法でいけそうです。 |
1