- - PR -
Webアプリにて二重起動を防止するには?
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-10-28 12:36
VB.NET+ASP.NET にてWebフォームの作成をしているのですが
Aさんが画面を開いている時は、Bさんが同じ画面を開こうとしたら 「他PCで使用中なので開くことができません」 などメッセージを出したいと思っています。 すぐに思いつく方法としてはAさんが画面開いた時にDBに「使用中フラグ」みたいな ものを作って更新したらいいとは思うのですが、 他にDBを使わずに制御する方法はありませんでしょうか? | ||||
|
投稿日時: 2003-10-28 13:30
Applicationオブジェクトにキーは画面IDなどで、 フラグを立てておけばいいのではないでしょうか? フラグの内容としてはどのセッションからのアクセスか、いつアクセスしたか、 といった情報を記録すればよいように思います。 各画面の最初にApplicationオブジェクトのその画面用フラグの値を参照し、 既にフラグが立っていれば、「他PCで使用中なので開くことができません」のような メッセージを表示し、そうでない場合は、フラグを立ててから画面を表示する、 というような流れです。 Aさんが他のページに遷移した場合や、Sessionが切れるタイミングで フラグは元に戻しておく必要があるでしょう。 ぱっと思い付く方法なので、これで問題なくいけるかどうかは詳細には検討していません。 例えば、Aさんが複数ページ開いた場合はどうするか?等問題がないわけではありません。 どういう状態を「使用中」「使用中でない」とみなすかよく検討しないと 他の人がページを開けなくなる恐れがあるので注意が必要です。 | ||||
|
投稿日時: 2003-10-28 14:14
ある画面を開いてブラウザを閉じたら、セッションがタイムアウトするまで誰も開けないなど、なかなか難しいですよね、きっと。 Webのシステムで、誰かが画面を開いているとき…というのは、根本的にちょっと無理があるのではないでしょか?>時人さん | ||||
|
投稿日時: 2003-10-28 14:19
お返事ありがとうございます!
たしかに、そうですねー。 ブラウザから更新や戻るボタンを押されたときの事とかも考慮しないといけないんですね。。。 そうなると、すごい大変かもしれないです。 | ||||
|
投稿日時: 2003-10-28 14:27
やはり画面を開く開かないを制御するのは難しそうですね。 具体的に何をやりたいかと言うと メンテナンス画面にて、 「誰かが更新中は、他の人は更新できなくしたい」と思っています。 やはり画面を開いている開いていないではなく データを更新中か更新中でないかで見ないとだめな気がしてきました。。。 | ||||
|
投稿日時: 2003-10-28 16:04
すいません。
この件は解決していませんが 別の方法で回避しました。 ありがとうございましたー。 |
1