私は MVC フレームワークをしばらく使用していますが、懸念事項がどのように分離されているかが本当に気に入っています。私は、コントローラーにかなりの作業を任せるという悪い習慣に陥っています。だから私は本当にいくつかのアドバイスを探しています。
私が MVC を使い始めた当初は、データベースの作業が完了した後で、コントローラーがモデルを操作することがよくありました。私はこれが悪いことを知っていたので、モデルに働きかけました。ただし、モデルを非常に学習させたいので、これには満足していません。
私は少し読んだことがありますが、私が気に入っているサービスレイヤーを使用することで、人々がコントローラーとモデルをスリムに保っていることがわかります。
サービスレイヤーとリポジトリがどのように連携するかを理解しようとしています。これが私の仮定です。これが良い方法であるかどうか教えてください。
- データに対して操作を行う必要がなく、そのようなサービス層が関与する必要がない場合、コントローラはリポジトリを直接呼び出すことができます。
- データ (ビジネス ロジック) に対して何らかの作業を行う必要がある場合、これはサービス レイヤーで実行する必要があり、コントローラーは必要に応じてサービス レイヤーへの単純な呼び出しを行います。
- サービスがビジネス ロジックを完了すると、必要に応じてリポジトリが使用されます (データを永続化する必要がある場合)。
- モデルは理想的には無駄のない状態に保ち、理想的には DTO に過ぎないものとして機能する必要があります
- データの検証はモデル内で行われます (MonoRail 検証属性を使用)。多くの属性でモデルを汚染するのが好きな人はいないと思いますが、それは別の議論です. UI での自動 jQuery 検証に対する MonoRail の検証属性の利点が気に入っています。
私はすべてのコードを単一責任の原則に変えようとしているため、コーディングの慣行を整理しようとしています。
ありがとう