2

外部RESTサービス(Vimeo REST API)を呼び出しています。サービスの応答はJSONオブジェクトです。私のアプリケーションの1つのビューで、サービスに対して複数の呼び出しが行われる可能性があります(複数のビデオをロードするため)。

この状況で次のアーキテクチャを使用することの長所と短所を評価したかった

  1. jquery ajax呼び出しを使用して、個々のビデオをロードします(各ビデオには、詳細を取得するために必要な唯一のものであるIDがあるため、ブラウザーからRESTサービスに対して呼び出されます)
  2. 非同期コントローラーアクションを使用してコントローラーでREST呼び出しを行い、次にvediosを表示します

注:認証を必要としない単純なAPIサービスを使用しています。

4

3 に答える 3

3

AsyncControllerHTTPリクエストを非同期で処理するためではなく、長時間実行されるサーバー側プロセスを実行するために設計されました。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.

これがおそらくあなたの最善の策だと思います。

于 2011-02-09T21:55:58.623 に答える
0

クロスドメインajax呼び出し(開いたページはyoursite.comドメインからのものであり、vimeo.comへの呼び出し)はブラウザーによって禁止されているため、最初の方法で問題が発生する可能性があります。

2番目の方法に加えて、Vimeo APIが提供するJSONPを使用できます:http://vimeo.com/api/docs/response-formats

于 2011-01-19T06:17:15.720 に答える
0

単一のアクションメソッドに対してVimeoのRESTサービスを複数回呼び出す場合は、非同期コントローラーを使用するのに適しているように思われます。これには2つの利点があります。Vimeoのサービスへの複数の呼び出しを並行して実行できることと、サーバーがVimeoからの応答を待っている間に、要求を処理しているスレッドを解放し、他の要求を処理できるようにすることです。

ここでのトレードオフは、クライアントコードまたはコントローラーコードを複雑にすることだと思います。サーバー側でリクエストを行うことのもう1つの利点は(非同期で行うかどうかに関係なく)、データをキャッシュできる可能性があり、将来リクエストを処理するために行う必要のある高価なWebサービス呼び出しの数を最小限に抑えることができることです。それは本当にデータをキャッシュすることがあなたの状況で実行可能なオプションであるかどうかに依存します。

于 2011-02-03T18:34:14.717 に答える