2

現在、いくつかの異なるページを持つアプリケーションを設計しており、各ページには AJAX を介して更新されるコンポーネントがあります。レイアウトは、「ホーム」、「発見」、および「接続」が別々のページである新しい Twitter デザインに似ていますが、ページ内での対話 (「フォロワー」または「フォロー中」のクリックなど) は AJAX を使用します。

設計にはいくつかのコンポーネント (Twitter のコンテキストでは、ツイート、フォロワー、フォロー) を含む最初のページの読み込みが必要であり、それぞれが AJAX を介して個別に更新できるため、ページを提供するためのデフォルトのコントローラーを用意するのが最善であると考えました。 、および完全なページを提供するのではなく、データベースのクエリを厳密に処理して JSON オブジェクトを返すアクションを備えたその他のコントローラー。このようにして、最初のページの読み込み時に複数の HMVC リクエストを実行して各コンポーネントのデータを収集できます。また、AJAX 呼び出しを実行して各コンポーネントを個別に更新することもできます。

私の考えは、ページの提供を処理する Controller_Default を持つことです。Twitter のコンテキストでは、Controller_Default には以下が含まれます。

action_home()
action_connect()
action_discover()

次に、ページ全体を処理するのではなく、ページのコンポーネントを処理する他のコントローラーを用意します。たとえば、Twitter のコンテキストでは、 Controller_Tweet には次のものが含まれる場合があります。

action_get()

特定のユーザーのツイートを含む JSON オブジェクトを返します。その後、Action_home() は、ページのいくつかの異なるコンポーネントのデータを取得するために、いくつかの HMVC 要求を行うことができます (つまり、'tweet/get'、'followers/get'、'following/get' への要求を行います)。ただし、ページ上で、コンテンツを更新するために機能固有のコントローラー (つまり、「つぶやき/取得」) に対して AJAX 呼び出しを行うことができます。

私の質問: これは良いデザインですか? デフォルトのコントローラーを介してページを提供し、他の機能固有のコントローラーを介して (JSON 形式で) ページ コンポーネントを提供することは理にかなっていますか?

質問に関して混乱がある場合は、お気軽に質問してください。

4

1 に答える 1

0

HMVC パターンの強みの 1 つは、このタイプの階層型アプリケーションを採用しても、後で変更するのが難しいワークフローに縛られないことです。

上記の内容から、これはクライアントにコンテンツを提供する方法として完全に受け入れられます。デフォルトのコントローラーはサブリクエストをラップします。これにより、クライアントからの複数の AJAX 呼び出しを回避して同じ目標を達成できます。

私がするかもしれない2つの提案:

  1. Twitter のバックエンド リクエストが抽象化され、ライブラリで管理されていることを確認して、アプリケーションをよりドライで保守しやすくします。
  2. デフォルトのコントローラーが各リクエストで絶対に必要な呼び出しのみを行っているかどうかを検討してください。キャッシュを使用して、リクエストごとに頻繁に変更されないデータを取得しないようにします (たとえば、フォロワーは 30 秒ごとにしか更新されない可能性があります)。もちろん、これはアプリケーションの要件に完全に依存しますが、負荷が高くなると、すぐに Twitter API リクエストの制限に達していることがわかります。

最後に、サーバーの負荷が高く、Twitter API リクエストが返されるまでに時間がかかっていることがわかった場合は、別のサーバーをプロビジョニングして、アプリケーションのコピーをインストールすることを検討してください。次に、デフォルト ゲートウェイ アプリケーションから 2 番目のアプリケーション サーバーにサブ要求を「ポイント」することができます。これにより、2 つのサーバーが高速リンクで接続されている場合、応答時間が改善されます。

于 2011-12-15T10:43:45.063 に答える