wake-up-neo.com

Wie erklärt man Katana und OWIN in einfachen Worten und Worten?

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

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 welchen Situationen passt OWIN am besten?
  3. Wie kann mir OWIN bei meinen täglichen Arbeitsprojekten helfen?
  4. Wie könnte OWIN mir bei Projekten zur Selbstverbesserung helfen?
329
ebram khalil

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 der ASP.NET-Anwendung aufgrund der starken Abhängigkeit von der Assembly System.Web Von Natur aus an IIS gebunden.

System.Web Existiert seit ASP (keine .NET-Version) und enthält intern viele Dinge, die Sie möglicherweise gar nicht benötigen (z. B. Web Forms oder URL-Autorisierung) Alle werden bei jeder Anforderung ausgeführt, wodurch Ressourcen verbraucht werden und ASP.NET-Anwendungen im Allgemeinen viel langsamer ausgeführt werden als ihre Gegenstücke wie beispielsweise Node.js.

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

Katana hingegen ist ein ausgereiftes 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, auch diese zu entkoppeln.

Auf der anderen Seite ist IIS ein guter, einfallsreicher Host für Webserver. Vollständige ASP.NET-Leistungsprobleme mit IIS sind nur in System.Web Tief verwurzelt. Bis vor kurzem hatten Sie bei der Entscheidung, wie Sie Ihren Webserver hosten möchten, zwei Möglichkeiten:

  • IIS
  • Selbst-Host

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

Nun gibt es eine dritte Option, eine Microsoft-Bibliothek mit dem Namen Helios (aktueller Codename), mit der Sie System.Web Aus dem Weg räumen und IISverwenden können. _ auf "sauberere" Weise, 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.

BEARBEITEN (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 sein wird. Zitat aus Forumsbeitrag von David Fowler (Architekt von ASP.NET vNext):

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

Alles, was heute in Katana existiert, wird es in vNext schaffen.

BEARBEITEN (Feb. 2015):

ASP.NET vNext heißt jetzt ASP.NET 5 und wird auf .NET Core 5 aufbauen. .NET Core 5 ist eine kompakte 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 und lizenziert akzeptiert Community-Beiträge.

BEARBEITEN (Mai 2015):

Darüber hinaus wird die ASP.NET-Web-API-Marke eingestellt, die Technologie wird jedoch für das neue ASP.NET MVC 6 verwendet. Frühere ASP.NET MVC-Versionen wurden durch Implementierung von IHttpHandler erstellt, einer in System.Web Definierten Schnittstelle. ASP.NET MVC 6 entfernt diese Abhängigkeit und kann auf verschiedene Plattformen und Webserver portiert werden.

BEARBEITEN (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 den Gründen dafür finden Sie in Scott Hanselmans Blog-Post: ASP.NET 5 ist tot - Einführung von ASP.NET Core 1.0 und .NET Core 1.

BEARBEITEN (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 gewählt hat. Weitere Informationen finden Sie im offiziellen Blog-Beitrag: Ankündigung von ASP.NET Core RC2

393
Admir Tuzović

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

Dies würde jedoch keinem ASP.NET-Entwickler helfen. Meine eigene Definition wäre etwa so:

OWIN definiert eine Standardschnittstelle zwischen .NET-Webservern und Webanwendungen. Das Ziel der OWIN-Schnittstelle ist es, Server und Anwendung zu entkoppeln. Wenn ich die gestellten Fragen beantworten muss, dann 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 alten ASP.NET-Versionen viel einfacher zu implementieren. Ein Beispiel hierfür ist die Authentifizierung bei Drittanbietern (Facebook, Twitter).

  3. OWIN ist im Wesentlichen eine Sammlung von Best Practices, die sich in Webentwicklungs-Communities bewährt haben. Es zeigt eine Möglichkeit, Web-Apps zu implementieren, die für Erweiterungen sehr offen 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 sie ähnliche Vorgehensweisen verwenden.
71
Slavo

Ich werde versuchen, es aus praktischer Sicht zu behandeln.

Katana ist der Projektname m OWIN in Microsoft zu implementieren .

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 Specification ) und Katana ist. NET-Bibliothek, können Sie Nuget von hier bekommen . OWIN und Katana wurden etwas synonym im Web.
Bevor OWIN Ihre einzige Option war IIS mit OWIN können Sie jede andere Anwendung (die einen Einstiegspunkt hat) als Webserver verwenden.

Ersetzt OWIN IIS? Wenn nicht, in welchen Situationen passt OWIN am besten?
Nein, es ersetzt nicht IIS. Sie können OWIN und IIS Es gibt Microsoft.Owin.Host.SystemWeb Nuget dafür . Dies ist am besten geeignet, wenn Sie die Art und Weise, wie mit IIS umgegangen wird, optimieren oder ändern möchten oder wenn Sie Ihren benutzerdefinierten Webserver beispielsweise aus Windows Forms-Anwendungen erstellen möchten.

Wie könnte OWIN mir bei meinen täglichen Arbeitsprojekten helfen?
Dies könnte die Betriebskosten 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önnten dies auch tun Führen Sie es in der Konsolenanwendung unter Mono unter Linux aus.

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

Gut zu lesen, wenn Sie mehr über Katana und OWIN erfahren möchten.

58

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. Ziel von OWIN ist es, Webanwendungen durch die 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 schlanke Infrastruktur zum Hosten der Anwendungen bereitstellen kann. IIS stellt den Webanwendungen eine Fülle von Funktionen zur Verfügung. Webanwendungen benötigen jedoch möglicherweise nicht alle diese Funktionen. Möglicherweise sind nur minimale HTTP-Verarbeitungsfunktionen erforderlich. OWIN-kompatibler Host kann diese Funktionen bereitstellen B. eine solche Hosting-Umgebung für diese Anwendungen. Außerdem können Sie 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-Identität und SignalR.

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

8

ASP.NET gibt es seit mehr als einem Jahrzehnt. Die Welt der Webentwicklung hat sich in den letzten Jahren drastisch verändert. Einige der Herausforderungen, denen wir alle bei der Arbeit mit ASP.NET begegnet sind, sind:

Monolithisch: In ASP.NET das Assembly-System. Web enthält alle ASP.NET-Funktionen. Dies bedeutet, dass neue Funktionen nur als Teil einer neuen Framework-Version freigegeben werden können.

Da das Framework neben ASP.NET viele andere Komponenten enthält, können Framework-Releases nicht sehr häufig ausgeführt werden. Daher sind neue Funktionen in ASP.NET vom Framework abhängig. Dies ist bei Web Forms ein Nachteil.

Wie wir in den letzten Jahren gesehen haben, haben sich die Webtechnologien sehr schnell entwickelt. Früher hatten wir serverseitige Skripttechnologien wie asp, dann wurden kompilierte Sprachen wie Java und c # für die serverseitige Entwicklung ziemlich populär. Jetzt bewegt sich die Welt der Webentwicklung schnell in Richtung Single Page-Anwendungen.

Dieses Problem wurde später mit der Veröffentlichung von Technologien wie MVC behoben. MVC kann als separates Nuget-Paket heruntergeladen werden. Dies bedeutet, dass die Aktualisierungen in MVC unabhängig von den .NET Framework-Versionen häufiger durchgeführt werden können. Wir müssen nicht auf die Veröffentlichung einer neuen Version des .NET Frameworks warten, um neue MVC-Funktionen zu erhalten.

MVC-Funktionalität ist in System.Web.Mvc enthalten, das wir als Nuget-Paket hinzufügen können.

Enge Kopplung mit IIS: Das System. Web Assembly ist eng mit IIS verbunden. Wir haben zwar auch andere Hosts wie Visual Studio-Webserver, diese unterstützen jedoch nur eingeschränkte ASP.NET-Funktionen. Daher gibt es nur eine Hostoption für die Bereitstellung. enter image description here

Es ist nicht einfach, Funktionen wie die HTTP-Module in der HTTP-Pipeline zu deaktivieren: In ASP.NET gibt es eine Anforderungspipeline, die aus ähnlichen Elementen besteht Arten von http-Modulen, Seiten- und Steuerlebenszyklus. Sie sind alle Teil der Anforderungspipeline, und es gibt keine einfache Möglichkeit, sie zu deaktivieren.

Möglicherweise möchten wir nicht alle Ebenen wie den Seitenlebenszyklus für unsere einfache Anwendung ausführen. Möglicherweise möchten wir nur die Antwort vom Handler zurückgeben und den Rest der Ebenen ignorieren.

Daher folgt jede asp.net-Webformularanwendung, egal wie einfach sie sein soll, immer einem bestimmten Anforderungspfad und zwingt uns, Funktionen zu verwenden, die wir nicht benötigen. Wie die Authentifizierung und viele andere HTTP-Module.

Dies sollte uns einige der Attribute verdeutlichen, die in einem modernen Webframework vorhanden sein sollten.

Lose Kopplung: Das Erstellen einer losen Kopplung zwischen den Anwendungskomponenten hat den Vorteil, dass die Komponenten durch andere ersetzt werden. Wäre es nicht großartig, wenn wir den Server, auf dem unsere Webanwendung gehostet wird, problemlos ersetzen könnten, ohne den Rest der Anwendung zu beeinträchtigen?.

1. Was ist OWIN?

  • Die OWIN-Spezifikation bietet eine Lösung für die oben genannten Probleme.OWIN steht für Open Web Interface for .Net

enter image description here

  • „OWIN definiert eine Standardschnittstelle zwischen .NET-Webservern und Webanwendungen. Das Ziel der OWIN-Schnittstelle ist die Entkopplung von Server und Anwendung. “

  • OWIN entkoppelt den Webserver von den Anwendungs-Frameworks. Dies mag sich nach einem einfachen Prinzip anhören und ist es auch, aber wenn wir darüber nachdenken, hat es viele Auswirkungen. Da der Webserver vom Anwendungsframework entkoppelt ist, können wir die Anwendung mit verschiedenen Webservern und anderen Komponenten verwenden.

[~ # ~] owin [~ # ~] ist nur eine Spezifikation und es kann viele verschiedene Implementierungen von OWIN geben. Katana ist ein Beispiel für eine solche Implementierung.

2. Was ist Katana?

Da OWIN nur eine Spezifikation ist, benötigen wir für die Implementierung der OWIN-Spezifikationen eine konkrete Implementierung. Hier kommt Katana ins Spiel. Katana ist ein Satz von Open-Source-Owin-Komponenten, die von Microsoft erstellt wurden. Es wird zum Erstellen von OWIN-basierten Webanwendungen verwendet .

Wie wir bereits gesehen haben, kommuniziert der Host vor dem Laden des Servers mit unserer Anwendung. Host benötigt Informationen aus unserer Anwendung zum Erstellen der OWIN-Pipeline. Diese Pipeline wird zur Bearbeitung unserer Anfrage verwendet.

2
Tahir77667