Kestrelとは何か?ASP.NET CoreのクロスプラットフォームWebサーバーを徹底解説
Kestrelとは
Kestrelは、ASP.NET Core向けのクロスプラットフォームWebサーバーです。.NET Coreがサポートしているすべてのプラットフォームとバージョンで動作するため、Windows、Linux、macOSなど幅広い環境で利用できます。
Kestrelは、ASP.NET Coreに内部サーバーとしてデフォルトで組み込まれています。単体でエッジサーバーとして使用することも可能で、これはつまり、クライアントから送られてくるHTTPリクエストを直接処理するインターネット接続型のWebサーバーとして機能するということです。なお、Kestrelでアプリケーションをホストする際に使われるプロセスはdotnet.exeです。
ホスティングモデルとKestrelの関係
InProcessホスティングモデルでは、Kestrelは使用されません。InProcessの場合、アプリはIISのワーカープロセス内で直接実行されるためです。
一方、OutOfProcessホスティングモデルでは、Kestrelは次の2つの方法のいずれかで使用できます。
- インターネット接続型(エッジ)WebサーバーとしてKestrelを単独で使用する
- IIS、Nginx、Apacheなどのリバースプロキシサーバーと組み合わせてKestrelを使用する
リバースプロキシと組み合わせる構成では、フロントエンドのプロキシサーバーがHTTPリクエストを受け付け、それをKestrelへ転送します。この構成により、負荷分散、SSL/TLS終端、キャッシュといった機能を活用できるため、本番環境ではこちらが推奨されることが多いです。
.NET Core CLIでの実行例
.NET Core CLIを使うと、指定したテンプレートに基づく新しいプロジェクト・構成ファイル・ソリューションの作成、依存関係やツールの復元(restore)、プロジェクトとその依存関係のビルド、プロジェクトの実行などを行えます。
CLIを使ってASP.NET Coreアプリケーションを実行する手順は以下の通りです。
- Windowsのコマンドプロンプトを起動する
- ASP.NET Coreプロジェクトが含まれているフォルダへディレクトリを移動する
- dotnet runコマンドを実行する
.NET Core CLIによるビルドと実行が完了すると、アプリケーションへアクセスできるURLが表示されます。
この例では、アプリケーションはhttps://localhost:5000で利用可能になっています。
ホストされているプロセスの確認
Kestrelの場合、アプリをホストして実行するプロセスはdotnet.exeです。そのため、ブラウザでhttps://localhost:5000にアクセスした状態でタスクマネージャーなどを確認すると、プロセス名として「dotnet」が表示されているのがわかります。
-
ASP.NET Web API(C#)の組み込みメッセージハンドラーとは?仕組みと種類を解説
メッセージハンドラー(Message Handler)とは、HTTPリクエストを受け取り、HTTPレスポンスを返す役割を持つクラスのことです。すべてのメッセージハンドラーは、抽象クラス HttpMessageHandler から派生します。このハンドラーを利用することで、リクエストが HttpControllerDispatcher に到達する前に、その内容を処理・編集、あるいは拒否することができます。メッセージハンドラーは、リクエスト処理パイプラインのごく早い段階で実行されるため、Web APIにおける横断的関心事(クロスカッティングコンサーン)を実装するのに最適な場所です。メッセージハンド
-
ASP.NET Machineアカウントとは?正体と安全な削除方法を解説
Windowsのローカルユーザーアカウントは、複数人で同じPCを共有する際にプライバシーを守れる便利な機能です。しかし最近、多くのユーザーの間で奇妙な現象が報告されています。それが、「ASP.NET Machine」という見覚えのないアカウントがPCに勝手に現れるというものです。「家族がいたずらをしたのでは?」と不安になる方もいるかもしれませんが、ご安心ください。この記事では、ASP.NET Machineアカウントとは何か、そしてPC上のこのユーザーアカウントにどう対処すればよいのかをわかりやすく解説します。ASP.NET Machineアカウントとは?一見ウイルス感染のように思えますが、実