2

Kohana の HMVC モデルについて質問があります。スケーリングと簡単な API 作成のために、同じ原則 (MVC) 内のコンポーネントとしてものを分離するというアイデアが本当に気に入っています。

知識の喪失など、私が経験しているいくつかの欠点がありますが。

たとえば、ニュースカテゴリというコンポーネントを持つことができます。その上に、完全なリクエストを委任し、これらのコンポーネントを介してサイト テンプレートのすべての html/データを収集するサイト コントローラーがあります。

          Site controller
           /             \
          /               \
   categories              news

サイドバーにすべてのカテゴリが必要な場合は、/categories/list を呼び出すことができます。ニュース アイテムが必要な場合は、/news/ID を呼び出すことができます。どちらもhtmlを返します。

ニュース記事を表示することを主なタスクとする newsreadon サイト コントローラーがある場合、このコントローラーはサイドバーのすべてのカテゴリを取得します。次に、ニュース項目を取得します。

                Newsreadon
               /          \
              /            \
 categories/list (html)    news/<id>   (html)

サイト テンプレート内のすべての要素を表示するときに、html タイトル タグのニュースの「タイトル」を知りたいのですが、html を返すのでわかりません。

複数の解決策があるように感じます:

  1. タイトルをいくつかのレジストリに保存します (ただし、コンポーネントを他のサーバーにスケーリングして HTTP を使用すると、これは失われます)。したがって、スケーリングを考慮すると、適切な選択はありません。
  2. 'title' フィールドと 'html' フィールドを含む json を返します。
  3. タイトルの h2 のような html の一部を読み上げます

解決策 2 は、最も厄介ではないように思われ、ステートレス通信をそのまま維持します。

これをどのようにエレガントな方法で解決するのか、本当に疑問に思っていますか? 「その」ソリューションがありませんか?

編集: kohana による HMVC を理解するための興味深い読み物: http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/

4

2 に答える 2

0

ニュース記事を表示することを主なタスクとする newsreadon サイトコントローラーがある場合...

このコントローラの目的がニュース記事を表示することである場合、追加のコントローラの必要性がわかりません。アプリケーションの設計を変更することを検討してください。おそらく、Newsreadon はコントローラーを拡張してニュース記事を表示します。

于 2012-02-20T16:01:46.967 に答える
-1

を使用してニュースを表示するのでnews/<id>、おそらく親コントローラーはニュースの ID を知っています。そこから、モデルからニュース タイトルを取得するだけです。それが正しいやり方でしょう。サブリクエストから一部のデータを抽出しようとすると、アプリケーションがより緊密に結合され、長期的に維持することがより困難になります。

于 2012-02-20T14:56:38.733 に答える