セルフホスティングではなくIISまたはApache Tomcatを使用する理由


8

私は.NET開発者です。ASP.NET MVCフレームワークがセルフホスティング機能を提供し始めているのがわかります。それは(私にとって)とても理にかなっています。自己ホスト型のアプリケーションは、外部に依存することなく完全に動作します。

私が頭に浮かんでいる質問は、なぜ誰もが自己ホストしたくないのかということです。つまり、IISがセルフホスティングよりも優れている点はありますか?それ以外の場合は、Microsoftがasp.netコアとのIIS統合を作成する手間を省いたため、いくつかの利点があると確信しています。

質問を.NETに限定したくありません。だから、私は行くつもりです-なぜセルフホスティングの代わりにIISまたはApache Tomcatを使用するのですか?


4
大まかに言うと、主要なWebサーバーには、完全に再構築する必要のある多くの機能が備わっています。「セルフホスト」であれば、他の方法で構成したり、単に無視したりできます。静的ファイルの提供、構成ExpiresETagヘッダーなどの簡単なこと。さらに、トラフィックをhostで分離したり、アプリケーションを互いのメモリ、SSLから遠ざけたり、数千の同時リクエストを管理したりするなど、より複雑な処理を行う...
svidgen

C ++ソケットを使用して独自のHTTPサービスを作成することもできます。
マシューホワイト2016


1
多くの.netアプリケーションは、まだhttp.sysを使用している間、自分自身を「自己ホスト型」と呼んでいます。これは、IMOを誤解させるものです。
CodesInChaos

私の見解では、これはTCP / HTTPプロトコルとサービススタックのユースケースの進化の歴史的な帰結にすぎません。たとえば、HTTPの場合、デーモンまたはサービスは、他のローカルまたはリモートアプリケーションがハイパーテキスト/ハイパーメディアの消費または提供を委任する、あらゆるWebコンテンツの一種の中央ハブとしてOSの上に配置されていました。コンテンツ。
YSharp 2016

回答:


10

IISには、セルフホストWebサービスではデフォルトで利用できない多くの共通機能が用意されています。スーパーバイザー:Webアプリケーションの状態を監視し、アプリケーションが異常に見え始めた場合(メモリ、CPUなどを多用し、設定可能)、アプリケーションを強制終了または再起動します。CPU使用率、接続制限などのリソース制限。最小限の特権セキュリティのために特定のユーザーとして実行します。証明書/ SSLを管理します。1つのポート/インターフェイスを介して多くのアプリケーションをホスト/管理します。コンソールアプリケーションへのリバースプロキシ。リクエストロギングなど、言及しなかった他の多くのこと。

私はTomcatに慣れていませんが、同じ話だと思います。セルフホスティングではデフォルトでは提供されない追加のホスティング機能があり、自分で実装するのは非常に難しい場合があります。

多くの場合、セルフホストWebサービスを公開する製品は、本番環境でリバースプロキシまたは他のスーパーバイザの背後に置くことを推奨します。これは、クラッシュが発生しても、ネットワークが中断しても正常に機能するようにするためです。たとえば、Dockerサービス用のNGINXを考えています。.NETの分野では、KestrelはIIS介して標準的な手法(またはLinux / MacのNGINX)でリバースプロキシされていると思います。

従来、ASP.NETアプリはInternet Information Server(IIS)でWindowsのみでホストされていました。WindowsでASP.NET Coreアプリケーションを実行するための推奨方法は、引き続きIISを使用していますが、リバースプロキシサーバーとして使用しています。IISのASP.NETコアモジュールは、アウトプロセスでホストされているKestrel HTTPサーバーへの要求を管理およびプロキシします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.