問題タブ [ihttpasynchandler]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - Comet - IHttpAsyncHandler を使用した HTTP ストリーミング - チャンクが機能しない
IHttpAsyncHandler とフラッシュを使用して HTTP ストリーミングを実装しようとしています。
基本的に、私は時々応答をフラッシュしています - タイムアウトまで開かれた接続を保存します - その後、クライアントは別の接続を開始する必要があります。
フラッシュは実際に機能し、クライアントはフラッシュが発生すると受信しますが、応答は集約されています。たとえば、次のフラッシュを送信するとします。
クライアントは次のフラッシュを取得します (XMLHttpRequest.responseText 内)。
ご覧のとおり、クライアントは最終的に非常に大きなメッセージ (以前のフラッシュがすべて含まれます) を処理する必要があります。フラッシュを操作する方法はありますが、フラッシュごとに応答をきれいにする方法はありますか?
応答ヘッダーに「Transfer-Encoding:chunked」というヘッダーが含まれていることに注意してください。これは、実際にはコンテンツをチャンクで取得する必要がありますが、代わりに集約されたメッセージを取得することを意味します。
c# - IHttpAsyncHandler のスレッド
この記事を読んで、IHttpAsyncHandler についてある程度知っています。
下の図によると、AsyncHandler を呼び出すと 2 つのスレッドが作成されます。
要求が来ると、IIS はスレッド 1 を取得してこの要求を処理し、beginXXX メソッドを呼び出すとスレッド 2 が作成され、この実際のロジックを処理します。
私の質問は次のとおりです。
スレッド 2 が実行されているとき、接続はまだ維持され、応答を待っています。
スレッド 2 が実行されている場合、スレッド 1 のステータスはどうなりますか? 寝てる?それともリリースされますか?
スレッド 1 がスリープ状態の場合、スレッド 2 が終了すると、スレッド 1 が起動され、応答が送信されますか??
スレッド 1 が解放された場合、スレッド 2 が終了すると、スレッド 1 として新しいスレッドが作成されますか? そして、この新しいスレッド 1 がクライアントに応答を送信します。
スレッド 1 とスレッド 2 は同じスレッド プールにありますよね?? もしそうなら、利用可能なスレッド数はバランスが取れています。このようにする目的は何ですか?
c# - IHttpAsyncHandler フラッシュ - ワーカー スレッドと io スレッド
IHttpAsyncHandler
メソッドと withBeginProcessRequest
を使用していEndProcessRequest
ます。EndProcessRequest
メソッドの下に次のコードがあるとします。
メソッド自体はWrite
内部バッファーにのみ書き込みますが、EndProcessRequest
終了すると、バッファーはストリームにフラッシュされ、接続が閉じられます。
私の質問は、どのスレッドがフラッシュを行っているのですか? EndProcessRequest
コードまたは IO スレッドを実行したワーカー スレッド?
c# - イメージ サーバーの IHttpHandler または IHttpAsyncHandler
私の仕事は、イメージ サーバーを開発することです。
- ディスクから画像を読み込む
- HTTP パラメータに従って、サイズを変更します
- 元の画像に 1 つまたは複数の透かしを適用する
問題は、どのテクノロジーを使用すればよいかということです。私は を使用しますが、このシナリオでは使用した方が高速になるのでしょうかIHttpHandler
?IHttpAsyncHandler
で画像を非同期に処理するメリットはありIHttpHandler
ますか?
また、NancyFx などの高レベルのフレームワークを検討するか、単にコントローラー (MVC2) から画像を返す必要がありますか?
c# - IHttpAsyncHandler.EndProcessRequest の IAsyncResult が null になることはありますか?
次のコードを検討してください。
ReSharper は、(条件が常に false であることを示すことによって)result
あり得ないことを示唆しています。null
ただし、IAsyncResult
は参照型でnull
あるため、可能な値です。私は2つの可能性を思いつきました:
- ReSharper
result
が決してnull
. ReSharper を使用してIHttpAsyncHandler
ソース コードを見ると、 に関連付けられている属性が表示されませんEndProcessRequest
。 - ReSharper は、
IHttpAsyncHandler
保証IAsyncResult
が決してならないことを認識していますnull
。ただし、ドキュメントはどちらの方法でも手がかりを提供しません。
IAsyncResult
非同期タスクの進行状況を追跡できるため、null にならないのは妥当と思われます。誰かが洞察を提供してもらえますか?
c# - 新しいジョブでの HttpContext セッション null (Quartz.Net)
ジョブの数を制限する Web データ処理用のスケジューラーをまとめたいので、Quartz.Net フレームワークを使用し、それを IHttpAsyncHandler の上に配置しました。
引数を介して HttpContext をジョブに渡しましたが、これは正常に機能しますが、context.Session を取得したい場合は null です。これは、処理ジョブを独自のキューに追加し、HttpAsyncHandler プロセスが終了したため意味があります。私は試していませんが、結果を返すことも同じ理由で失敗すると思います:
私が持っている 1 つのアイデアは、ロックを宣言して、このループを ProcessRequest に追加できるということです。
しかし、これが最良のアイデアであるかどうかはわかりません。
結果を返すことができるように、ハンドラーの HttpContext を維持するにはどうすればよいですか? または、Quartz ジョブからの結果を ProcessRequest に戻し (Javascript の promise のように、つまり $.when.then)、context.Response を介して送り返すこともできますか?
それとも、Quartz を完全に破棄して、最初に HttpAsyncHandler にジョブのスケジューリングを任せたほうがよいのでしょうか?
https://stackoverflow.com/questions/33642861/processing-job-scheduling-with-httpasynchandler