2012-04-18 15 views
2

本日、サーブレット3.0の非同期機能が見つかりました。私はそれについて読んで、私がそのコンセプトを理解していると思っています。Grails - Servlet 3.0非同期リクエスト処理

「標準」コントローラのアクションに何か違いがあるのだろうか?それとも、Webサービスや広範な計算プロセスの使用のために保存すべきか?

つまり、事前にactionsメソッドの計算時間を考慮せずに、すべてのコントローラのアクションで使用するのは悪い考えですか? もしそうなら、あなたはなぜ私に説明できましたか?

ありがとうございます。

答えて

2

いいえ、これは悪い考えです。

コントローラの操作では、リクエストを受け取り、できるだけ早く応答を提供したいと考えています。非同期は、遅れる可能性のあるものに対してのみ使用できます。

ユーザーがあなたのウェブサイトでページをリクエストしている場合、空のページで返信することはできません。その後、プッシュバックを行ってページを更新します。私はこの機能をAJAXリクエストにのみ使用し、すべてのリクエストでは使用しません。実行するのが非同期に実行される意味と実行されないことを決定する必要があります。

+0

一般的なJava Webコンテナのほとんどは、一度に複数の要求を処理できますか?つまり、要求がブロックされた場合、元の要求が完了するまで、将来のすべての要求がキューに入れられますか?私にとっては、これがayncを使用する主な理由になります。サーバーを解放する。 – duma

1

あなたは非同期リクエストを処理する際のほとんど利点があるすぐに実行するコントローラアクションのために一般的にAsynchronous Request Handling

ためGrailsのドキュメントをお読みください。しかし、長時間実行しているコントローラーのアクションでは、非常に有益です。

非同期/非ブロッキング応答では、1つのスレッド== 1つの要求== 1つの応答関係が壊れているためです。コンテナは、クライアントの応答を開いてアクティブに保つことができ、同時にスレッドをコンテナに戻して別の要求を処理し、スケーラビリティを向上させます。

うまくいけば十分ですが、何かが明確でないかどうか尋ねてください。

関連する問題