Concernant le commentaire ci-dessus, OWIN n'est pas un cadre. OWIN est une spécification sur la façon dont les serveurs Web et les applications Web doivent être construits afin de les découpler et permettre le déplacement des applications ASP.NET vers des environnements qui n'étaient pas pris en charge auparavant.
Avant OWIN, lors de la création d'une application ASP.NET, vous étiez intrinsèquement lié à IIS en raison de la forte dépendance à l' System.Web
assembly.
System.Web
est quelque chose qui existe depuis ASP (version non .NET) et contient en interne de nombreuses choses dont vous pourriez même ne pas avoir besoin (comme les formulaires Web ou l'autorisation d'URL), qui par défaut s'exécutent toutes à chaque demande, consommant ainsi des ressources et rendant ASP Les applications .NET sont en général beaucoup plus lentes que leurs homologues telles que Node.js par exemple.
OWIN lui-même ne dispose d'aucun outil, bibliothèque ou autre. Ce n'est qu'une spécification.
Katana, d'autre part, est un cadre entièrement développé conçu pour faire le pont entre les cadres ASP.NET actuels et la spécification OWIN. À l'heure actuelle, Katana a adapté avec succès les cadres ASP.NET suivants à OWIN:
ASP.NET MVC et Web Forms s'exécutent toujours exclusivement via System.Web, et à long terme, il est également prévu de les découpler.
D'un autre côté, IIS est un bon hôte plein de ressources pour les serveurs Web. Les problèmes de performances ASP.NET entiers à l'aide d'IIS ont des racines profondes System.Web
uniquement. Jusqu'à une date récente, pour décider comment allez-vous héberger votre serveur Web, vous aviez deux options:
Donc, si vous vouliez une performance, vous opteriez pour une option d'auto-hébergement. Si vous vouliez beaucoup de fonctionnalités prêtes à l'emploi qu'IIS fournit, vous opteriez pour IIS mais vous perdriez sur les performances.
Maintenant, il y a une 3ème option, une bibliothèque Microsoft nommée Helios (nom de code actuel) qui a l'intention de supprimer System.Web
à l'écart et de vous permettre d'utiliser IIS de manière plus "propre", sans bibliothèques ou modules inutiles. Helios est maintenant en version préliminaire et attend plus de commentaires de la communauté afin de le rendre pleinement compatible avec les produits Microsoft.
J'espère que cette explication clarifie mieux les choses pour vous.
EDIT (sept. 2014):
Avec ASP.NET vNext en cours de développement, Katana se retire lentement. La version 3.0 sera probablement la dernière version majeure de Katana en tant que framework autonome.
Cependant, tous les concepts introduits avec Katana sont en cours d'intégration dans ASP.NET vNext, ce qui signifie que le modèle de programmation sera à peu près le même. Citation d'un article de forum rédigé par David Fowler (architecte d'ASP.NET vNext):
vNext est le successeur de Katana (c'est pourquoi ils se ressemblent tellement). Katana a marqué le début de la rupture avec System.Web et vers des composants plus modulaires pour la pile Web. Vous pouvez voir vNext comme une continuation de ce travail mais en allant beaucoup plus loin (nouveau CLR, nouveau système de projet, nouvelles abstractions http).
Tout ce qui existe aujourd'hui à Katana fera son chemin dans vNext.
EDIT (février 2015):
ASP.NET vNext est désormais connu sous le nom d'ASP.NET 5 et sera construit au-dessus de .NET Core 5. .NET Core 5 est une version factorisée légère de .NET Framework, conçue pour prendre en charge les objectifs d'ASP.NET 5 et .NET Native . Cependant, ASP.NET 5 sera également pris en charge par .NET Framework 4.6, qui devrait devenir disponible avec .NET Core 5. ASP.NET 5 et .NET Core 5 seront tous deux sous licence MIT et accepteront les contributions de la communauté.
EDIT (mai 2015):
De plus, la marque de l'API Web ASP.NET sera abandonnée, mais sa technologie sera à la base du nouveau ASP.NET MVC 6. Les versions précédentes d'ASP.NET MVC ont été construites en implémentant IHttpHandler, une interface définie dans System.Web
. ASP.NET MVC 6 supprime cette dépendance, la rendant portable sur diverses plates-formes et serveurs Web.
EDIT (mai 2016):
ASP.NET 5 sera officiellement renommé ASP.NET Core à partir de la version Release Candidate 2 qui devrait être publiée prochainement. Il en sera de même pour Entity Framework 7 qui sera renommé Entity Framework Core. Plus d'informations sur l'annonce officielle et les raisons de cette annonce peuvent être trouvées sur le blog de Scott Hanselman:
ASP.NET 5 est mort - Présentation d'ASP.NET Core 1.0 et .NET Core 1.0
EDIT (mai 2016):
Avec la sortie de Release Candidate 2, ASP.NET Core a été modifié afin que les futures applications Web ne soient en fait que la configuration des applications de console .NET Core pour traiter les demandes HTTP entrantes . Ce concept rend ASP.NET Core encore plus aligné sur l'approche adoptée par Microsoft avec la prise en charge de l'architecture des microservices et son implémentation via Azure Service Fabric. Plus d'informations sur peuvent être trouvées sur le blog officiel:
Annonce d'ASP.NET Core RC2