wake-up-neo.com

Wann sollte ich OWIN Katana verwenden?

Ich bin neu bei OWIN und Katana. Ich verstehe wirklich nicht, warum ich OWIN verwenden soll, während ich IIS verwenden kann. 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 es nicht verstehen kann.

267

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 Open Web Interface für .NET (OWIN)" erklärt 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 , aber nicht von dem Webserver, der die Anfrage bearbeitet.

Im Gegenzug können Anwendungen einfacher zwischen Hosts und möglicherweise ganzen Plattformen/Betriebssystemen portiert werden. Die Möglichkeit, eine Anwendung in einer Konsole oder in einem beliebigen Prozess zu hosten, ermöglicht es Mono beispielsweise, sie mühelos zu hosten ... (Raspberry Pi jedermann)

Der zweite Aspekt ist, dass es als Pipeline funktioniert.


Owin Pipeline


Sie können beliebige (und beliebig viele) Middlewares zwischen den Webserver und Ihre Anwendung stecken.
Dies ermöglicht modularere Lösungen. Sie können weiterverteilbare Middlewares entwickeln, die sich auf die Anforderung/Antwort auswirken können, die von/zu Ihrer Anwendung kommt. Halten Sie diese Module jedoch vom Anwendungscode getrennt.

Werfen Sie einen Blick auf die für OWIN verfügbaren Nuget-Pakete, um sich von den Vorteilen dieses modularen Ansatzes zu überzeugen: http://www.nuget.org/packages?q=owin

Viele dieser Pakete waren zuvor Kernfunktionen von asp.net und wurden als Middleware extrahiert.
Zum Beispiel wird das Hinzufügen von Support zum Login über verschiedene OAuth Anbieter zu einem Infrastrukturproblem (einer Middleware) und muss nicht mehr Teil Ihres Anwendungscodes sein:

Oder wenn Sie alle Bilder Ihrer Website automatisch durch niedliche Katzenbilder ersetzen möchten, können Sie dies auch transparent tun:

https://github.com/serbrech/Owin.Catify

BEARBEITEN: Es ist jetzt als Nuget-Paket erhältlich: Owin.Catify !

275
Stéphane
public interface OWIN
{
   void ListenHttpCallAndServeWebPage();    
}

namespace Microsoft.OWIN
{
   public class Katana : OWIN
   {
      public void ListenHttpCallAndServeWebPage()
      {
         // listen to a port for HTTP call and serve web page
      } 
   }
}

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 die Unterschiede zwischen diesen beiden Begriffen. Katana ist also die Implementierung der OWIN-Schnittstelle von Microsoft. Angenommen, es gibt ein anderes Unternehmen namens BIG-BOSS, das eine eigene Implementierung von OWIN erstellen möchte. 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 nur ein Lastwagen für die Fortbewegung zur Verfügung steht. Nichts anderes. Wenn Sie ein Fahrzeug kaufen möchten, würden Sie LKW kaufen. Früher hat das gut funktioniert, aber die Leute haben gemerkt, dass sie nicht ständig Lastwagen brauchen, besonders wenn sie einen Film schauen oder Milch kaufen wollen. Das Fahren eines schweren Lastwagens kostet nicht nur viel Kraftstoff, sondern auch Mehr Stress beim Fahren. Aber ja, wenn sie viel schweres Zeug transportieren 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:

  1. Ein Fahrzeug muss 4 Räder haben
  2. Ein Fahrzeug muss eine Lenkung haben.
  3. Ein Fahrzeug muss Scheinwerfer und Signalleuchten haben.

Basierend auf diesen Spezifikationen kann jeder ein Fahrzeug nach unterschiedlichen Anforderungen herstellen und sein Fahrzeug entsprechend benennen. Daher tauchten auf dem Markt Limousinen, Pickups, SUVs, VANs usw. alle Arten von Fahrzeugen auf. Wenn jemand nicht ständig schwere Sachen tragen muss, sondern nur ein Fahrzeug zum Arbeiten braucht, kann er sich eine kleine Limousine kaufen. Jemand kann einen SUV kaufen, wenn er etwas mehr Strom braucht.

Anhand des obigen Beispiels können wir sagen, dass unsere ASP.NET-Webanwendung System.Web Assembly verwendet, das stark ausgelastet ist (wie ein Lastwagen), und wenn wir eine kleine Webanwendung erstellen möchten, deren Zweck es ist, nur einige Dateien basierend bereitzustellen Auf einige wenige Anfragen werden wir diese schwere System.Web Assembly (LKW) verwenden. Nun erscheint OWIN. OWIN ist eine Reihe von Spezifikationen (wir können sie Schnittstelle nennen), die einen Server definieren. Basierend auf dieser Spezifikation kann jemand (wie ein Fahrzeughersteller) verschiedene Arten von Servern basierend auf spezifischen Problemdomänen/Anwendungsanforderungen herstellen. Microsoft hat auf die gleiche Weise eine eigene Implementierung für OWIN namens Katana erstellt, die für die Web-API verwendet werden kann. Da es sich bei WebAPI um eine leichte Technologie handelt, für die kein vollständiges System.Web-System erforderlich ist, kann eine leichte Serverimplementierung (wie Katana) die Leistung erheblich steigern, wenn Sie auf Katana gehostete Web-API verwenden.

Nun, wenn Sie fragen, "brauche ich es"? Die Antwort lautet: "Es hängt von Ihrem Leistungsbedarf ab." Wenn es Ihnen nichts ausmacht, mit Ihrem Truck zu fahren, auch wenn Sie einen Film sehen wollen, brauchen Sie vielleicht OWIN nicht. Aber wenn Sie das Gefühl haben, dass ein leichtes Limousinenauto alles ist, was Sie brauchen, um in einer Stadt zu fahren, eine kurze Strecke zu fahren, einen Film anzusehen usw. 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 anbietet. Nicht nur Katana, wenn ein anderes Unternehmen OWIN gemäß einer bestimmten Domäne implementiert (z. B. einen Server für Medizinprodukte, auf den die neuesten medizinischen Informationen heruntergeladen werden), und wenn Sie ein Arzt sind, können Sie möglicherweise die Implementierung von OWIN überprüfen. Darüber hinaus können Sie selbst eine Implementierung von OWIN erstellen, die auf eine bestimmte Nische abzielt.

Wenn Sie in Bezug auf Webanwendungen ein einfacher Webentwickler sind und benutzerdefinierte Websites für Ihre Kunden entwickeln, müssen Sie sich möglicherweise nicht um die benutzerdefinierte Implementierung von OWINs kümmern, da Ihnen IIS dient Wenn Sie ein Web-API-Projekt erstellen, erhalten Sie eine Katana-basierte Vorlage, die in Visual Studio -> Neues Projekt erstellt wurde, sodass Sie sich nur um das Erlernen von Katana-spezifischen Techniken kümmern müssen ist nicht ausgereift genug, um die Notwendigkeit für IIS für ASP.NET MVC vollständig zu ersetzen, aber vielleicht wird es in Zukunft.

Wenn ich dann möglicherweise meine eigene OWIN-Implementierung schreiben muss?

Antwort: Nehmen wir an, Sie haben eine Windows-Anwendung entwickelt, die als Server im Hintergrund ausgeführt werden und eine Portnummer XXXX abhören soll. Ihr Server wird nur auf einige Anfragen wie diese antworten:

  1. GET Inventory
  2. LÖSCHEN Inventar ID = 4
  3. PUT Inventory ID = 5

Das ist alles. Und sonst nichts. Warum brauchen Sie einen vollständigen IIS Webserver für diese kleine Aufgabe? In diesem Fall können Sie Ihre eigene OWIN-Implementierung erstellen. (Vielleicht verwenden Sie dafür Katana.)

Ok, also habe ich verstanden, dass ich keine Möglichkeit habe, IIS zu ersetzen, wenn ich eine ASP.NET MVC-Website erstellen möchte. Warum sollte ich dann in diesem Moment etwas über Katana wissen müssen?

Antwort: Obwohl Katana nicht ausgereift genug ist, um die Notwendigkeit von IIS zu ersetzen, damit Sie Ihre ASP.NET MVC-Website direkt auf Katana hosten können, hat Katana viele coole Schnittstellen von OWIN implementiert, damit Sie Sie können diese Funktionen nebeneinander nutzen, zum Beispiel war das Anmelden Ihrer Benutzer über Facebook, Google, Twitter usw. vorher nicht ganz einfach. Katana bietet Ihnen viele Hooks (als Middleware), die Sie zulassen können Katana kümmert sich mühelos um die externe Authentifizierung auf Social Media-Basis, ohne dass Sie einen Installationscode schreiben müssen.

206
Emran Hussain

Eine einfachere Version dieser Antwort ist, dass Katana System.Web Assembly und die alte ASP.NET-Pipeline vollständig ersetzt, wodurch Sie sowohl flexibler (in mehr Szenarien verwenden und nur die Teile verwenden, die Sie mögen) als auch leistungsfähiger sind.

Deshalb sollte jeder seine Entwicklung jetzt beobachten und bereit sein, zu wechseln, wenn es endlich fertig ist.

Unten ist ein Diagramm, das ich gezeichnet habe, um die Details auszufüllen, die Microsoft in in diesem Artikel nicht berücksichtigt.

enter image description here

OWIN ist ein solcher Standard, dass Anwendungsframeworks darauf ausgeführt werden und alles darunter vergessen. Andererseits verwendet OWIN selbst verschiedene Host-Adapter, 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 Host-Adapter schreiben können, um OWIN/Katana und Jexus zu verbinden. Wir freuen uns sehr, dass OWIN flexibel und in hohem Maße anpassbar ist.

Referenz: http://blog.lextudio.com/2014/06/why-owin-matters-a-lot-for-asp-net-developers/

45
Lex Li

Warum sollte ich OWIN verwenden, während ich IIS verwenden kann?

OWIN wurde entwickelt, um Webserver von den Frameworks zu entkoppeln, unter denen Sie arbeiten. Es kann die Anwendungen leicht und portabel für das Mischen von Frameworks und Servern machen.

Und Katana ist Microsofts Implementierung von OWIN-Komponenten.

In den letzten Jahren hat Microsoft die Webtools flexibler und reaktionsschneller gemacht, während der Plan fortschreitet. Ein Beispiel ist die Entwicklung von ASP.Net MVC und ASP.Net Web API. Sie hängen nicht von der System.Web-DLL ab, was eine enorme Belastung darstellt, die sie jetzt empfinden, 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. Dies ist eine Referenz für die OWIN-Implementierung.

Worum geht es überhaupt?

Microsoft hat ein Projekt mit dem Namen `Helios veröffentlicht, das auf IIS auf Basis von OWIN leichtgewichtig ist. Ziel ist es, die ASP.NET/IIS-Beziehung zu vermeiden, indem einige unabhängige kleine Komponenten bereitgestellt werden, die auf einem Webhost, der die OWIN-Spezifikationen implementiert, unabhängig voneinander ausgeführt, installiert und verwaltet werden können.

Einer der Hauptgründe ist der Leistungsfaktor. Helios wird in der Lage sein, einen doppelt bis dreifach höheren Durchsatz als die Standard-ASP.Net-Anwendung zu erzielen. In Bezug auf den Speicherverbrauch ist Helios viel besser als die System.Web-DLL. In einem ermittelten Benchmark erlaubte 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.

14
nznoor

OWIN ist eine Abstraktion zwischen der Webanwendung und der Hosting-Plattform. Wenn Sie Ihre Webanwendung mit OWIN schreiben und nicht an IIS gebunden sind, können Sie einen anderen Host verwenden, wenn Sie möchten.

Sie haben gefragt, warum OWIN anstelle von IIS verwendet wird, aber dies sind keine Alternativen zueinander. OWIN befindet sich zwischen IIS und Ihrer Anwendung, sodass Sie IIS wechseln können, ohne Ihre Anwendung neu zu schreiben.

Vielleicht möchten Sie auch diese Seite lesen https://github.com/Bikeman868/OwinFramework/wiki/OWIN

0
bikeman868