Distinction entre Kestrel et Katana

Je pense que vous pouvez actuellement héberger WebAPI en utilisant Katana, et MVC aura cette possibilité dans une prochaine version. Katana sera essentiellement une option d’hébergement disponible pour MVC et WebAPI.

Kestrel est entré dans la photo, et je vois quelques employés de MS en parler à propos de l’hébergement d’ASP.NET vNext sous 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, quand il semble que Katana pourrait servir le même objective si vous l’avez compilé en mono et fait des efforts pour le rendre compatible avec plusieurs plateformes (peut-être plus facile à dire qu’à faire).

Kestrel et Katana ont-ils le même objective? Ou est-on spécialisé d’une manière ou d’une autre que l’autre?

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

Je reconnais que je suis peut-être en train de demander une comparaison pomme à oranges en raison de ma méconnaissance de Katana / Kestrel, mais si la réponse est “Les oranges ont un goût plus acide que les pommes”, cette réponse est parfaitement valable.

Katana est l’implémentation de Microsoft OWIN et inclut é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 multi-plateforme de Microsoft qui peut être utilisé avec ASP.NET 5.

ASP.NET 5 n’implémente pas OWIN, mais possède un «pont» pour permettre aux composants OWIN d’être utilisés dans les applications ASP.NET 5, y compris sur Kestrel.

Peut-être une vieille question, mais comme une recherche rapide sur Google m’a conduit 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 multi-plateforme basé sur libuv, une bibliothèque E / S asynchrone multi-plateforme. Kestrel est open-source, et vous pouvez voir 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 envisagez 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 les requêtes proxy à Kestrel. Si vous effectuez un déploiement sous Linux, vous devez exécuter un serveur proxy inverse comparable 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. Toutefois, 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.

“Project Katana” inclut l’ajout du support à IIS pour OWIN par Microsoft, la création de OwinHost.exe et la fourniture de bibliothèques permettant aux applications d’interfacer avec un WebAPI auto-hébergé . Certaines de ces bibliothèques, telles que Microsoft.Owin.Security, sont utilisées par ASP.NET MVC 5 (et non ASP.NET Core) pour connecter une identité / une 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 général qui désigne à la fois les implémentations d’hôte et les applications Web pour OWIN: «Ces composants incluent des composants d’infrastructure tels que des hôtes et des serveurs, ainsi que des composants fonctionnels tels que des composants d’authentification tels que SignalR et API Web ASP.NET. ”

Vous pouvez voir des expressions comme “Migrer de Katana vers ASP.NET Core” qui se rapportent au côté des applications Web. En d’autres termes, vous devez abandonner les bibliothèques Microsoft.Owin et utiliser ASP.NET Core qui dispose d’un support OWIN complet, sans avoir besoin de bibliothèques supplémentaires. Ou vous pouvez voir une phrase similaire qui signifie quitter un hôte Katana pour un autre hôte tel que Kestrel. Malheureusement, le terme est utilisé pour se référer aux deux côtés de la mise en œuvre avec peu de précision et vous devrez faire attention au contexte de la discussion.

Kestrel est juste une implémentation d’hôte. Son objective est de fournir une prise en charge d’hébergement OWIN sur de nombreuses plates-formes. Il est plus léger et moins complet que IIS. Il est recommandé de l’utiliser derrière un proxy inverse d’un serveur Web plus sécurisé et fiable, tel qu’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 que celles sockets en charge par ASP.NET Core.