MVCでは巨大なコントローラと多くのコントローラ、どちらが良いのか?
質問
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 台のコントローラーを持つことになると思います。
どのように解決するのですか?
私の率直な意見としては、もしあなたがコントローラ内のコードを抑えているのであれば、それは本当に重要なことではありません。
あなたのコードのほとんどは、どこかのビジネス層で起こっているのでしょう? もしそうなら、あなたがコントローラで本当にやっていることは、データをビューに返すことだけです。 そうであるべきです。
コントローラをサブタイプに分割するのはあまり好きではありません。 懸念事項の分離を維持する必要がある一方で、サブタイプは少し行き過ぎだと思います。
この投稿が役に立つかどうか見てみてください。 同じビュー、異なるパス
それは、あなたが提案したサブタイプのアプローチを使用するよりも良い解決策かもしれません。
関連
-
[解決済み] GET リクエストを許可するには、JsonRequestBehavior を AllowGet に設定します。
-
[解決済み] Razor View throwing "The name 'model' does not exist in the current context".
-
[解決済み] Automapper のタイプマップ構成がない、またはサポートされていないマッピング - エラー
-
[解決済み] MVPとMVC、その違いは何ですか?
-
[解決済み] ファイルアップロード ASP.NET MVC 3.0
-
[解決済み] ASP.NET MVCでリクエストスロットルを実装するための最良の方法は?
-
[解決済み】ASP.NET MVC 3 - 部分テンプレートと表示テンプレートと編集テンプレート
-
[解決済み] datetime2 データ型から datetime データ型への変換で、範囲外の値が発生しました。
-
[解決済み] ASP.NET MVC: UrlHelperを使用するコントローラのユニットテスト
-
[解決済み] アクションリンクでエリア名を指定するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】同じキーのアイテムがすでに追加されています。
-
[解決済み] データベースに 'AspNetRoles' という名前のオブジェクトがすでに存在します。
-
[解決済み] JsonResultが特殊文字(apostrophe)を \u0027 としてパースしています。
-
[解決済み] ファイルまたはアセンブリ 'System.Web.Mvc' を読み込めませんでした。
-
[解決済み] ASP.NET MVCアプリケーションで、デバッグ用の起動ページを設定するにはどうすればよいですか?
-
[解決済み] 既存のデータベースの選択されたテーブルからDbContextをScaffoldすることができますか[重複]。
-
[解決済み] RedirectToActionでURLが変更されない、またはIndexビューに移動しない
-
[解決済み] ASP.NET MVCにおけるApiControllerとControllerの相違点
-
[解決済み] ASP.NET MVC: UrlHelperを使用するコントローラのユニットテスト
-
[解決済み] ソートロジックは、モデル、ビュー、コントローラのいずれに配置するのがよいのでしょうか?[クローズド]