Wie kann man Katana und OWIN in einfachen Worten und Verwendungen erklären?


337

Ich habe viele Artikel über die OWIN- und Katana-Projekte gelesen, konnte mir aber nicht das ganze Bild davon machen.

Für einen normalen Webentwickler, der ASP.NET verwendet:

  1. Was genau ist OWIN und welche Probleme löst es (in einfachen Worten). In welcher Beziehung steht es zu IIS?
  2. Ersetzt OWIN IIS? Wenn nicht, in welche Situationen passt OWIN am besten?
  3. Wie könnte OWIN mir bei meinen täglichen Arbeitsprojekten helfen?
  4. Wie könnte OWIN mir bei Selbstverbesserungsprojekten helfen?

Sie könnten in Betracht ziehen, die akzeptierte Antwort zu ändern, da einige Aufzählungspunkte nicht wirklich korrekt sind - irreführend.
Admir Tuzović

3
Mein Buch auf ASP.net schlägt vor, Identity und die UserManager-Klasse über OWIN zu implementieren, und ich verstehe den Punkt wirklich nicht. Es hat mich völlig verwirrt ...
Luke

Antworten:


409

In Bezug auf den obigen Kommentar ist OWIN kein Framework. OWIN ist eine Spezifikation, wie Webserver und Webanwendungen erstellt werden sollen, um sie zu entkoppeln und das Verschieben von ASP.NET-Anwendungen in Umgebungen zu ermöglichen, die zuvor nicht unterstützt wurden.

Vor OWIN waren Sie beim Erstellen einer ASP.NET-Anwendung aufgrund der starken Abhängigkeit von der System.WebAssembly von Natur aus an IIS gebunden .

System.Web ist etwas, das seit ASP (Nicht-.NET-Version) existiert und intern viele Dinge enthält, die Sie möglicherweise nicht einmal benötigen (wie Web Forms oder URL-Autorisierung), die standardmäßig bei jeder Anforderung ausgeführt werden, wodurch Ressourcen verbraucht und ASP erstellt werden .NET-Anwendungen sind im Allgemeinen viel langsamer als ihre Gegenstücke wie beispielsweise Node.js.

OWIN selbst hat keine Tools, Bibliotheken oder sonst etwas. Es ist nur eine Spezifikation.

Katana hingegen ist ein vollständig entwickeltes Framework, das eine Brücke zwischen den aktuellen ASP.NET-Frameworks und der OWIN-Spezifikation schlägt. Derzeit hat Katana die folgenden ASP.NET-Frameworks erfolgreich an OWIN angepasst:

  • Web-API
  • Signal R.

ASP.NET MVC und Web Forms werden weiterhin ausschließlich über System.Web ausgeführt, und auf lange Sicht ist geplant, diese ebenfalls zu entkoppeln.

Andererseits ist IIS ein guter, einfallsreicher Host für Webserver. Ganze ASP.NET-Leistungsprobleme mit IIS haben nur tiefe Wurzeln System.Web. Bis vor kurzem hatten Sie bei der Entscheidung, wie Sie Ihren Webserver hosten möchten, zwei Möglichkeiten:

  • IIS
  • Selbsthost

Wenn Sie also eine Aufführung wünschen, entscheiden Sie sich für eine Selbsthost-Option. Wenn Sie viele sofort einsatzbereite Funktionen von IIS wünschen, würden Sie sich für IIS entscheiden, aber an Leistung verlieren.

Jetzt gibt es eine dritte Option, eine Microsoft-Bibliothek namens Helios (aktueller Codename), die System.Webaus dem Weg geräumt werden soll und die es Ihnen ermöglicht, IIS "sauberer" zu verwenden, ohne unnötige Bibliotheken oder Module. Helios ist jetzt in der Vorabversion und wartet auf weitere Community-Rückmeldungen, damit das Microsoft-Produkt vollständig unterstützt wird.

Hoffe, diese Erklärung klärt die Dinge besser für Sie.

EDIT (Sep 2014):

Mit der Entwicklung von ASP.NET vNext geht Katana langsam in den Ruhestand. Version 3.0 wird höchstwahrscheinlich die letzte Hauptversion von Katana als eigenständiges Framework sein.

Alle mit Katana eingeführten Konzepte werden jedoch in ASP.NET vNext integriert, was bedeutet, dass das Programmiermodell nahezu identisch ist. Zitat aus dem Forumsbeitrag von David Fowler (Architekt von ASP.NET vNext):

vNext ist der Nachfolger von Katana (weshalb sie so ähnlich aussehen). Katana war der Beginn der Abkehr von System.Web und modulareren Komponenten für den Webstack. Sie können vNext als Fortsetzung dieser Arbeit sehen, aber viel weiter gehen (neue CLR, neues Projektsystem, neue http-Abstraktionen).

Alles, was heute in Katana existiert, wird seinen Weg in vNext finden.

BEARBEITEN (Februar 2015):

ASP.NET vNext wird jetzt als ASP.NET 5 bezeichnet und basiert auf .NET Core 5. .NET Core 5 ist eine leichtgewichtige faktorisierte Version von .NET Framework, die zur Unterstützung der Ziele von ASP.NET 5 und .NET Native entwickelt wurde . ASP.NET 5 wird jedoch auch von .NET Framework 4.6 unterstützt, das zusammen mit .NET Core 5 verfügbar sein sollte. Sowohl ASP.NET 5 als auch .NET Core 5 werden unter MIT lizenziert und akzeptieren Community-Beiträge.

EDIT (Mai 2015):

Darüber hinaus wird die Marke ASP.NET Web API eingestellt, die Technologie basiert jedoch auf dem neuen ASP.NET MVC 6. Frühere ASP.NET MVC-Versionen wurden durch Implementierung von IHttpHandler, einer in definierten Schnittstelle, erstellt System.Web. ASP.NET MVC 6 entfernt diese Abhängigkeit und macht sie auf verschiedene Plattformen und Webserver portierbar.

EDIT (Mai 2016):

ASP.NET 5 wird ab Release Candidate 2, das in Kürze veröffentlicht werden soll, offiziell in ASP.NET Core umbenannt. Gleiches gilt für Entity Framework 7, das in Entity Framework Core umbenannt wird. Weitere Informationen zu offiziellen Ankündigungen und Gründen dafür finden Sie in Scott Hanselmans Blog-Beitrag: ASP.NET 5 ist tot - Einführung in ASP.NET Core 1.0 und .NET Core 1.0

EDIT (Mai 2016):

Mit der Veröffentlichung von Release Candidate 2 wurde ASP.NET Core so geändert, dass zukünftige Webanwendungen eigentlich nur .NET Core-Konsolenanwendungen sind, die zur Verarbeitung eingehender HTTP-Anforderungen eingerichtet wurden . Durch dieses Konzept wird ASP.NET Core noch besser auf den Ansatz abgestimmt, den Microsoft bei der Unterstützung der Microservices-Architektur und deren Implementierung über Azure Service Fabric verfolgt hat. Weitere Informationen zu finden Sie im offiziellen Blog-Beitrag: Ankündigung von ASP.NET Core RC2


2
@ebramtharwat Jetzt, ein Jahr später, sieht es nicht so aus, als wäre Helios eine Sache
Andrew Savinykh

1
Sie haben erwähnt, dass Katana v3 höchstwahrscheinlich die letzte Hauptversion sein wird. Welches Framework wird also in Zukunft verwendet, um Katana zu ersetzen?
Vincent

2
Die Funktionen von Katana wurden in ASP.NET 5 integriert. Katana wird aus Gründen der Abwärtskompatibilität weiterhin vorhanden sein.
Admir Tuzović

2
@ AdmirTuzović: tolle Antwort. Weitere Updates seit Mai 2016?
Igby Largeman

2
Die erste Antwort mit nachfolgenden Änderungen erklärt die Übergänge sehr gut. Danke für die Mühe.
Sang Suantak

71

Wenn ich OWIN für mich selbst definieren muss, wäre das: "Die besten Ideen aus den Webentwicklungs-Communities von Ruby und Node.j, die zu .NET kommen."

Dies würde jedoch keinem ASP.NET-Entwickler helfen. Meine eigene Definition wäre etwas in der Art von:

OWIN definiert eine Standardschnittstelle zwischen .NET-Webservern und Webanwendungen. Das Ziel der OWIN-Schnittstelle ist die Entkopplung von Server und Anwendung. Wenn ich die von Ihnen gestellten Fragen beantworten muss, ist dies hier:

  1. OWIN ist eine Schnittstellenspezifikation. Es entkoppelt eine Webanwendung von IIS.

  2. Wenn Sie vorgefertigte Komponenten verwenden (was Katana ist), sind einige Teile der Anwendungsfunktionalität im Vergleich zu altem ASP.NET viel einfacher zu implementieren. Die Authentifizierung bei Identitätsanbietern von Drittanbietern (Facebook, Twitter) ist ein Beispiel dafür.

  3. OWIN ist im Wesentlichen eine Sammlung von Best Practices, die sich in Webentwicklungs-Communities bewährt haben. Es zeigt einen Weg, um Web-Apps zu implementieren, die sehr offen für Erweiterbarkeit sind. Da jeder Webentwickler ständig auf dem neuesten Stand der Technik sein sollte, ist dies eine Möglichkeit, mit der gesamten Webentwicklungs-Community und nicht nur mit .NET auf dem Laufenden zu bleiben. Wenn Sie OWIN lernen, ist es viel einfacher, andere Webentwicklungs-Frameworks wie Express für node.js oder Rack für Ruby zu erlernen, da die verwendeten Praktiken ähnlich sind.

1
Dieser Artikel könnte genauso gut helfen, sich ein Bild von den historischen Problemen zu machen, die von OWIN / katana gelöst wurden: asp.net/aspnet/overview/owin-and-katana/… . Allerdings werden derzeit nur diese Frameworks auf dem OWIN-Host unterstützt: owin.org/#projects . Wenn Ihre App eines dieser Anwendungsframeworks verwendet, kann dieses auf OWIN gehostet werden.
Praburaj

Können Sie hier die Reihenfolge der eingehenden Anfragen vom Browser bis zur Antwort posten, indem Sie den Browser zurückgeben, wenn Sie die Datei owinhost.exe verwenden? Ich konnte kein Dokument in diesem Thema finden.
Saravanan

2
Die Punkte 1 und 2 sind irreführend. OWIN kann nichts alleine ersetzen. Wie Punkt 4 ist es nur eine Spezifikation, die irgendwie implementiert werden muss, wobei Referenzimplementierungen von Microsoft bisher Katana und Helios sind.
Mani Gandham

Die besten Ideen aus den Ruby- und Node.js-Webentwickler-Communities, die zu .NET kommen ... können Sie einige dieser \
Lakshay

1
Middleware. Entkoppeln der Anwendung von der Hosting-Umgebung, um diese steckbar zu machen.
Slavo

59

Ich werde versuchen, es aus praktischer Sicht zu behandeln.

Katana ist der Projektname für die Implementierung von OWIN in Microsoft .

Was genau ist OWIN und welche Probleme löst es (in einfachen Worten). In welcher Beziehung steht es zu IIS? OWIN ( Open Web Interface für .NET ) ist ein Standard ( OWIN-Spezifikation ) und Katana ist eine .NET-Bibliothek. Sie können Nuget hier herunterladen . OWIN und Katana wurden im Web zu einem Synonym.
Vor OWIN war Ihre einzige Option IISOWIN. Sie können jede andere Anwendung (mit Einstiegspunkt) als Webserver verwenden.

Ersetzt OWIN IIS? Wenn nicht, in welche Situationen passt OWIN am besten?
Nein, es ersetzt IIS nicht. Sie können OWIN und IIS verwenden. Microsoft.Owin.Host.SystemWebDafür gibt es ein Nuget . Es ist am besten geeignet, wenn Sie die Art und Weise, wie es in IIS gehandhabt wird, optimieren / ändern möchten oder wenn Sie Ihren benutzerdefinierten Webserver aus beispielsweise Windows Forms Application erstellen möchten.

Wie könnte OWIN mir bei meinen täglichen Arbeitsprojekten helfen?
Dies könnte die laufenden Kosten Ihres Servers senken, da Ihre Webserver nicht mehr unter IIS (Windows) ausgeführt werden müssen (Windows-Server sind teurer als Unix-basierte Server, und Sie können sie unter Mono unter Linux auf der Konsolenanwendung ausführen).

Wie könnte OWIN mir bei Selbstverbesserungsprojekten helfen?
Das Lernen Microsoft.Owin(und andere verwandte OWIN-Bibliotheken) verbessert Ihr Wissen darüber, wie die HTTP-Kommunikation zwischen Client und Webserver funktioniert.

Lesen Sie gut, wenn Sie mehr darüber erfahren möchten, was Katana und OWIN sind.


6
Gut gemacht und danke, dass Sie die gestellten Fragen direkt beantwortet haben, anstatt sich auf die Tangentialspur zu wagen.
Dav

Was ist, wenn wir immer Microsoft IIS-fähige Server für das Hosting verwenden? Es scheint, dass OWIN in neuen WebApi2-Vorlagen Standard ist. Sollte ich es als Referenz entfernen, wenn ich nur / immer in IIS hosten möchte?
TechTurtle

@ TechTurtle Hi Tech, ich würde empfehlen, es als separate Frage zu posten.
Matas Vaitkevicius

Sehr klare Erklärung. Vielen Dank für nützliche Informationen
Uttam

9

Was ist OWIN?

OWIN steht für Open Web Interface for .NET. OWIN ist eine Spezifikation, die beschreibt, wie Webentwicklungsframeworks wie ASP.NET MVC mit den Webservern interagieren sollen. Das Ziel von OWIN ist es, Webanwendungen durch Einführung einer Abstraktionsschicht vom Webserver zu entkoppeln. Mit einer solchen Abstraktion können Sie dieselbe Anwendung auf allen Webservern ausführen, die OWIN unterstützen. Darüber hinaus wird das Gesamtsystem vereinfacht, da die Abstraktionsschicht eine kompakte Infrastruktur zum Hosten der Anwendungen bereitstellen kann. IIS bietet den Webanwendungen eine Vielzahl von Funktionen. Webanwendungen benötigen jedoch möglicherweise nicht alle diese Funktionen. Es kann ausreichend sein, dass sie nur über minimale HTTP-Verarbeitungsfunktionen verfügen. OWIN-kompatibler Host kann diesen Anwendungen eine solche Hosting-Umgebung bereitstellen. Außerdem, Sie können eine Pipeline von Modulen definieren, die während der Anforderungsverarbeitung verwendet werden. Eine OWIN-Pipeline ist eine Kette von OWIN-kompatiblen Komponenten, durch die eine Anforderung geleitet wird.

Was ist Katana?

Katana ist eine Reihe von Komponenten von Microsoft, die nach OWIN-Spezifikationen erstellt wurden. Einige dieser Komponenten umfassen Web-API, ASP.NET Identity und SignalR.

Oben ist ein Auszug aus dem CodeGuru-Artikel: http://www.codeguru.com/csharp/.net/net_asp/overview-of-owin-and-katana.htm

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.