[ASP.NET Core MVC] サービスコレクション(DIコンテナ)の構成方法 AddMvc/AddMvcCore/AddController/AddControllersWithView の違い
これはなに?
ASP.Net Coreのサービスコレクション(DIコンテナ)にMVC機能を載せる拡張メソッドはいくつかあります。
AddMvcCore
AddControllers
AddControllersWithView
AddMvc
どう違うのかドキュメントがないので、ソースコードから探ってみます。
__2019年4月__時点の情報です。
TL;DR
拡張メソッド | 解説 |
---|---|
AddMvcCore |
必要最小限のものを追加 |
AddControllers |
AddMvcCore + いろいろ(後述) |
AddControllersWithView |
AddControllers + AddViews + AddRazorViewEngine |
AddMvc |
全部入り AddControllersWithView + AddRazorPages |
ソースコードのありか
ソースコード自体はこちらにあります。
AddControllers
がやっていること
AddMvcCore
に加えて、以下のことをやっています。
AddApiExplorer();
AddAuthorization();
AddCors();
AddDataAnnotations();
AddFormatterMappings();
なんとなく文字面から想像できるでしょうか。
AddAuthorization
認証/認可周りの処理をやってくれそうです。
AddCors
クロスオリジンな処理をやってくれそうです。
AddDataAnnotations
モデルの検証(バリデーション)周りをやってくれそうです。
AddFormatterMapping
URL文字列と、メディアタイプの関連付けをやってくれるようです。
AddApiExplorer
、、は謎ですね。
まとめ
なんとなく雑にわかったのでまとめてみます。
- Razorビューを使うひと → 全部入り
AddMvc
を使う - ビューが不要なひと →
AddControllers
かAddMvcCore
を使う - WebAPIのみなひと →
AddControllers
かAddMvcCore
を使う