web-dev-qa-db-fra.com

Distinction entre Kestrel et Katana

Ma compréhension est que vous pouvez actuellement héberger WebAPI en utilisant Katana, et MVC aura cette capacité dans une future version. Essentiellement, Katana sera une option d'hébergement disponible pour MVC et WebAPI.

Kestrel est entré en scène et je vois quelques employés de MS bloguer à ce sujet démontrant l'hébergement d'ASP.NET vNext sur Linux.

Je crois comprendre que Kestrel et Katana mettent en œuvre le pipeline OWIN.

De là, tout est un peu flou. Je me demande pourquoi Kestrel est entré en scène alors qu'il semble que Katana pourrait servir le même objectif si vous le compiliez en mono et que vous vous efforciez de le rendre compatible avec plusieurs plateformes (peut-être plus facile à dire qu'à faire).

Kestrel et Katana servent-ils le même but? Ou l'un est-il spécialisé d'une manière ou d'une autre?

Kestrel sera-t-il finalement un choix viable pour les déploiements Windows? Ou sera-t-il spécialisé pour les environnements non Windows et Katana sera-t-il toujours le choix pour Windows?

Je reconnais que je demande peut-être une comparaison Apple avec les oranges en raison de mon manque de connaissance de Katana/Kestrel, mais si la réponse est "Les oranges ont plus un goût acide que les pommes" alors que l'OMI est une réponse parfaitement valable.

49
AaronLS

Katana est l'implémentation OWIN de Microsoft et comprend également des composants middleware pour la sécurité/authentification, servant des fichiers statiques et quelques autres choses.

Kestrel est le serveur Web de développement multiplateforme de Microsoft qui peut être utilisé avec ASP.NET 5.

ASP.NET 5 n'implémente pas OWIN, mais dispose d'un "pont" pour permettre aux composants OWIN d'être utilisés dans les applications ASP.NET 5, y compris en s'exécutant sur Kestrel.

36
Eilon

Peut-être une vieille question, mais comme une recherche rapide sur Google m'a amené ici, je pense que personne d'autre n'a posé une question similaire.

Citant la documentation ASP.NET 5:

Crécerelle

Kestrel est un serveur Web multiplateforme basé sur libuv, une bibliothèque d'E/S asynchrone multiplateforme. Kestrel est open-source, et vous pouvez afficher la source Kestrel sur GitHub. Vous ajoutez la prise en charge de Kestrel en incluant "Kestrel" dans les dépendances de votre projet répertoriées dans project.json.

Choisir un serveur

Si vous avez l'intention de déployer votre application sur un serveur Windows, vous devez exécuter IIS en tant que serveur proxy inverse qui gère et envoie par proxy les demandes à Kestrel. Si vous déployez sur Linux, vous devez exécuter un proxy inverse comparable serveur tel qu'Apache ou Nginx pour les demandes de proxy à Kestrel.

Pour les scénarios d'auto-hébergement, tels que l'exécution dans Service Fabric, nous vous recommandons d'utiliser Kestrel sans IIS. Cependant, si vous avez besoin de l'authentification Windows dans un scénario d'auto-hébergement, vous devez choisir WebListener.

Donc, ma compréhension est la suivante: si Kestrel n'était qu'un serveur de développement, ce n'est plus le cas et remplace en quelque sorte Katana et OWIN.

11
user2343484

Je n'ai toujours pas une idée claire après avoir lu les autres réponses sous cette question, j'ai donc fait quelques recherches et voici ma conclusion:

  • OWIN est une spécification qui définit une interface de programmation entre un serveur Web (comme Kestrel et ceux fournis par Katana) et une application Web (le code par vous).
  • Kestrel vient d'ASP.NET Core. Il s'agit d'un serveur Web compatible OWIN.
  • Katana vient d'ASP.NET 4.X. Il s'agit d'un ensemble d'éléments de l'implémentation OWIN de Microsoft, y compris les serveurs OWIN.

Enfin et surtout:

  • ASP.NET 5 est mort et remplacé par ASP.NET Core. Alors ne le mentionnez plus.

    (Mise à jour du 28/06/2019: "Aujourd'hui, nous annonçons que la prochaine version après .NET Core 3.0 sera .NET 5" - PAR MS https://devblogs.Microsoft.com/dotnet/ introduction-net-5 / . Cela signifie qu'il y aura ASP.Net 5, qui est en fait la prochaine génération d'ASP.Net Core)

  • OWIN est l'élément clé/essentiel dans ASP.NET 4.X et ASP.NET Core.

Pour en savoir plus, vous pouvez lire https://www.quora.com/Is-ASP-NET-Core-a-replacement-for-OWIN-Katana

6
Robert

"Project Katana" inclut Microsoft ajoutant la prise en charge de IIS pour OWIN, créant OwinHost.exe et fournissant bibliothèques pour permettre à l'application de s'interfacer avec une WebAPI auto-hébergée . ces bibliothèques telles que Microsoft.Owin.Security sont utilisées par ASP.NET MVC 5 (pas ASP.NET Core) pour câbler l'identité/authentification via OWIN, mais MVC 5 ne prend pas en charge l'auto-hébergement (bien qu'il soit possible d'utiliser d'autres outils) La bibliothèque SelfHosting est uniquement destinée à WebAPI.

Ainsi, "Katana" est un terme large se référant à la fois aux implémentations de l'hôte et au support des applications Web pour OWIN: "Ces composants incluent les composants d'infrastructure, tels que les hôtes et les serveurs, ainsi que les composants fonctionnels, tels que les composants d'authentification et les liaisons à des cadres tels que SignalR et l'API Web ASP.NET. "

Vous pouvez voir des phrases comme "Migrer de Katana vers ASP.NET Core" qui renvoient au côté de l'application Web. Cela signifie abandonner les bibliothèques Microsoft.Owin et utiliser ASP.NET Core qui prend en charge OWIN sans avoir besoin de bibliothèques supplémentaires. Ou vous pouvez voir une phrase similaire qui signifie passer d'un hôte Katana à un autre hôte tel que Kestrel. Malheureusement, le terme est utilisé pour désigner les deux côtés de la mise en œuvre avec peu de précisions, et vous devrez faire attention au contexte de la discussion.

Kestrel n'est qu'une implémentation Host. Son objectif est de fournir un support d'hébergement OWIN sur de nombreuses plateformes. Il est plus léger et pas aussi complet ou mature que IIS. Il est recommandé de l'utiliser derrière un proxy inverse d'un serveur Web plus sécurisé et plus fiable tel que IIS, Apache, nginx ou autre. Kestrel est ce que la documentation actuelle de Microsoft recommande en tant qu'hôte pour déployer les applications Web ASP.NET Core sur d'autres plates-formes telles que Linux.

Si vous créez un projet ASP.Net Core, Kestrel est actuellement inclus par défaut. Il est pris en charge sur les mêmes plates-formes prises en charge par ASP.NET Core.

3
AaronLS