- PR -

Webアプリにて二重起動を防止するには?

1
投稿者投稿内容
時人
会議室デビュー日: 2003/10/03
投稿数: 17
投稿日時: 2003-10-28 12:36
VB.NET+ASP.NET にてWebフォームの作成をしているのですが

Aさんが画面を開いている時は、Bさんが同じ画面を開こうとしたら
「他PCで使用中なので開くことができません」
などメッセージを出したいと思っています。

すぐに思いつく方法としてはAさんが画面開いた時にDBに「使用中フラグ」みたいな
ものを作って更新したらいいとは思うのですが、
他にDBを使わずに制御する方法はありませんでしょうか?
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2003-10-28 13:30
引用:

時人さんの書き込み (2003-10-28 12:36) より:
VB.NET+ASP.NET にてWebフォームの作成をしているのですが

Aさんが画面を開いている時は、Bさんが同じ画面を開こうとしたら
「他PCで使用中なので開くことができません」
などメッセージを出したいと思っています。

すぐに思いつく方法としてはAさんが画面開いた時にDBに「使用中フラグ」みたいな
ものを作って更新したらいいとは思うのですが、
他にDBを使わずに制御する方法はありませんでしょうか?



Applicationオブジェクトにキーは画面IDなどで、
フラグを立てておけばいいのではないでしょうか?
フラグの内容としてはどのセッションからのアクセスか、いつアクセスしたか、
といった情報を記録すればよいように思います。

各画面の最初にApplicationオブジェクトのその画面用フラグの値を参照し、
既にフラグが立っていれば、「他PCで使用中なので開くことができません」のような
メッセージを表示し、そうでない場合は、フラグを立ててから画面を表示する、
というような流れです。

Aさんが他のページに遷移した場合や、Sessionが切れるタイミングで
フラグは元に戻しておく必要があるでしょう。

ぱっと思い付く方法なので、これで問題なくいけるかどうかは詳細には検討していません。
例えば、Aさんが複数ページ開いた場合はどうするか?等問題がないわけではありません。
どういう状態を「使用中」「使用中でない」とみなすかよく検討しないと
他の人がページを開けなくなる恐れがあるので注意が必要です。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2003-10-28 14:14
引用:

よねKENさんの書き込み (2003-10-28 13:30) より:

Aさんが他のページに遷移した場合や、Sessionが切れるタイミングで
フラグは元に戻しておく必要があるでしょう。

ぱっと思い付く方法なので、これで問題なくいけるかどうかは詳細には検討していません。
例えば、Aさんが複数ページ開いた場合はどうするか?等問題がないわけではありません。
どういう状態を「使用中」「使用中でない」とみなすかよく検討しないと
他の人がページを開けなくなる恐れがあるので注意が必要です。


ある画面を開いてブラウザを閉じたら、セッションがタイムアウトするまで誰も開けないなど、なかなか難しいですよね、きっと。

Webのシステムで、誰かが画面を開いているとき…というのは、根本的にちょっと無理があるのではないでしょか?>時人さん
時人
会議室デビュー日: 2003/10/03
投稿数: 17
投稿日時: 2003-10-28 14:19
お返事ありがとうございます!

引用:

Aさんが他のページに遷移した場合や、Sessionが切れるタイミングで
フラグは元に戻しておく必要があるでしょう。

ぱっと思い付く方法なので、これで問題なくいけるかどうかは詳細には検討していません。
例えば、Aさんが複数ページ開いた場合はどうするか?等問題がないわけではありません。
どういう状態を「使用中」「使用中でない」とみなすかよく検討しないと
他の人がページを開けなくなる恐れがあるので注意が必要です。


たしかに、そうですねー。
ブラウザから更新や戻るボタンを押されたときの事とかも考慮しないといけないんですね。。。
そうなると、すごい大変かもしれないです。
時人
会議室デビュー日: 2003/10/03
投稿数: 17
投稿日時: 2003-10-28 14:27
引用:

ある画面を開いてブラウザを閉じたら、セッションがタイムアウトするまで誰も開けないなど、なかなか難しいですよね、きっと。

Webのシステムで、誰かが画面を開いているとき…というのは、根本的にちょっと無理があるのではないでしょか?>時人さん


やはり画面を開く開かないを制御するのは難しそうですね。
具体的に何をやりたいかと言うと

メンテナンス画面にて、
「誰かが更新中は、他の人は更新できなくしたい」と思っています。

やはり画面を開いている開いていないではなく
データを更新中か更新中でないかで見ないとだめな気がしてきました。。。
時人
会議室デビュー日: 2003/10/03
投稿数: 17
投稿日時: 2003-10-28 16:04
すいません。

この件は解決していませんが
別の方法で回避しました。

ありがとうございましたー。
1

スキルアップ/キャリアアップ(JOB@IT)