先週の仕事で、私たちはMVCのやり方を再考することについての会議/プレゼンテーションを行いました。これは、おそらく上司による多くの調査と他のSOの質問へのいくつかの読みに基づいています。私にとっての1つのポイントは、人々が「データからロジックを分離する」と言うとき、「データソースからロジックを分離する」と言う方がおそらく正確だということでした。最初に行うと、貧血ドメインモデルの餌食になる可能性があります。私はこれで正しいですか?
次に、MVCにはビジネスロジックがどこにも含まれていないことを学びました。これは、Webアプリとは別のサービスレイヤーまたはBLLにある必要があります。これらの2つのポイントを調整するのは少し難しいようです。基本的なOOPの原則で示されているように、特定のロジックはデータオブジェクトに対応していますか、それとも別のレイヤーにありますか?
これが私が今助けを必要としている特定の例です。これはサービスレイヤーに属するとかなり確信していますが、他にも質問があります。異なるタイプの複数の異なるエンティティを入力として受け取る動作があるとしましょう。実行され、出力として、入力エンティティを変更し、レコードとして新しいエンティティを生成できます。私の場合はゲーム用ですが、トランザクションのようなものと言えます。複数の人が関わっており、一部の製品と領収書が生成されています。
- 簡単な質問ですが、このロジックをどこに配置しますか?インスタンス化されるのは別のクラスですか?
- (私にとって)難しい質問は、このコードを呼び出す責任があるのは誰ですか?コントローラーにそれをさせるのは間違っていると感じるでしょう。それともまさにその仕事ですか?特定のページで実行されないが、ユーザーが特定の時間後にサイトにアクセスするたびに実行される場合はどうなりますか?ベースコントローラー?
- 一般に、「これは私のエンティティクラスに属しているため、ゲッターとセッターの山だけではありません」と「これは私のサービスレイヤーに属します」のどちらを選択しますか?それとも私は物事を混同しています...エンティティクラスはサービスレイヤーに属していますか?