IHttpAsyncHandler
コメット/ロングポーリングリクエストを処理するために を使用しています。MyAsyncResult
ハンドラーは接続を開いたままにして、オブジェクトを static に保存しますConcurrentSet<MyAsyncResult>
。
別の要求 (comet を応答させる要求) が行われると、プログラムはMyAsyncResult
リスト内のオブジェクトを見つけて要求を完了します。
私の問題は、アプリケーションを Webgarden で実行するように変更すると、この静的変数がすべてのワーカー プロセスで共有されないため、この実装が機能しないことです..
現在、MyAsyncResult
オブジェクトを SQL データベースに格納する方法や、有用なあらゆる種類のオブジェクト (IHttpHandler
それ自体や、EndProcessRequest メソッドを指すデリゲートなど) を格納する方法がありません。特定の ID と文字列を SQL データベースに保存し、新しい値を継続的にチェックすることもできますが、これはコストがかかるようであり、そもそもロング ポーリングを使用するという目的に反するものです。
ウェブガーデン全体で静的データを共有する方法はありますConcurrentSet
か? IHttpAsyncHandler
または、信号が応答を送信するのを待っているそこに座っているものを取得できる他の方法はありますか?
編集:
プロセス間で変数を共有する方法がない場合、他のすべてのワーカー プロセスにブロードキャストする方法はありますか? ここで必要なのは、2 つの整数パラメーターを持つ単一の信号だけです。