[解決済み] ASP.NET MVC - ビジネスロジックはコントローラの中にあるべきか?
2023-01-05 01:36:27
疑問点
Derik Whitaker が投稿した 記事 を投稿しました。この記事は、私が以前から気になっていた点を突いています。 ビジネスロジックはコントローラの中にあるべきでしょうか?
これまで私が見てきたすべてのASP.NET MVCのデモでは、リポジトリへのアクセスやビジネスロジックはコントローラに置かれていました。 いくつかは、検証もそこに投げ込みます。 その結果、かなり大きく、肥大化したコントローラーになっています。 これは本当にMVCフレームワークを使用する方法なのでしょうか? これは、多くの重複するコードとロジックを異なるコントローラに分散させることになるように思えます。
どのように解決するのでしょうか?
ビジネスロジックは本当にモデルの中にあるべきです。 太ったモデル、痩せたコントローラを目指すべきでしょう。
例えば、持つ代わりに
public interface IOrderService{
int CalculateTotal(Order order);
}
むしろ欲しいくらいです。
public class Order{
int CalculateTotal(ITaxService service){...}
}
これは税金が外部サービスによって計算されることを想定しており、あなたのモデルが外部サービスへのインターフェースを知っていることを要求しています。
これはあなたのコントローラを次のようにします。
public class OrdersController{
public OrdersController(ITaxService taxService, IOrdersRepository ordersRepository){...}
public void Show(int id){
ViewData["OrderTotal"] = ordersRepository.LoadOrder(id).CalculateTotal(taxService);
}
}
みたいな感じで
関連
-
[解決済み] Kendo UI MVC用パスワードテキストボックス
-
[解決済み] ファイルアップロード ASP.NET MVC 3.0
-
[解決済み] ASP.NET MVC Frameworkで複数のサブミットボタンを処理する方法は?
-
[解決済み] ASP.NET MVCでenumからドロップダウンリストを作成するにはどうすればよいですか?
-
[解決済み] MVCで、文字列の結果を返すにはどうしたらいいですか?
-
[解決済み] ASP.NET MVC - カスタムIIdentityまたはIPrincipalの設定
-
[解決済み] ASP.NET MVCでビューをコンパイルする
-
[解決済み] ASP.NET MVCコントローラは、Imageを返すことができますか?
-
[解決済み】ASP.NET RazorのHTML.ActionLinkとUrl.Actionの比較
-
[解決済み】ASP.NET MVCのフォームでチェックボックスを処理するにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Entity Framework Code Firstを使用して一意制約を設定することは可能ですか?
-
[解決済み] ASP.NET MVCアプリケーションで、デバッグ用の起動ページを設定するにはどうすればよいですか?
-
[解決済み] ASP.NET MVCにおけるApiControllerとControllerの相違点
-
[解決済み] ASP.NET MVC ビューエンジンの比較
-
[解決済み】サービスは常にDTOを返すべきですか、それともドメインモデルも返すことができますか?
-
[解決済み] ASP.NET MVCでリクエストスロットルを実装するための最良の方法は?
-
[解決済み】ASP.NET MVC Html.ValidationSummary(true) でモデルエラーが表示されない。
-
[解決済み] [Solved] ASP.NET MVCコントローラメソッドからJSON.NETでシリアライズされたcamelCase JSONを返すにはどうすればよいですか?
-
[解決済み] datetime2 データ型から datetime データ型への変換で、範囲外の値が発生しました。
-
[解決済み] セキュリティ透過的なメソッド 'WebMatrix.WebData.PreApplicationStartCode.Start()' による試行。