今日、Servlet 3.0 の非同期機能を発見しました。私はそれについて読んで、その概念を理解したと思います。
私は疑問に思っていました:それは「標準」コントローラーのアクションに違いをもたらすでしょうか、それともWebサービスまたは大規模な計算プロセスの使用のために保存する必要がありますか?
言い換えれば、アクションメソッドの計算時間を事前に考慮せずに、すべてのコントローラーのアクションで使用するのは悪い考えですか? もしそうなら、その理由を説明していただけますか?
前もって感謝します。
今日、Servlet 3.0 の非同期機能を発見しました。私はそれについて読んで、その概念を理解したと思います。
私は疑問に思っていました:それは「標準」コントローラーのアクションに違いをもたらすでしょうか、それともWebサービスまたは大規模な計算プロセスの使用のために保存する必要がありますか?
言い換えれば、アクションメソッドの計算時間を事前に考慮せずに、すべてのコントローラーのアクションで使用するのは悪い考えですか? もしそうなら、その理由を説明していただけますか?
前もって感謝します。
いいえ、これは悪い考えです。
コントローラー アクションでリクエストを受け取り、できるだけ早くレスポンスを返したいとします。非同期は、遅延できるものにのみ使用できます。
ユーザーがあなたのウェブサイトのページをリクエストしている場合、空のページで応答することはできません。その後、プッシュバックを行ってページを更新してください。この機能は AJAX リクエストに対してのみ使用し、すべてのリクエストに対しては使用しません。非同期で実行する意味があるものとそうでないものを決定する必要があります。
非同期リクエスト処理については、Grails のドキュメントを読む必要があります。
一般に、迅速に実行されるコントローラー アクションの場合、要求を非同期に処理するメリットはほとんどありません。ただし、コントローラーのアクションを長時間実行する場合は、非常に有益です。
その理由は、非同期/非ブロッキング応答では、1 つのスレッド == 1 つの要求 == 1 つの応答の関係が壊れているためです。コンテナーは、クライアントの応答を開いてアクティブに保ち、同時にスレッドをコンテナーに戻して別の要求を処理できるため、スケーラビリティが向上します。
うまくいけば、これで十分に明確になるはずですが、不明な点がある場合は質問してください。