Asp.Net CoreホスティングモデルはWebアプリケーションでどのように使用されますか?



Asp.netコアには、ホスティングモデルが大幅に強化されています。以前のバージョンでは、Windows上のIIS、Apache、NGINXなどのプロキシWebサーバーを介してAsp.net Core Webアプリケーションをホストすることが期待されていました。ただし、新しいAsp.netコア2.2では、外部サーバーを必要とせずに、IIS内のWindowsでAsp.netアプリケーションを直接ホストできます。したがって、これにより、単純なインプロセスホスティングメカニズムを使用してスループットが向上します。

ASP.NET Coreでのホスティングモデル

ASP.NETはMicrosoftのテクノロジーであり、Webサーバー側に動的なページを作成できるようになりました。

ホスティングASP.NETは、Windowsベースのソフトウェアとオペレーティングシステム自体と完全に統合されています。この技術は非常に安全で信頼性が高く、使いやすいと考えられています。主にアプリ内製品の開発に使用されます。

ASP.NET Coreのホスティングモデルには、インプロセスホスティングとアウトプロセスホスティングの2種類があります。 ASP.Net Core 2.2以前は、アウトプロセスホスティングという1つのホスティングモデルしかありませんでしたが、パフォーマンスのため、Asp.net core 2.2バージョンのインプロセスホスティングモデルが導入されました。

Asp.net Coreのインプロセスホスティングモデルの紹介

以前のバージョンのASP.NET Coreでは、IISを介してプロキシするアウトプロセスホスティングモデルを使用してIISでアプリケーションをホストする必要がありました。 IISまたはIIS Expressにヒットした要求は、Kestrel Webサーバー内で実行されているASP.NET Core Webアプリケーションに転送されます。ただし、新しいインプロセスホスティングでは、IIS、Nginx、Linuxなどのホスティングに使用されるサーバーは1つだけです。つまり、リクエストをKestrelに転送する代わりに、新しいWebサーバー実装(IISHttpServer)がIISアプリケーションプール内に直接ホストされ、リクエストを処理します。 ASP.NET Core 3.1では、既存のテンプレートを使用して新しいアプリケーションを開発するときは常に、インプロセスホスティングモデルがデフォルトモデルとして使用されます。

明らかに、このホスティングモデルは、アウトプロセスホスティングモデルと比較して、スループットとパフォーマンスが大幅に向上しています。

アウトプロセスホスティングモデル

アウトプロセスホスティングモデルでは、Kestrelサーバーをユーザーリクエスト向けサーバーとして直接使用するか、プロキシサーバーとして機能し、リクエストを内部Kestrelサーバーに送信するIISにアプリケーションをデプロイできます。この種のホスティングモデルでは、ホストするための2つのオプション、つまりKestrelとProxy Serverを使用できます。

1. Kestrelの使用

この場合、Kestrel自体がエッジサーバーとして機能し、ユーザーの要求を直接処理します。つまり、アプリケーションでKestrelサーバーのみを使用できます。

2.プロキシサーバーの使用

Kestrelサーバーの制限により、すべてのアプリケーションでこれを使用することはできません。このような場合、IIS、Apache、NGINXなどの強力なサーバーを使用する必要があります。したがって、この状況では、このサーバーは、アプリケーションが実行されている内部のKestrelサーバーにすべての要求をリダイレクトする予約プロキシサーバーとして機能します。ここでは、IISとKestrelなどの2つのサーバーが実行されています。

このホスティングモデルは、以前の.NET Core 2.2バージョンで実装されたすべてのアプリケーションのデフォルトモデルです。パフォーマンスの低下など、このタイプの使用に関する制限の1つ。

最終的な考え:

事実によると、ASP.Net Web開発会社のほとんどは、確かにインプロセスホスティングモデルの使用を望んでいます。より少ないリソースを消費し、優れたパフォーマンスを提供するため。 Kestrelの追加プロセスが不要で、IISとKestrel間の余分な通信も回避されます。ただし、WindowsとLinuxで同じWebアプリケーションをホスティングする場合など、プロセス外ホスティングを選択したい場合があります。他のプラットフォームでのアプリケーションのホスティングについて話すとき、KestrelはすべてのプラットフォームでHTTPリクエストを処理するために使用される主要なメカニズムです。

ただし、Kestrelに対する非常に具体的な要件がない限り、IISでインプロセスを実行するのが最善の方法です。

メイン画像クレジット:UnsplashのFarzad Nazifiによる写真




コメント (0)

コメントを残す