現在三層構造でのシステム運用を行っています。(Delphi7で作成したEXEプログラム)
構造はクライアントからサーバーAを中継しデータベースサーバーBを更新しています。
社内的には問題なく動作しております。
WAN超えでセグメントが変った場合に極端に遅くなり困っています。
画面切替に15秒を要します。
ただ以下の場合は負担なく動作します。
1.Windows2000の場合
2.WindowsXPでファイアーウォールを無効にした時
ファイアーウォールの例外に起動EXEを登録してもかわりません。
中継サーバーAを信頼済みサイトに登録しても同じです。
この遅延はWindowsXP SP2以上でおこるようです。
ファイアーウォールを無効をにせず、レスポンスを上げる方法はないでしょうか。
WindowsXP SP2のファイアーウォールはそんなに良いものじゃないと思う。
企業なら、外部に接続するゲートウェイの役割を果たすハードウェアでセキュリティ面で強固なファイアウォールを構築してるはずだけど。
そうでなくても、ルータを設置している場合は、Windowsのファイアウォールに依存しなくても、ルータの方が不正侵入を防ぐのに適してる。
パソコンに到達する前に、ルータで不正侵入が遮断する方がセキュリティ面ではより好ましいし。
そもそも さん
>外部に接続するゲートウェイの役割を果たすハードウェアでセキュリティ面で強固なファイアウォールを構築してるはずだけど。
>ルータで不正侵入が遮断する方がセキュリティ面ではより好ましいし
おっしゃる通りです。
いろいろ調べましたがWindowsXP SP2のファイアーウォールの良い話しは聞けませんでした。
ですが会社的に「全端末のWindowsXPのファイアーウォールを無効する」といった通達は問題があります。
ですので今回は三層構造で極端に遅くなる(画面の切替に15秒かかる)処理の時に強制的にWindowsXPでファイアーウォールを無効にした状態にしたい考えています。
netsh firewall set opmode mode = ENABLE
netsh firewall set opmode mode = DISABLE
でできそうです。(Windows Vistaではnetshが使用できないらしいですが。)
ただ処理が終わったあとに元の状態にする方法を探しています。
初期にファイアーウォールの状態を取り込む方法・・・・・
またnetshを内部的にDelphi7でできないかということ・・・
レスポンスを上げない選択肢もあると思うけど。
たとえばTProgresBar付きのダイアログに、
「サーバーと交信中です。しばらくお待ち下さい(15秒程度かかります)」
というキャプションをつけて随時更新してやれば、
体感的には「レスポンスがいいアプリケーション」ということになると思う。
ユーザーがイライラするのは、主に
・アプリケーションの動作が遅い場合
・ユーザーの意図が適切に反映されない場合
だから、これを取り除いてやることで心理的にストレスは減ると思う。
あるいは更新動作だけを受け付けて、バックグラウンドで通信するとか。
ツイート | ![]() |