2016-09-10 15 views
11

私が理解しているように、ASP.NET Coreは独自のネイティブミドルウェアに加えて、OWINミドルウェア(app.UseOwin()経由)をサポートしています。ASP.NETコアミドルウェアまたはOWINミドルウェア?

ASP.NETコアミドルウェアとOWINミドルウェアの違いは何ですか?

新しいミドルウェアを設計する場合、ASP.NET CoreミドルウェアまたはOWINミドルウェアとして設計する必要があるかどうかをどのように知ることができますか?

答えて

7

あなたの質問は私には好奇心をそそられ、今までに学んだことを分かち合いたいと思います。

Katanaは、OWIN仕様の実装です。 Katanaのバージョン3.0以降、このテクノロジーは今日ASP.NETコアとして知られているWebスタックに完全に統合されています。

この移行は、OWINの仕様とほとんど変わりませんが、いくつかの変更が加えられましたが。 ASP.NET Coreで既存のOWINミドルウェアを使用するには、OWINをオプション機能( "app.UseOwin()")でサポートします。

ミドルウェアASP.NETアプリケーションとASP.NETコアアプリケーションを対象にしたい場合は、OWINミドルウェアを使用します。 ASP.NET Core開発者に一流の市民体験を提供したい場合は、ASP.NET Coreミドルウェアがより適していると認識されます。

ASP.NETコア・ミドルウェアとOWINミドルウェアとの関係についていくつかの情報はここで見つけることができます:

0

が、私はそれを理解するようになりましたこのように。 ASP.NET Coreミドルウェアは、より低いレベルにあるOWINミドルウェアよりも高いレベルにあります。

ASP.NETコアミドルウェアは、使用できるHttpContextに合格するとミドルウェアを開発する方がはるかに簡単であるという利点があります。欠点は、開発しているミドルウェアがASP.NET Coreに依存していることです。

OWINは下位レベルにあり、OWIN環境はIDictionary<string, object>です。利点は、それはASP.NETに結びついていないので、任意のOWINサーバー(Nowinなど)で実行できることです。欠点は、OWIN環境から独自のコンテキストを構築するか、OWIN環境ディクショナリを直接使用してすべてのOWIN keysとオブジェクトを追跡する必要があるため、コードに多くの労力がかかることです。

編集:自分でOWINキーを追跡する必要はありません。強く型付けされた環境を取得するには、OwinEnvironmentクラスを使用できます。

var environment = new OwinEnvironment(HttpContext); 
var features = new OwinFeatureCollection(environment); 
+1

マーク。 OwinEnvironmentは、Microsoft.AspNetCore.Owinの概念であり、純粋なOWINのものではありません。これと同様に、「OwinMiddleware」はKatanaのものであり、純粋なOWINのものではありません。 –

関連する問題