Open Web Interface for .NET
Open Web Interface for .NET (OWIN) ist eine standardisierte Schnittstelle zwischen .NET-Anwendungen und Webservern.
Hintergrund
ASP.NET basierte ursprünglich auf Schnittstellen des Internet Information Services (IIS). Hierdurch konnten ASP.NET Anwendungen jedoch nicht durch andere Webserver gehostet werden.
Die Mono-Community implementierte mit XSP einen eigenen Server, welcher zu ASP.NET kompatibel war und auf Linux und Unix Systemen lauffähig ist.
OWIN definiert – analog zu Servlets – eine Schnittstelle, welche .NET Anwendungen von IIS entkoppelt. Hierdurch sind ASP.NET Anwendungen, welche auf OWIN aufsetzen, mit allen Webservern kompatibel, welche die OWIN-Schnittstelle implementieren. Hierzu gehören der Apache HTTP Server und nginx. Zudem bietet Microsoft mit Kestrel eine Implementierung der OWIN-Schnittselle an, um self-hosting zu ermöglichen.
Katana
Microsoft Katana (auch: Project Katana) ist eine Bibliothek von Objekten und OWIN-Komponenten, welche den Umgang mit der OWIN-Schnittstelle erleichtern.
OWIN Middleware
OWIN definiert ein Pipes und Filter-Modell, in das Middleware-Komponenten eingehängt werden. Jede dieser Komponenten arbeitet hierbei als Filter und kann auf die Request- und Response-Objekte zugreifen und diese verändern.
Beispielsweise werden Infrastruktur-Zuständigkeiten wie die Verschlüsselung, Authentifizierung und Authentifizierung als Middleware implementiert werden. Auch das Ausliefern statischer Dateien, ASP.NET MVC (ab Version 5), ASP.NET Core und ASP.NET SignalR sind als Middleware-Komponenten implementiert.