Comment expliquer Katana et OWIN avec des mots et des usages simples?

337

J'ai lu de nombreux articles sur les projets OWIN et Katana, mais je n'ai pas pu en avoir une vue d'ensemble.

Pour un développeur Web normal qui utilise ASP.NET:

  1. Qu'est-ce que OWIN et quels sont les problèmes qu'il résout (en termes simples). Quelle est sa relation avec IIS?
  2. OWIN remplace-t-il IIS? sinon, dans quelles situations OWIN convient-il le mieux?
  3. Comment OWIN pourrait-il m'aider dans mes projets de travail quotidiens?
  4. Comment OWIN pourrait-il m'aider dans un projet d'auto-amélioration?
Ebram Khalil
la source
Vous pourriez envisager de changer la réponse acceptée, car peu de puces ne sont pas vraiment correctes - trompeuses.
Admir Tuzović
3
Mon livre sur ASP.net suggère d'implémenter Identity et la classe UserManager via OWIN et je ne vois vraiment pas l'intérêt. Ça m'a laissé complètement confus ...
Luke

Réponses:

409

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.Webassembly.

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:

  • API Web
  • Signal R

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.Webuniquement. Jusqu'à une date récente, pour décider comment allez-vous héberger votre serveur Web, vous aviez deux options:

  • IIS
  • Auto-hôte

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

Admir Tuzović
la source
2
@ebramtharwat Maintenant, un an plus tard, il ne semble pas que Helios soit une chose
Andrew Savinykh
1
Vous avez mentionné que Katana v3 sera probablement la dernière version majeure, donc à l'avenir, quel cadre sera utilisé pour remplacer Katana?
Vincent
2
Les fonctionnalités de Katana ont été intégrées dans ASP.NET 5. Katana continuera d'exister pour une compatibilité ascendante.
Admir Tuzović
2
@ AdmirTuzović: excellente réponse. Avez-vous d'autres mises à jour à ajouter depuis mai 2016?
Igby Largeman
2
La réponse initiale avec les modifications suivantes explique très bien les transitions. Merci pour l'effort.
Sang Suantak
71

Si je dois définir OWIN pour moi-même, ce serait: "Les meilleures idées des communautés de développeurs Web Ruby et Node.js, à venir sur .NET"

Mais cela n'aiderait aucun développeur ASP.NET. Ma propre définition serait quelque chose comme:

OWIN définit une interface standard entre les serveurs Web .NET et les applications Web. Le but de l'interface OWIN est de découpler serveur et application. Si je dois répondre aux questions que vous avez posées, alors voici:

  1. OWIN est une spécification d'interface. Il dissocie une application Web d'IIS.

  2. Si vous utilisez des composants prêts à l'emploi (ce qu'est Katana), certaines parties des fonctionnalités de l'application sont beaucoup plus faciles à mettre en œuvre par rapport à l'ancien ASP.NET. L'authentification auprès de fournisseurs d'identité tiers (Facebook, Twitter) en est un exemple.

  3. OWIN est essentiellement une collection de meilleures pratiques, qui ont fait leurs preuves dans les communautés de développement Web. Il montre un moyen de mettre en œuvre des applications Web très ouvertes à l'extensibilité. Étant donné que chaque développeur Web doit être constamment à la pointe des nouvelles technologies, c'est une façon de rester à jour avec l'ensemble de la communauté de développement Web et pas seulement avec .NET. Si vous apprenez OWIN, il serait beaucoup plus facile d'apprendre d'autres cadres de développement Web comme Express pour node.js ou Rack pour Ruby, car les pratiques qu'ils utilisent sont similaires.
Slavo
la source
1
Cet article pourrait tout aussi bien aider à se faire une idée des problèmes historiques résolus par OWIN / katana: asp.net/aspnet/overview/owin-and-katana/… . Cela dit, seuls ces cadres sont actuellement pris en charge sur l'hôte OWIN : owin.org/#projects . Si votre application utilise l'un de ces cadres d'application, cela peut être hébergé sur OWIN.
Praburaj
Pouvez-vous publier ici la séquence des demandes entrantes du navigateur au point de réponse restituant le navigateur lorsque j'utilise owinhost.exe. Je n'ai pas pu trouver de document dans ce sujet.
Saravanan
2
Les points 1 et 2 sont trompeurs, OWIN ne peut rien remplacer par lui-même. Comme le point 4, ce n'est qu'une spécification qui nécessite une implémentation, les implémentations de référence de Microsoft étant jusqu'à présent Katana et Helios.
Mani Gandham
Les meilleures idées des communautés de développeurs Web Ruby et Node.js, qui arrivent sur .NET .... peuvent en énumérer quelques-unes \
Lakshay
1
Middleware. Découpler l'application de l'environnement d'hébergement pour les rendre enfichables.
Slavo
59

Je vais essayer de le couvrir du point de vue pratique.

Katana est le nom du projet pour implémenter OWIN dans Microsoft .

Qu'est-ce que OWIN et quels sont les problèmes qu'il résout (en termes simples). Quelle est sa relation avec IIS? OWIN ( Open Web Interface for .NET ) est une norme ( spécification OWIN ) et Katana est une bibliothèque .NET, vous pouvez obtenir un nuget à partir d'ici . OWIN et Katana sont devenus quelque peu synonymes sur le Web.
Avant OWIN, votre seule option était IISavec OWIN, vous pouvez utiliser n'importe quelle autre application (qui a un point d'entrée) comme serveur Web.

OWIN remplace-t-il IIS? sinon, dans quelles situations OWIN convient-il le mieux?
Non, il ne remplace pas IIS, vous pouvez utiliser OWIN et IIS, il y a un Microsoft.Owin.Host.SystemWebnuget pour cela . Il convient mieux si vous souhaitez optimiser / modifier la façon dont il est géré dans IIS, ou si vous souhaitez créer votre serveur Web personnalisé à partir, disons, de l'application Windows Forms.

Comment OWIN pourrait-il m'aider dans mes projets de travail quotidiens?
Cela pourrait réduire les coûts de fonctionnement de votre serveur car vos serveurs Web n'ont plus besoin de fonctionner sur IIS (Windows) (les serveurs Windows sont plus chers que ceux basés sur Unix, et vous pouvez l'exécuter sur l'application console sous Mono sous Linux).

Comment OWIN pourrait-il m'aider dans un projet d'auto-amélioration?
L'apprentissage Microsoft.Owin(et d'autres bibliothèques OWIN connexes) améliorera vos connaissances sur le fonctionnement de la communication HTTP entre le client et le serveur Web.

Bonne lecture si vous voulez en savoir plus sur ce qu'est Katana et OWIN.

Matas Vaitkevicius
la source
6
Bravo et merci d'avoir répondu directement aux questions posées plutôt que de vous aventurer sur la voie tangentielle.
Dav
Et si nous utilisons toujours un serveur compatible Microsoft IIS pour l'hébergement? Il semble que OWIN soit par défaut dans les nouveaux modèles WebApi2. Dois-je le supprimer comme référence si je prévois d'héberger dans IIS uniquement / toujours?
TechTurtle
@TechTurtle Salut Tech, je recommanderais de le poster comme une question distincte.
Matas Vaitkevicius
Explication très claire. Merci pour les informations utiles
Uttam
9

Qu'est-ce que OWIN?

OWIN signifie Open Web Interface for .NET. OWIN est une spécification qui décrit comment les frameworks de développement Web tels que ASP.NET MVC doivent interagir avec les serveurs Web. Le but de OWIN est de découpler les applications Web du serveur Web en introduisant une couche d'abstraction. Une telle abstraction vous permet d'exécuter la même application sur tous les serveurs Web prenant en charge OWIN. De plus, il simplifie le système global car la couche d'abstraction peut fournir une infrastructure légère pour héberger les applications. IIS fournit un riche ensemble de fonctionnalités aux applications Web. Cependant, les applications Web peuvent ne pas avoir besoin de toutes ces fonctionnalités. Il pourrait leur être suffisant d'avoir des capacités de traitement HTTP minimales. L'hôte compatible OWIN peut fournir un tel environnement d'hébergement à ces applications. De plus, vous pouvez définir un pipeline de modules utilisés lors du traitement de la demande. Un pipeline OWIN est une chaîne de composants compatibles OWIN à travers laquelle passe une demande.

Qu'est-ce que Katana?

Katana est un ensemble de composants de Microsoft construits selon les spécifications OWIN. Certains de ces composants incluent l'API Web, ASP.NET Identity et SignalR.

Ci-dessus est extrait de l'article CodeGuru: http://www.codeguru.com/csharp/.net/net_asp/overview-of-owin-and-katana.htm

Venkatesh Muniyandi
la source