web-dev-qa-db-ja.com

WebListenerとKestrel:なぜどちらか一方を選ぶのか?長所短所?

2つの別個の類似したサーバーの理由は何ですか?違いは何ですか?両方をドッカーで実行できますか?すべての認証タイプのように、両方が同じものをサポートしていますか?

25
doker

Kestrel vs Weblistener-以下の基本的な違いを強調しました。

(単語はMicrosoftのものであり、簡潔さと明確さのために編集しただけです。下部にリンクされているソースを参照してください)。


WebListeneriswindows-onlyサーバーにインターネットを直接公開できるようにするASP.NET CoreのHTTP/WebサーバーIISを使用する必要はありません。 WebListenerはHttp.Sys(IISのHTTP Listenerもサポートする成熟したテクノロジと同じ)の上に構築されているため非常に豊富な機能およびは、さまざまな攻撃に対する保護を提供します

Kestrel一方、クロスプラットフォームプロキシの背後で実行されるように設計されたASP.NET Core用のWebサーバー(たとえば、IISまたはNginx)およびは、インターネットに直接面して展開しないでください。ケストレルは比較的新しく、は攻撃に対する完全な防御機能を備えていません。これはとしても機能豊富ではなくWebListenerとして機能し、タイムアウト制限が付属しています、サイズ制限、同時ユーザー制限。


本質的には、選択はWebアプリケーションの配備シナリオに依存します。

Weblistenerの使用例:

enter image description here

ケストレルの使用例:

enter image description here

更新:

Kestrelは、セキュリティ上の理由から、以前は常にEdgeデプロイメント(インターネットからのトラフィックに公開される)でリバースプロキシを使用する必要がありました。 ASP.Net Core 2.xのKestrelでは、これは当てはまりません。詳細については、ドキュメントをご覧ください。 Kestrel Webサーバーのドキュメント

Kestrel 1.x vs 2.x

出典:

  1. Docs.Microsoft.comASP.NET CoreでのWebサーバーの実装
  2. Docs.Microsoft.comASP.NET CoreでのWebListener Webサーバーの実装
38
Shiva

次の比較は、どちらが優れているかを選択するのに役立ちます

enter image description here

4
divyang4481

ここにあるASP.NET 5ドキュメント(2015年8月25日にMicrosoftによって作成された)には、他の回答で見つかったグラフがリストされています(右下の本のページの107ページを参照)。 PDFのページ111): https://media.readthedocs.org/pdf/aspnet/theming/aspnet.pdf

Kestrelは、以下のいずれかに使用した場合、一般にパフォーマンスが向上します。

  • インターネットに公開されているアプリのリバースプロキシと組み合わせて使用​​する場合の優れたオプション
  • プライベート仮想ネットワーク(インターネットに公開されていない)上の他の内部アプリと接続する内部アプリ

WebListenerはより安全で低速であり、より多くの機能を備えています。次の場合に使用されます。

  • アプリをインターネットに公開しますが、IISは使用できません。より高いセキュリティが必要で、サーバーを直接インターネットに公開します。
  • 追加機能:リストアイテム、Windows認証、ポート共有、SNIを使用したHTTPS、TLS/2を介したHTTP/2(Windows 10)、直接ファイル転送、応答キャッシュ
3
Crystal Tenn