Ich bin neu bei OWIN und Katana. Ich verstehe wirklich nicht, warum ich OWIN verwenden sollte, solange ich es verwenden kann IIS
. Zur Vereinfachung lautet meine Frage: Was verliere ich, wenn ich das Lernen von OWIN überspringe und IIS für meine Websites verwende?
Ich habe gegoogelt, aber es gibt keine einfache Erklärung. Es gibt einige Informationen hier , aber sie verwenden einige Jargonphrasen, so dass ich sie nicht verstehen kann.
Antworten:
In asp.net WebApi v2 wird die OWIN-Pipeline zum Standard. Es wird schließlich die Standard-Pipeline unter jedem asp.net-Projekt sein.
Ich kann es nicht besser ausdrücken als das, was hier geschrieben steht: http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana
Der Abschnitt "Das offene Webinterface für .NET (OWIN)" erläutert die Ziele von OWIN perfekt.
Ohne OWIN sind die asp.net-Bits an die Art und Weise gekoppelt, wie IIS mit der Anwendung kommuniziert. OWIN abstrahiert Webserver und Framework-Komponenten. Das bedeutet, dass Ihr Anwendungscode jetzt die OWIN-Schnittstelle kennt, nicht jedoch den Webserver, der die Anforderung bedient.
Im Gegenzug können Anwendungen einfacher zwischen Hosts und möglicherweise ganzen Plattformen / Betriebssystemen portiert werden. Zum Beispiel ermöglicht die Möglichkeit, eine Anwendung in einer Konsole oder einem beliebigen Prozess zu hosten, Mono, sie ohne Aufwand zu hosten ... (Raspberry Pi jedermann)
Der zweite Aspekt ist, dass es als Pipeline funktioniert.
Sie können alle Middlewares (und so viele wie Sie möchten) zwischen dem Webserver und Ihrer Anwendung anschließen.
Dies ermöglicht modularere Lösungen. Sie können weiterverteilbare Middlewares entwickeln, die sich auf die Anforderung / Antwort auswirken können, die zu / von Ihrer Anwendung kommt. Halten Sie diese Module jedoch vom Anwendungscode getrennt.
Um sich von den Vorteilen dieses modularen Ansatzes zu überzeugen, werfen Sie einen Blick auf die für OWIN verfügbaren Nuget-Pakete: http://www.nuget.org/packages?q=owin
Viele dieser Pakete waren zuvor Kernfunktionen von asp.net und wurden als Middleware extrahiert.
Das Hinzufügen von Unterstützung zur Anmeldung mit verschiedenen OAuth-Anbietern wird beispielsweise zu einem Infrastrukturproblem (einer Middleware) und muss nicht mehr Teil Ihres Anwendungscodes sein:
...
Oder wenn Sie automatisch alle Bilder Ihrer Website durch niedliche Katzenbilder ersetzen möchten, können Sie dies auch transparent tun:
https://github.com/serbrech/Owin.Catify
EDIT: Es ist jetzt als Nuget-Paket erhältlich: Owin.Catify !
quelle
Ja, das ist richtig. OWIN ist eine Schnittstelle und Katana ist eine Implementierung der OWIN-Schnittstelle von Microsoft . Daher hören wir diese beiden Wörter (OWIN / KATANA) zusammen und oft verwechseln wir den Unterschied zwischen diesen beiden Begriffen. Katana ist also die Implementierung der OWIN-Schnittstelle durch Microsoft. Angenommen, es gibt eine andere Firma namens BIG-BOSS, die eine eigene Implementierung von OWIN erstellen wollte. Sie können dies tun und ihre Implementierung als "BATANA" bezeichnen und Phrasen wie OWIN / BATANA bewerben.
Also, warum OWIN !!!
Denken Sie an ein Land, in dem das einzige Fahrzeug, das zur Bewegung zur Verfügung steht, ein LKW ist. Nichts anderes. Wenn Sie ein Fahrzeug kaufen möchten, würden Sie LKW kaufen. Früher war das gut, aber die Leute begannen zu begreifen, dass sie nicht immer einen Lastwagen brauchen, besonders wenn sie einen Film sehen oder Milch kaufen wollen. Das Fahren eines schweren Lastwagens kostet nicht nur viel Kraftstoff, sondern auch Stress beim Fahren hinzufügen. Aber ja, wenn sie viele schwere Sachen tragen wollen, erfüllt der LKW den Zweck sehr gut.
Dann hat die Regierung dieses Landes eine Spezifikation für Fahrzeughersteller ausgearbeitet. Die Spezifikation ist wie folgt:
Basierend auf diesen Spezifikationen kann jeder ein Fahrzeug nach unterschiedlichen Anforderungen herstellen und sein Fahrzeug entsprechend benennen. Daher tauchten Limousine, Pickup, SUV, VAN usw. auf dem Markt auf. Wenn jemand nicht die ganze Zeit schwere Sachen tragen muss, sondern nur ein Fahrzeug braucht, um zum Arbeitsplatz zu gehen, kann er / sie eine kleine Limousine kaufen. Jemand kann SUV kaufen, wenn er wenig mehr Leistung benötigt.
Anhand des obigen Beispiels können wir sagen, dass unsere ASP.NET-Webanwendung System.Web Assembly verwendet, das stark ausgelastet ist (wie ein LKW), und wenn wir eine kleine Webanwendung erstellen möchten, bei der unser Zweck nur darin besteht, einige Dateien basierend bereitzustellen Bei einigen Anfragen müssen wir diese schwere System.Web-Baugruppe (LKW) verwenden. Jetzt taucht OWIN auf. OWIN ist eine Reihe von Spezifikationen (wir können sie als Schnittstelle bezeichnen), die einen Server definieren. Basierend auf dieser Spezifikation kann jemand (wie ein Fahrzeughersteller) verschiedene Arten von Servern basierend auf bestimmten Problemdomänen / Anwendungsanforderungen herstellen. Microsoft hat auf die gleiche Weise eine eigene Implementierung für OWIN mit dem Namen Katana erstellt, die die Web-API bedienen kann. Da WebAPI eine leichte Technologie ist, die keine vollständigen System.Web-Dinge benötigt,
Wenn Sie jetzt fragen: „ Brauche ich es?'? Die Antwort lautet: "Es hängt von Ihrem Leistungsbedarf ab." Wenn es Ihnen nichts ausmacht, mit Ihrem LKW zu fahren, auch wenn Sie sich einen Film ansehen, brauchen Sie OWIN vielleicht nicht. Aber wenn Sie das Gefühl haben, ist ein leichtes Limousinenauto alles, was Sie brauchen, um in einer Stadt, in geringer Entfernung, im Film usw. zu fahren. Ja, Sie können überprüfen, welche Implementierungen von OWIN auf dem Markt erhältlich sind. Katana ist eine der Implementierungen von OWIN, daher können Sie überprüfen, was Katana bietet. Nicht nur Katana, wenn ein anderes Unternehmen OWIN gemäß einer bestimmten Domäne implementiert (z. B. ein Server für Medizinprodukte, auf dem die neuesten Arzneimittelinformationen heruntergeladen werden), und wenn Sie Arzt sind, können Sie möglicherweise die Implementierung von OWIN überprüfen. Darüber hinaus können Sie selbst eine eigene Implementierung von OWIN erstellen, die auf eine bestimmte Nische ausgerichtet ist.
In Bezug auf Webanwendungen müssen Sie sich als einfacher Webentwickler, der benutzerdefinierte Websites für Ihre Kunden entwickelt, möglicherweise nicht um die benutzerdefinierte Implementierung von OWINs kümmern, da IIS Sie in ausgewogener Weise bedient. Wenn Sie ein Web-API-Projekt erstellen, erhalten Sie eine Katana-basierte Vorlage aus Visual Studio -> Neues Projekt, sodass Sie sich nur um das Erlernen von Katana-spezifischen Techniken kümmern müssen. Derzeit ist Katana nicht ausgereift genug, um die Notwendigkeit von IIS für ASP.NET MVC vollständig zu ersetzen, aber möglicherweise wird dies in Zukunft der Fall sein.
Wann muss ich dann möglicherweise meine eigene OWIN-Implementierung schreiben?
Antwort: Angenommen, Sie haben eine Windows-Anwendung entwickelt, die als Server im Hintergrund ausgeführt werden und eine Portnummer XXXX abhören soll. Ihr Server antwortet nur auf einige der folgenden Anfragen:
Das ist alles. Und sonst nichts. Warum benötigen Sie für diese kleine Aufgabe einen vollständigen IIS-Webserver? In diesem Fall können Sie Ihre eigene OWIN-Implementierung erstellen. (Vielleicht benutzt du dafür Katana)
Ok, ich habe verstanden, dass ich, wenn ich eine ASP.NET MVC-Website erstellen möchte, nicht die Möglichkeit habe, IIS zu ersetzen. Warum sollte ich dann in diesem Moment etwas über Katana wissen müssen?
Antwort: Auch wenn Katana nicht ausgereift genug ist, um die Notwendigkeit von IIS zu ersetzen, sodass Sie Ihre ASP.NET MVC-Website direkt auf Katana hosten können, hat Katana viele coole Schnittstellen von OWIN implementiert, damit Sie die Vorteile dieser Funktionsseite nutzen können nebeneinander. Zum Beispiel war es vorher nicht sehr einfach, Ihren Benutzern die Anmeldung über Facebook, Google, Twitter usw. zu ermöglichen. Katana bietet Ihnen viele Hooks (als Middleware), sodass Sie Katana die externe Authentifizierung auf Social Media-Basis problemlos durchführen lassen können, ohne Installationscode schreiben zu müssen. Die Verwendung von Katana bietet viele weitere Vorteile, die Sie möglicherweise feststellen, wenn Sie diese Technologie einsetzen.
quelle
what is lightweight part, i mean if Katana is compared to IIS, by which means it is lightweight ( say it does not do step#1,2,3 etc.. , but IIS does that.
Eine einfachere Version dieser Antwort ist, dass Katana die System.Web-Assembly und die alte ASP.NET-Pipeline vollständig ersetzen wird, was Ihnen sowohl eine bessere Flexibilität (verwenden Sie sie in mehr Szenarien und verwenden Sie nur die Teile, die Sie mögen) als auch Leistung bietet.
Daher sollte jeder jetzt seine Entwicklung beobachten und bereit sein, zu wechseln, wenn es endlich abgeschlossen ist.
Unten sehen Sie ein Diagramm, das ich gezeichnet habe, um die Details zu ergänzen, die Microsoft in diesem Artikel nicht berücksichtigt .
OWIN ist ein solcher Standard, dass Anwendungsframeworks darauf ausgeführt werden und alles darunter vergessen wird. Andererseits verwendet OWIN selbst verschiedene Hostadapter, um sicherzustellen, dass es mit den zugrunde liegenden Webservern (IIS und vielen anderen) kommunizieren kann.
Ich arbeite jetzt mit dem Autor des Jexus-Webservers zusammen, um zu untersuchen, wie wir einen Hostadapter schreiben können, um OWIN / Katana und Jexus zu verbinden. Wir freuen uns sehr, dass OWIN flexibel und hochgradig anpassbar ist.
Referenz: http://blog.lextudio.com/2014/06/why-owin-matters-a-lot-for-asp-net-developers/
quelle
System.Web
.OWIN wurde entwickelt, um Webserver von den Frameworks zu entkoppeln, unter denen Sie arbeiten. Es kann die Anwendungen leicht und portabel für die Mixing-Frameworks und Server machen.
Und Katana ist die Implementierung von OWIN-Komponenten durch Microsoft.
Seit einigen Jahren macht Microsoft Web-Tools agiler und reaktionsschneller, während der Plan voranschreitet. Zum Beispiel die Entwicklung von ASP.Net MVC und ASP.Net Web API. Sie hängen nicht von System.Web dll ab, was eine große Belastung ist, die sie jetzt fühlen, denke ich. Vorteil ist, dass beide Entwicklungen zeitnah behoben werden können und der Zyklus schneller als je zuvor ist. Entwickler können diese Anwendungen jetzt auch auf benutzerdefinierten OWIN-Hosts oder auf Katana bereitstellen, was eine Referenz für die OWIN-Implementierung ist.
Was ist der Sinn schließlich?
Microsoft hat ein Projekt namens "Helios" veröffentlicht, bei dem es sich um einen leichtgewichtigen OWIN-basierten Webhost auf IIS handelt. Ziel ist es, die ASP.NET / IIS-Beziehung zu vermeiden, indem einige unabhängige kleine Komponenten bereitgestellt werden, die unabhängig voneinander auf einem Webhost verwendet, installiert und verwaltet werden können, der die OWIN-Spezifikationen implementiert.
Einer der Hauptgründe ist der Leistungsfaktor. Helios kann einen 2x-3x höheren Durchsatz als die Standard-ASP.Net-Anwendung erzielen. In Bezug auf den Speicherverbrauch ist Helios viel besser als die System.Web-DLL. In einem Benchmark ermöglichte die Helios-Architektur einer Beispielanwendung, 50000 gleichzeitige Anforderungen mit ungefähr 1 GB weniger Overhead im Vergleich zu einer Standard-ASP.Net-Anwendung zu erreichen.
quelle
OWIN ist eine Abstraktion zwischen der Webanwendung und der Hosting-Plattform. Wenn Sie Ihre Webanwendung mit OWIN schreiben, sind Sie nicht an IIS gebunden. Sie können auch einen anderen Host verwenden, wenn Sie möchten.
Sie haben gefragt, warum Sie OWIN anstelle von IIS verwenden, aber dies sind keine Alternativen zueinander. OWIN befindet sich zwischen IIS und Ihrer Anwendung, sodass Sie IIS ausschalten können, ohne Ihre Anwendung neu schreiben zu müssen.
Vielleicht möchten Sie auch diese Seite https://github.com/Bikeman868/OwinFramework/wiki/OWIN besuchen
quelle