AsyncController
は、HTTP要求を非同期で処理する目的ではなく、長時間実行されるサーバー側プロセスを実行する目的で設計されています。 RESTサービスへの単一リクエストの作成は、長時間実行されているサーバー側プロセスである場合とそうでない場合があります。
したがって、サーバー側またはクライアント(ブラウザ)から直接RESTリクエストを行うかどうかにかかわらず、必ずしもAsyncController
を使用する必要はありません。通常のController
がその仕事をする可能性があります。
ビデオリクエストの処理方法は、ビジネスレイヤの構造によって異なります。ビジネス層での処理のためにVimeoのビデオに関する知識がある場合は、Webサービスコールをサービス側にすることをお勧めします。それ以外の場合は、クライアント上にビジネスロジックがあるため、保守が困難になる可能性があります。
一方、あなたのVimeoビデオは自己完結型のUIウィジェットの一部でしかない場合、予期せぬ結果を招くことなくクライアント上で完全に要求を処理することは安全です。
私は、VimeoへのWebサービスコールがFlashファイルなどを受け取っていると仮定しています。サーバーからVimeoサービスコールを発信するには、より多くの帯域幅とより多くのメモリが必要になります。データがサーバーに送られなければならないためです。あなたはそれをサーバ側をすれば
、これは起こる:
1 - Browser sends HTTP-Request to YourApplication
2 - YourApplication sends HTTP-Request to Vimeo's WebService
3 - Vimeo's WebService sends big HTTP Response with the Video data to YourApplication
4 - YourApplication sends big HTTP Response with the Video data to Browser
* If you choose to do it this way, this might be the point at which it makes sense to use an AsyncController
あなたはそれをクライアント側を実行すると、この問題が発生した:これは、すべてのクライアント側はそれをやってのように見える
1 - Browser sends HTTP-Request to Vimeo's WebService
2 - Vimeo's WebService sends big HTTP Response with the Video data to the Browser
は、より良い。しかし、ビジネスロジック全体の問題があります。これは、Ajaxリクエストを同期コントローラ・アクションに送信してビジネス・ロジック処理を行い、RESTサービスへのコールのURLをブラウザに戻すことで解決できます。したがって:
1 - Browser sends AJAX request to YourApplication
2 - YourApplication handles business logic and sends the URL of the REST request to Browser
3 - Browser sends AJAX request to Vimeo's WebService
4 - Vimeo's WebService sends big HTTP response with the video data to the browser.
これはおそらくあなたの最善の策だと思います。