1. ホーム
  2. asp.net-mvc

MVCでは巨大なコントローラと多くのコントローラ、どちらが良いのか?

2023-10-31 21:43:18

質問

ASP.NET MVCでかなり大規模な人事アプリケーションを構築しており、これまでのところ、コントローラはかなり大きくなっています。 例えば、Employeeコントローラがあり、すべての従業員ビューが含まれています(個人情報、従業員控除、扶養家族、など)。 これらのビューはそれぞれ、複数のアクションやサブビュー(CRUDなど)を持っているかもしれません。 それぞれのアクションは比較的小さいものですが、コントローラには何十もの関数があるかもしれません。

コントローラを分割するためのベストプラクティスはありますか? Employeeコントローラに数十のビューを持たせるのではなく、各サブタイプに1つのコントローラ(例:EmployeePersonalInfoController, EmployeeDeductionController, EmployeeDependentController)を持つ方が良いでしょうか?

最後に、それは重要なことでしょうか?

更新された明確な説明

私の当初の懸念は、CRUD アクションに関するものでした。 たとえば、Create と Delete を考えてみましょう ...

EmployeeControllerの現在のアクション :

  CreateEmployee()
  DeleteEmployee()
  CreateEmployeeDeduction()
  DeleteEmployeeDeduction()
  CreateDependent()
  DeleteDependent()
  etc.

コントローラが分割されていた場合。

  EmployeeController
    Create()
    Delete()
  EmployeeDeductionController
    Create()
    Delete()
  EmployeeDependentController
    Create()
    Delete()
  EmployeeBenefitController
    Create()
    Delete()
  etc.

最初のシナリオでは、~100 のスクリーンが 8-10 の大きなコントローラに分割されます。 2 番目のシナリオでは、おそらく ~50 台のコントローラーを持つことになると思います。

どのように解決するのですか?

私の率直な意見としては、もしあなたがコントローラ内のコードを抑えているのであれば、それは本当に重要なことではありません。

あなたのコードのほとんどは、どこかのビジネス層で起こっているのでしょう? もしそうなら、あなたがコントローラで本当にやっていることは、データをビューに返すことだけです。 そうであるべきです。

コントローラをサブタイプに分割するのはあまり好きではありません。 懸念事項の分離を維持する必要がある一方で、サブタイプは少し行き過ぎだと思います。

この投稿が役に立つかどうか見てみてください。 同じビュー、異なるパス

それは、あなたが提案したサブタイプのアプローチを使用するよりも良い解決策かもしれません。