MVCパターンを使用してWebサイトを構築しています。これまでに作成したすべてのページは、参照データ(Webサイトが初めてロードされるときにキャッシュされる)を操作する必要のあるモデルを使用していました。しかし、今では、トランザクションデータ(そのフローに固有)を処理する必要があるフローのその段階に到達しています。これまでは、すべてのデータがすでにキャッシュされているため、すべてのデータを指定してモデルクラスを作成していました。しかし、トランザクションデータを処理する必要があるので、すべてのデータを事前に取得してモデルオブジェクトを作成するのと同じことを行う必要がありますか、それともモデルクラスにサービス呼び出しを行ってデータを取得させる必要があります。
4 に答える
本当にMVCを使用している場合、コントローラーは、実行する必要のある特定のアクションをインターセプトし、データ関連の要求を呼び出し、モデルをビューに配置できるようにデータをモデルオブジェクトにプッシュする必要があります。よりまとまりのある方法でジョブを実行できるコントローラーが既に存在するため、データベースからモデル自体にデータを取り込むことによるメリットはほとんどありません。
真の MVC では、モデルはコントローラーからの命令に反応して自身を更新する責任があります。そのように、はい。モデル、およびモデルのみがサービス呼び出しを行う必要があります
最初のアプローチの欠点は、事前にフェッチされたデータが使用されない可能性があることです。そこで、モデルがデータを取得する 2 番目のアプローチを採用しました。モデルとサービス呼び出しを切り離すために、インターフェースを使用しました。代替案は大歓迎です。
モデル オブジェクトは、データベースへのクエリを通じて構築されます。それが一般的なアプローチです。
モデル オブジェクトは、他のサーバーやデータベースへの Web サービス リクエストを通じて構築できます。それはほとんど同じことです。
-- 一部のパフォーマンス チューニングのために -- すべてのモデル オブジェクトを事前にビルドする場合は問題ありません。それは特別なケースです。
私は ORM レイヤーを使用してオブジェクトのキャッシュを処理することを好みます。そのため、何もプリフェッチしません。むしろ、ORM キャッシュに残ります。