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 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:
- Ein Fahrzeug muss 4 Räder haben
- Ein Fahrzeug muss eine Lenkung haben.
- 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 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:
- Inventar abrufen
- DELETE Inventory ID = 4
- PUT Inventory ID = 5
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.