トップ回答者
サーバサイド処理を即時開始したいけれど・・・。無理?

質問
-
サーバサイド処理を即時開始したいけれど・・・。無理?
弱輩者@並平と申します。
ASP.NET(C#) 2005/2008で開発前の事前調査中です。ASP.NET(C#)のサーバサイド処理にて、
外部機器とTCP/IPソケット通信を
行いたいと思っております。上記のソケットは、初回HTTPリクエストが
発生する以前から接続しておく必要がある仕様です。
つまりは、PC起動&IIS起動で即時ソケット通信を
開始する必要があります。
@上記は可能でしょうか?
調べましたところ、
Application_Start()は、初回HTTPリクエストで
呼ばれるとのことで、挫折気味です。
ご教授頂けますと大変助かります。
回答
-
ちなみに初回アクセスのApplication_Start()で
スレッドを起動した場合、そのスレッドはその後、
初回アクセス時のセッションがなくなった後も
サーバサイドで常駐させることは可能と思っていますが、
問題ございますでしょうか。
もしかしたら問題があるかもしれません。
IIS のバージョンと設定が不明なのと、「スレッド」が Web アプリケーション内なのか外部プロセスなのかが不明なので、明確には言えないのですが、
例えば IIS 6.0 ですとワーカー プロセスはリサイクル設定に応じて自動で再起動されます。(リサイクル設定は無効にすべきでないと思います。)
「スレッド」が Web アプリケーション内のスレッドを指す場合、リサイクル時に終了してしまうはずです。(試したわけではないですが。)- 回答としてマーク 並平 2009年5月27日 4:10
すべての返信
-
ちなみに初回アクセスのApplication_Start()で
スレッドを起動した場合、そのスレッドはその後、
初回アクセス時のセッションがなくなった後も
サーバサイドで常駐させることは可能と思っていますが、
問題ございますでしょうか。
もしかしたら問題があるかもしれません。
IIS のバージョンと設定が不明なのと、「スレッド」が Web アプリケーション内なのか外部プロセスなのかが不明なので、明確には言えないのですが、
例えば IIS 6.0 ですとワーカー プロセスはリサイクル設定に応じて自動で再起動されます。(リサイクル設定は無効にすべきでないと思います。)
「スレッド」が Web アプリケーション内のスレッドを指す場合、リサイクル時に終了してしまうはずです。(試したわけではないですが。)- 回答としてマーク 並平 2009年5月27日 4:10
-
totojoさま
ご教示ありがとうございました。
IISは開発環境から実運用環境まで含めて
Ver5.1(WinXP)、Ver6.0(Win2003Svr)、Ver7.0(Win2008Svr)
で考えております。設定は未検討です。
スレッドはWebアプリケーション内部で起動を考えておりましたが、
皆様からご教示頂いた内容を含めて、以下の設計にしようと
思っております。
Client(ブラウザ)
↓[HTTP]
↓
Webアプリ(ASP.NET/C#)
↓[TCP/IP]
↓セッション毎に通信スレッドを生成してJavaアプリと通信
↓
Javaアプリ
↓[TCP/IP]
↓
外部機器
※JavaアプリをC#アプリにして、Webアプリ(ASP.NET/C#)と
.NET Rotingでプロセス間通信も良いですかね・・・。