web-dev-qa-db-ja.com

ケストレルとカタナの区別

私の理解では、現在、Katanaを使用してWebAPIを自己ホストすることができ、MVCは将来のバージョンでこの機能を備えます。基本的に、KatanaはMVCとWebAPIの両方で利用可能なホスティングオプションになります。

Kestrelが写真に登場しました。LinuxでASP.NET vNextをホストすることを実証しているMS従業員のブログをご覧ください。

私の理解では、KestrelとKatanaの両方がOWINパイプラインを実装しています。

そこからは少し曖昧です。モノでコンパイルし、クロスプラットフォーム互換性を持たせるためにカタナが同じ目的を果たすことができると思われる場合、なぜケストレルが写真に入ったのかと自問します(おそらく、言うよりも簡単です)。

ケストレルとカタナは同じ目的に役立ちますか?または、一方が他方にない何らかの方法で特殊化されていますか?

Kestrelは、最終的にWindows展開の実行可能な選択肢になりますか?それとも、Windows以外の環境に特化していて、Windowsの場合はKatanaが引き続き選択されますか?

私はおそらく、カタナ/ケストレルの知識が不足しているため、オレンジの比較にAppleを求めているが、答えは「リンゴはリンゴより酸性味が強い」そのIMOは完全に有効な答えです。

49
AaronLS

KatanaはMicrosoftのOWIN実装であり、セキュリティ/認証、静的ファイルの提供、その他いくつかのミドルウェアコンポーネントも含まれています。

Kestrelは、ASP.NET 5で使用できるMicrosoftのクロスプラットフォーム開発Webサーバーです。

ASP.NET 5はOWINを実装していませんが、Kestrelでの実行を含むASP.NET 5アプリケーションでOWINコンポーネントを使用できるようにする「ブリッジ」があります。

36
Eilon

古い質問かもしれませんが、グーグルで簡単に検索した結果、私がここに来たので、誰も同じような質問をしたことはないと思います。

ASP.NET 5ドキュメントの引用:

ケストレル

Kestrelは、クロスプラットフォームの非同期I/Oライブラリであるlibuvに基づくクロスプラットフォームWebサーバーです。 Kestrelはオープンソースであり、GitHubでKestrelソースを表示できます。 project.jsonにリストされているプロジェクトの依存関係に「Kestrel」を含めることで、Kestrelのサポートを追加します。

サーバーの選択

Windowsサーバーにアプリケーションをデプロイする場合は、IISを実行し、Kestrelへのリクエストを管理およびプロキシするリバースプロキシサーバーとして使用します。Linuxにデプロイする場合は、同等のリバースプロキシを実行する必要がありますKestrelへのリクエストをプロキシするApacheやNginxなどのサーバー。

Service Fabricでの実行など、セルフホスティングのシナリオでは、IISなしでKestrelを使用することをお勧めします。ただし、セルフホスティングシナリオでWindows認証が必要な場合は、WebListenerを選択する必要があります。

したがって、私の理解は次のとおりです。Kestrelが開発サーバーのみであった場合、それはもう存在せず、何らかの形でKatanaとOWINを置き換えています。

11
user2343484

この質問の下で他の回答を読んだ後もまだ明確な画像が得られないので、いくつかの調査を行いました。ここに私の結論があります。

  • OWINは、Webサーバー(KestrelやKatanaが提供するものなど)とWebアプリケーション(ユーザーが作成したコード)の間のプログラミングインターフェイスを定義する仕様です。
  • KestrelはASP.NET Coreから来ています。 OWIN互換のWebサーバーです。
  • KatanaはASP.NET 4.Xから来ています。これは、OWINサーバーを含む、MicrosoftのOWIN実装のセットです。

最後だが大事なことは:

  • ASP.NET 5は廃止され、ASP.NET Coreに置き換えられました。したがって、これ以上言及しないでください。

    (2019/06/28更新:「本日、.NET Core 3.0以降の次のリリースは.NET 5になることを発表しています」-BY MS https://devblogs.Microsoft.com/dotnet/ Introduction-net-5 / 。これは、実際には次世代のASP.Net CoreであるASP.Net 5があることを意味します)

  • OWINは、ASP.NET 4.XとASP.NET Coreの両方で重要な要素です。

詳細については、 https://www.quora.com/Is-ASP-NET-Core-a-replacement-for-OWIN-Katana をご覧ください。

6
Robert

「Project Katana」には、MicrosoftがIIS OWINのサポートを追加し、OwinHost.exeを作成し、 ライブラリを提供して、アプリケーションが自己ホスティングWebAPI 。Microsoft.Owin.Securityなどのこれらのライブラリの一部は、ASP.NET MVC 5(ASP.NET Coreではない)によって使用され、OWINを介してID /認証を結び付けますが、MVC 5はサポートしませんセルフホスティング(他のツールを使用することも可能ですが)SelfHostingライブラリはWebAPIのみを対象としています。

したがって、「Katana」は、ホスト実装とOWINのWebアプリケーションサポートの両方を指す広義の用語です: 」これらのコンポーネントには、ホストやサーバーなどのインフラストラクチャコンポーネントと機能コンポーネントの両方が含まれます。 、認証コンポーネントやSignalRやASP.NET Web APIなどのフレームワークへのバインディングなど。 "

Webアプリケーション側を指す「KatanaからASP.NET Coreへの移行」などのフレーズが表示される場合があります。 Microsoft.Owinライブラリを放棄し、追加のライブラリを必要とせずに組み込みの完全なOWINサポートを備えたASP.NET Coreを使用することを意味します。または、カタナホストからケストレルなどの別のホストに移動することを意味する同様のフレーズが表示される場合があります。あいにく、この用語は、実装のどちらの側もほとんど明確に言及するために使用されていないため、議論のコンテキストに注意を払う必要があります。

Kestrelは単なるホスト実装です。その目標は、多くのプラットフォームでOWINホスティングサポートを提供することです。それはより軽量であり、IISのように完全な機能や成熟したものではありません。 IIS、Apache、nginxなどの、より安全で堅牢なWebサーバーのリバースプロキシの背後で使用することをお勧めします。 Kestrelは、Microsoftの現在のドキュメントが、ASP.NET Core WebアプリケーションをLinuxなどの他のプラットフォームに展開するホストとして推奨しているものです。

ASP.Net Coreプロジェクトを作成する場合、Kestrelは現在デフォルトで含まれています。 ASP.NET Coreがサポートするのと同じプラットフォームでサポートされます。

3
AaronLS