0

これから行う質問は、Flex プラットフォーム (および MVC を実装するふりをしているいくつかのフレームワーク) に関する私の最新の作業に触発されたものですが、さまざまな専門知識を持つ人々を巻き込むのに十分一般的なものだと思います。

かなり長い間、私は Cairngorm のようなフレームワークによって提案されたパラダイムに従ってきました -

ビュー、シングルトン モデルのプロパティへのバインド、およびイベントのディスパッチ。イベントはフロント コントローラーによってキャッチされ、結果としてコマンドが実行されます。コマンドは、サービスを呼び出し、データを取得し、モデルを提供します。モデルはバインディングを通じてビューを暗黙的に更新します。

次のデータ構造にたどり着くまでは、すべてうまくいきました。

ユーザーには多くのフォロワー (ユーザー) がいます 多くのユーザーがフォローしています 多くのユーザーがたくさんの写真を持っています 多くの場所をフォローしています

写真には多くのいいね(ユーザー)がいる 場所がある クリエイターがいる 関連写真が多い

場所には多くの写真があり、多くのフォロワーがいます

繰り返しになりますが、Cairngorm によって提案されたアイデアを使用しても問題ありません。たとえば、currentUser、currentLocation、および currentPhoto を持ち、それらにバインドするだけです。

問題はビュー自体にあります。想像できるように、一連の複雑な「ページ」ビューがあり、ドリルされた情報として提供されます。たとえば、場所のページには、最新/人気の写真のグリッド、フォロワー用のパネル、それらの写真が撮影された座標に基づく地図が表示されます。問題は次のとおりです。

明らかに、パフォーマンス上の理由から、特定の場所をフォローしているすべてのユーザー、または場所にある可能性のあるすべての写真を取得することはできません。一部はプリフェッチしており、その他はオンデマンドでサーバーから提供されます。

たとえば、フォロワーのアバターページをクリックすると、そのユーザーの写真の小さなグリッド、または sth を取得する必要があります。しかし、モデルには currentUser が 1 つしかありません。

これは、なぜ中央のシングルトン モデルにバインドする必要があるのでしょうか?という疑問につながります。すべてのビューを一種のレスポンダーに変えることはできませんか。つまり、ビューは再び偶数をディスパッチしますが、今回はモデルを提供する代わりにコマンドが呼び出し元のビューを直接提供します。

すべてのビューが IResponder を実装するため、結合はありません。このコマンドは、呼び出されたイベントから取得する IResponder のみを必要とします。

私が考える「モデル」は別の役割を果たします。これはキャッシュのようなもので、ローカル ストレージ用のグローバル ディクショナリのようなもので、サーバーから要求を行う前にコマンドによってチェックされます。このようにして、サーバーへの呼び出しをいくつか節約できますが、データが非常に散発的である場合、この同じデータが他のデータと一緒に何度もフェッチされます。(キャッシュにいくつかのユーザーデータがあるかもしれませんが、一般的に、一貫性のために、フォロワーデータの一部が既にあるかどうかに関係なく、サーバーを呼び出してフォロワーデータのコレクションを取得します)

これらのアイデアに関するフィードバックをお待ちしております

4

2 に答える 2

1

質問は実際には質問ではないので、これは実際には答えではありません。ただし、「MVC」を確認する場合は、Flexのすべてのアプリケーションフレームワークでおそらく最悪のMVCパターンを実装しているため、Cairngormから遠く離れている必要があります。これの最良の例(またはあなたの見方によっては最悪)の1つは、Theoがすでにブログに書いているシングルトンモデルの使用です。

適切なMVCアーキテクチャについては、RobotLegsまたはParsleyを確認する必要があります。私の個人的なアーキテクチャの意見では、「モデル」は「データ」を表す別の言い方です。これは、アプリケーションのデータまたは状態を保持する単なるクラスです。

于 2011-06-16T21:17:05.237 に答える
1

あなたの実際の質問はこれだと思います:

これは、なぜ中央のシングルトン モデルにバインドする必要があるのでしょうか?という疑問につながります。

中央のシングルトン モデルにバインドする必要はありません。実際、多くの人が、このアプローチは恐ろしく、パフォーマンスの問題を引き起こすと主張しています。バインドはコストのかかる操作になる可能性があるため、バインド可能なすべての値を 1 か所に配置すると、アプリに波及効果が生じる可能性があります。

Cairngorm があなたをこの方向に向かわせているように見えるという事実は、Cairngorm に対する一般的な批判です。Cairngorm の弁護では、必要に応じて、Cairngorm アーキテクチャ内で複数の「グローバル データ シングルトン」を使用できない理由がわかりません。そもそもシングルトンに対する議論を逆流させることは控えます。

ポスト ケアンゴーム フレームワークのほとんどは、ケアンゴームへの対応であり、別の方法を試みる試みと見なすことができます。

于 2011-06-16T21:14:48.897 に答える