私は長年.Netを使用してエンタープライズアプリケーションを開発してきました。私のアプリには通常、SQLDBテーブルにマッピングするエンティティを含むドメインモデルがあります。リポジトリパターン、依存性注入、サービスレイヤーを使用しています。
最近、MVC 3プロジェクトに取り組み始め、どのロジックをどこに配置するかについて議論しました。シンコントローラー/ FATモデルアーキテクチャに出くわし、サービスレイヤーがどのように適合するのか疑問に思いました
オプション1-モデルがサービスと話し合う
コントローラはシンで、モデルのメソッドを呼び出します。モデルは、DBから自分自身をロードし、リポジトリまたはサービスと通信する方法を「知っています」。たとえば、customerModelにはLoad(id)メソッドがあり、顧客とGetContracts()などの子オブジェクトをロードします。
オプション2-コントローラーがサービスと通信する
コントローラは、サービスにモデルオブジェクトを取得するように要求します。ロード/保存などのロジックはサービスレイヤーにあります。モデルは、データのみを含む純粋なエンティティモデルです。
特にエンタープライズアプリケーションについて話すとき、オプション1がより良い選択である理由は、私の経験から、関心の分離、モデルとコントローラーの可能な限り薄くし、ビジネスロジックを実行する特殊なサービス(DBインタラクションを含む)を使用するように指示されています。
良いリソースへのすべてのアドバイスと参照に感謝します。