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 einer ASP.NET-Anwendung aufgrund der starken Abhängigkeit von der System.Web
Assembly von Natur aus an IIS gebunden .
System.Web
ist etwas, das seit ASP (Nicht-.NET-Version) existiert und intern viele Dinge enthält, die Sie möglicherweise nicht einmal benötigen (wie Web Forms oder URL-Autorisierung), die standardmäßig bei jeder Anforderung ausgeführt werden, wodurch Ressourcen verbraucht und ASP erstellt werden .NET-Anwendungen sind im Allgemeinen viel langsamer als ihre Gegenstücke wie beispielsweise Node.js.
OWIN selbst hat keine Tools, Bibliotheken oder sonst etwas. Es ist nur eine Spezifikation.
Katana hingegen ist ein vollständig entwickeltes 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:
ASP.NET MVC und Web Forms werden weiterhin ausschließlich über System.Web ausgeführt, und auf lange Sicht ist geplant, diese ebenfalls zu entkoppeln.
Andererseits ist IIS ein guter, einfallsreicher Host für Webserver. Ganze ASP.NET-Leistungsprobleme mit IIS haben nur tiefe Wurzeln System.Web
. Bis vor kurzem hatten Sie bei der Entscheidung, wie Sie Ihren Webserver hosten möchten, zwei Möglichkeiten:
Wenn Sie also eine Aufführung wünschen, entscheiden Sie sich für eine Selbsthost-Option. Wenn Sie viele sofort einsatzbereite Funktionen von IIS wünschen, würden Sie sich für IIS entscheiden, aber an Leistung verlieren.
Jetzt gibt es eine dritte Option, eine Microsoft-Bibliothek namens Helios (aktueller Codename), die System.Web
aus dem Weg geräumt werden soll und die es Ihnen ermöglicht, IIS "sauberer" zu verwenden, 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.
EDIT (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 ist. Zitat aus dem Forumsbeitrag von David Fowler (Architekt von ASP.NET vNext):
vNext ist der Nachfolger von Katana (weshalb sie so ähnlich aussehen). Katana war der Beginn der Abkehr von System.Web und modulareren Komponenten für den Webstack. Sie können vNext als Fortsetzung dieser Arbeit sehen, aber viel weiter gehen (neue CLR, neues Projektsystem, neue http-Abstraktionen).
Alles, was heute in Katana existiert, wird seinen Weg in vNext finden.
BEARBEITEN (Februar 2015):
ASP.NET vNext wird jetzt als ASP.NET 5 bezeichnet und basiert auf .NET Core 5. .NET Core 5 ist eine leichtgewichtige faktorisierte 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 lizenziert und akzeptieren Community-Beiträge.
EDIT (Mai 2015):
Darüber hinaus wird die Marke ASP.NET Web API eingestellt, die Technologie basiert jedoch auf dem neuen ASP.NET MVC 6. Frühere ASP.NET MVC-Versionen wurden durch Implementierung von IHttpHandler, einer in definierten Schnittstelle, erstellt System.Web
. ASP.NET MVC 6 entfernt diese Abhängigkeit und macht sie auf verschiedene Plattformen und Webserver portierbar.
EDIT (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 Gründen dafür finden Sie in Scott Hanselmans Blog-Beitrag:
ASP.NET 5 ist tot - Einführung in ASP.NET Core 1.0 und .NET Core 1.0
EDIT (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 verfolgt hat. Weitere Informationen zu finden Sie im offiziellen Blog-Beitrag:
Ankündigung von ASP.NET Core RC2