2016-09-10 9 views
11

Wie ich es verstehe, hat ASP.NET Core Unterstützung für OWIN-Middleware (über app.UseOwin()) zusätzlich zu seiner eigenen nativen Middleware.ASP.NET Core Middleware oder OWIN Middleware?

Was ist der Unterschied zwischen ASP.NET Core Middleware und OWIN Middleware?

Wie kann ich beim Entwerfen einer neuen Middleware wissen, ob ich sie als ASP.NET Core-Middleware oder als OWIN-Middleware entwerfen soll?

Antwort

7

Ihre Frage hat mich neugierig gemacht und ich möchte Ihnen mitteilen, was ich bisher gelernt habe.

Katana ist die Implementierung der OWIN-Spezifikation. Nach der Version 3.0 von Katana wurde diese Technologie vollständig in den Web-Stack integriert, den wir heute als ASP.NET Core kennen.

Während dieser Übergang ist viel ähnlich wie die OWIN-Spezifikationen geblieben. Obwohl einige Änderungen vorgenommen wurden. Um vorhandene OWIN-Middleware in ASP.NET Core zu verwenden, unterstützt OWIN eine optionale Funktion ("app.UseOwin()").

Wenn Sie mit Ihren Middleware-ASP.NET-Anwendungen und ASP.NET-Kern-Apps zielen möchten, dann würde ich OWIN Middleware verwenden. Wenn Sie ASP.NET Core-Entwicklern eine erstklassige Bürgererfahrung bieten möchten, dann wird eine ASP.NET Core-Middleware als "passender" erkannt.

0

ich es zu verstehen sind gekommen:

Einige Informationen über die Beziehung zwischen ASP.NET-Core Middleware und OWIN Middleware finden Sie hier als dies; ASP.NET Core Middleware ist auf einer höheren Ebene als OWIN Middleware, die auf einer niedrigeren Ebene ist.

ASP.NET Core Middleware hat den Vorteil, dass es viel einfacher ist, eine Middleware zu entwickeln, wenn Sie in der HttpContext übergeben werden, die Sie verwenden können. Der Nachteil ist, dass die Middleware, die Sie entwickeln, von ASP.NET Core abhängt.

OWIN ist auf einer niedrigeren Ebene und Sie erhalten eine OWIN-Umgebung, die eine IDictionary<string, object> ist. Der Vorteil ist, dass es nicht an ASP.NET gebunden ist und daher auf jedem OWIN-Server (wie Nowin) laufen kann. Der Nachteil ist, dass es mehr Aufwand für den Code erfordert, da Sie einen eigenen Kontext aus der OWIN-Umgebung erstellen oder das OWIN-Umgebungswörterbuch direkt verwenden müssen und alle OWIN keys und Objekte verfolgen müssen.

Edit: Sie müssen OWIN Schlüssel nicht selbst verfolgen, können Sie die OwinEnvironment Klasse verwenden, um eine stark typisierte Umgebung zu erhalten.

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

Mark. 'OwinEnvironment' ist ein Konzept von' Microsoft.AspNetCore.Owin' und keine reine OWIN-Sache. Ähnlich wie 'Owin Middleware' ist eine Katana-Sache und keine reine OWIN-Sache. –

Verwandte Themen