Qu'est-ce que Kestrel (vs IIS / Express)
Qu'est-ce que la crécerelle serveur web et comment est-il lié à IIS /IIS Express?
Je viens de développement d'applications sur IIS Express et l'hébergement sur un serveur web IIS. Avec ASP.NET de Base j'ai une dépendance sur Microsoft.AspNetCore.Server.Kestrel
et mon démarrage a .UseServer("Microsoft.AspNetCore.Server.Kestrel")
. Mais quand je lance mon site web, j'ai toujours l'IIS Express icône dans la barre d'état système. Quelqu'un m'a demandé si j'ai été à l'aide de IIS Express ou Kestrel et je ne savais pas quoi dire!
Je n'ai pas de croix-plate-forme d'exigences comme je l'ai développer sur un PC et d'accueil dans Azure, donc je suis un peu perdu, même si je l'ai need
faucon Crécerelle, mais il ne semble pas comme il existe une alternative - même le plus simple des échantillons de l'utilisation de Kestrel.
- Lorsque vous avez une question à propos de cette nouvelle technologie, commencer à la page GitHub pour les projets en question et de regarder leurs Wikis. Vous auriez couru à travers ce Serveurs page wiki pour le ASP.NET repo.
- Bien sûr, vous courez dans des trucs comme
This document is now out of date. For up-to-date ASP.NET Core documentation go to: http://docs.asp.net
. Oups. - stackoverflow.com/questions/42382317/...?
Vous devez vous connecter pour publier un commentaire.
C'est une véritable serveur web. Vous pouvez exécuter votre ASP.NET application de Base à l'aide seulement de Kestrel.
Dans votre ASP.NET application, probablement dans le
wwwroot
répertoire, vous verrez un site web.config qui contient ceci:C'est le HttpPlatformHandler. Essentiellement, ce que ce n'est avant tous demandes de Kestrel. IIS Express (et IIS pour que ce soit), ne sera pas exécuté ASP.NET eux-mêmes plus. Au lieu de cela, ils agissent en tant que mandataires simplement transmettre les demandes et les réponses en arrière à partir de Kestrel. Il y a encore des avantages de l'utilisation de IIS, plus précisément, il vous donne la configuration de sécurité au niveau du noyau, la mise en cache, etc.
Je tiens à offrir une alternative la réponse, avec un peu d'histoire, de sorte que vous pourriez comprendre pourquoi Kestrel arrive, même si vous ne l'utilisez Windows et IIS.
Au tout début de ASP.NET développement avant l'an 2000, clairement, Microsoft a créé deux pièces d'hôte ASP.NET les Formulaires web apps,
HttpListener
. Bien sûr, depuis qu'il a été pour le développement seulement, de nombreuses fonctionnalités n'ont jamais été mises en œuvre. Comme Microsoft a publié le code source de Cassini disponibles pour le public, il y a des tiers qui forké le code de base et ajouté plus de fonctionnalités, qui a commencé la sonde Cassini de la famille.aspnet_wp.exe
).Afin de développer une application web, vous utilisez Cassini, et de déployer vous utilisez IIS.
L'introduction de pools d'applications IIS 6 a nécessité quelques modifications sur ASP.NET côté, de sorte
aspnet_wp.exe
est devenu obsolète et remplacé paraspnet_isapi.dll
. Qui peut être vu comme ASP.NET appuyer sur IIS, révision 2. Donc ASP.NET les applications sont hébergées dans IIS processus de travailw3wp.exe
.L'introduction de pipeline intégré dans IIS 7 ou supérieur requis à d'autres changements, qui a remplacé
aspnet_isapi.dll
avecwebengine4.dll
. Qui peut être vu comme ASP.NET appuyer sur IIS, révision 3. ASP.NET et IIS pipelines sont unifiés.Vous pouvez le voir ASP.NET est devenu beaucoup plus complexe et étroitement intégré avec IIS, donc Cassini a commencé à montrer son âge, et peu à peu été remplacé par IIS Express (mode utilisateur lite IIS).
Ainsi, dans de nombreux cas, lorsque les gens blâmer que IIS est lent, ils devraient blâmer ASP.NET en fait. IIS lui-même sans ASP.NET est assez rapide et stable, tandis que ASP.NET n'a pas été développé avec suffisamment de mesures de la performance à l'esprit (comme WebForms se concentre beaucoup de la productivité et de la SAR).
Puis, en novembre 2014, ASP.NET 5 (renommé plus tard ASP.NET de Base) a été annoncé et est devenu une plate-forme de technologie. Évidemment, Microsoft avait besoin d'une nouvelle conception de support de Windows, macOS et Linux, où tous les principaux serveurs web, de nginx/Apache (ou d'autres serveurs web) doit être considéré en plus de IIS.
Je pense que beaucoup seraient d'accord que Microsoft appris beaucoup de NodeJS, puis conçu et développé Crécerelle (basé sur
libuv
au départ, mais peut se déplacer vers d'autres technologies très prochainement). C'est une lumière-poids serveur web comme Cassini au début, mais plus tard, plus de fonctionnalités sont ajoutées (comme une autre réponse a commenté, beaucoup plus de fonctionnalités, donc peut être traitée comme une pleine serveur web). Bien que pleinement réussi (natif dépendances existent), il n'est plus un jouet serveur web comme Cassini.Alors pourquoi ne pas vous suffit d'utiliser Crécerelle? Pourquoi IIS Express et potentiellement IIS, nginx ou Apache sont encore nécessaires? C'est principalement un résultat de l'internet aujourd'hui la pratique. La plupart des sites web utilisent des proxys inverses à prendre les demandes de vos navigateurs web et ensuite transférer vers les serveurs d'applications en arrière-plan.
Une autre réponse a déjà montré un lien vers la documentation de Microsoft, de sorte que vous pouvez prendre un coup d'oeil.
Microsoft a développé HttpPlatformHandler d'abord à faire IIS un assez bon proxy inverse pour Java/Python et ainsi de suite, de sorte que prévu de l'utiliser pour ASP.NET de Base. Les problèmes ont commencé à apparaître au cours du développement, de sorte que plus tard, Microsoft a fait ASP.NET Module de Base spécifiquement pour ASP.NET de Base. C'est ASP.NET appuyer sur IIS, révision 4.
À partir de ASP.NET Noyau 2.2, ASP.NET Module de Base pour IIS (version 2) peut accueillir .NET de Base de l'environnement à l'intérieur de processus de travail IIS (
w3wp.exe
), assez semblable à ASP.NET 2.x/4.x. Ce mode est appelé "IIS dans le processus d'hébergement". Il peut être considéré comme ASP.NET appuyer sur IIS révision 5.Bien, assez long, mais j'espère que j'ai mis tous les morceaux ensemble et vous profitez de la lecture.
À partir de ms docs à:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x
Mise à JOUR: .net de base 2.1, Kestrel utilise géré sockets à la place si libuv
De asp.net de base 2.1 docs à: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.1#transport-configuration