ASP.NET(.NET Core/5+) ホスティング方式:6分類
ASP.NET(.NET Core/5+)アプリのホスティング方法に関して
整理された情報が見つけられなかったので、
6種類に分類してまとめてみました。
① IIS(インプロセス)
- ANCM (AspNetCoreModule) を使用し、IIS (w3wp.exe) のプロセス内で ASP.NET Core が動作
- 最も高速で、開発も簡単
- Windows 環境でのみ有効
② IIS(アウトオブプロセス)
- ANCM が Kestrel を別プロセスで起動し、IIS がリバースプロキシ
- プロセス分離による柔軟性がある
- Windows 環境のみ
③ IIS + Application Request Routing(ARR)
- IIS + ARR 構成で、バックエンドの Kestrel へリバースプロキシ
- 複数ノード構成やスケーラビリティを持たせたい場合に有効
④ nginx/Apache + Kestrel
- Linux環境での一般的な構成
- nginx(またはApache)が Kestrel にリバースプロキシ
- Docker やクラウド構成でもよく使われる
⑤ Kestrel 単体(自己ホスト)
- 自前でポートをバインドしてHTTPサーバとして動作
- 軽量・シンプル
- 本番利用にはプロキシの併用が推奨される
⑥ クラウドホスティング(PaaS/サーバーレス/コンテナ)
- Azure App Service、AWS Elastic Beanstalk 等のPaaS
- Azure Functions などのサーバーレス
- Kubernetes (AKS, EKS 等) 上のコンテナで稼働する Kestrel
- プラットフォームがスケーリングや運用を自動で管理
- 運用負荷を低減し、迅速に展開可能
🔎 おすすめシナリオ別選定
シナリオ | 推奨構成 |
---|---|
高速・簡単な開発 | ① IIS(インプロセス) |
プロセス分離や安定性が必要 | ② IIS(アウトオブプロセス) |
複数ノード・負荷分散構成 | ③ IIS + ARR / ④ nginx |
LinuxやDocker運用 | ④ nginx + Kestrel |
最小構成やローカル動作確認 | ⑤ Kestrel 単体 |
運用負荷低減・迅速なスケール | ⑥ クラウドホスティング |