Что такое Kestrel (vs IIS / Express)
что такое веб-сервер kestrel и как он связан с IIS / IIS Express?
Я пришел из разработки приложений на IIS Express и размещения их на веб-сервере IIS. С помощью ASP.NET ядро у меня есть зависимость от Microsoft.AspNetCore.Server.Kestrel и мой стартап .UseServer("Microsoft.AspNetCore.Server.Kestrel"). Но когда я запускаю свой сайт, я все еще получаю значок IIS Express в системном трее. Кто-то спросил меня, использую ли я IIS Express или Kestrel, и я не знал, что сказать!
у меня нет никаких кросс-платформенных требования, как я разработка на ПК и Хосте в Azure, поэтому я смущен, если я даже need Пустельга, но не похоже, что есть альтернатива - даже самые простые образцы используют пустельгу.
3 ответов:
что такое Пустельга
Это полноценный веб-сервер. Вы можете запустить свой ASP.NET основное приложение использует только пустельгу.
но когда я запускаю свой сайт, я все еще получаю значок IIS Express в системном трее
в вашем ASP.NET применение, вероятно, в
wwwrootкаталог, вы увидите веб.конфигурация, которая содержит это:<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <handlers> <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/> </handlers> <httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/> </system.webServer> </configuration>Это HttpPlatformHandler. По сути, это вперед все запросы к пустельге. IIS Express (и IIS, если на то пошло) не будет работать ASP.NET себя больше нет. Вместо этого они будут действовать как прокси, которые просто передают запросы и ответы назад и вперед от Kestrel. Все еще есть преимущества использования IIS, в частности, он дает вам конфигурацию безопасности, кэширование на уровне ядра и т. д.
Я хотел бы предложить альтернативный ответ, с некоторой историей, чтобы вы могли понять, почему Kestrel приходит, даже если вы используете только Windows и IIS.
в самом начале ASP.NET разработка до 2000 года, очевидно, Microsoft создала две части для размещения ASP.NET WebForms apps,
- Кассини, позже стал ASP.NET сервер разработки в Visual Studio. Это полностью управляемый веб-сервер, написанный на C# на основе
HttpListener. Конечно, так как это было для только разработка, многие функции никогда не были реализованы. Поскольку Microsoft сделала исходный код Cassini доступным для общественности, есть третьи стороны, которые разветвили базу кода и добавили дополнительные функции, которые начали семейство Cassini.- ASP.NET поддержка на IIS (Версия 1). Поскольку IIS был 4.0 и 5.0 / 5.1 в то время, который не имеет ничего общего с пулами приложений, ASP.NET даже имеет свой собственный рабочий процесс (
aspnet_wp.exe).Итак, чтобы разработать веб-приложение, вы используете Cassini, и для развертывания вы используете IIS.
введение пулов приложений в IIS 6 потребовало некоторых изменений ASP.NET сбоку, так
aspnet_wp.exeустарел и замененaspnet_isapi.dll. Это можно рассматривать как ASP.NET поддержка на IIS версии 2. Так что ASP.NET приложения размещаются в рабочих процессах IISw3wp.exe.внедрение интегрированного конвейера в IIS 7 и выше потребовало дальнейших изменений, которые заменили
aspnet_isapi.dllСwebengine4.dll. Это может быть видно, как поддерживает ASP.NET о пересмотре служб IIS 3. ASP.NET и трубопроводы IIS унифицированы.вы можете видеть ASP.NET стал намного сложнее и теснее интегрирован с IIS, поэтому Cassini начал показывать свой возраст, и постепенно на смену ему пришел IIS Express (пользовательский режим lite IIS).
таким образом, во многих случаях, когда люди обвиняют, что ASP.NET это медленно, они должны винить ASP.NET на самом деле. IIS сам по себе без ASP.NET довольно быстро и стабильно, в то время как ASP.NET не было разработан с учетом достаточных показателей производительности (поскольку WebForms фокусирует довольно много производительности и RAD).
затем в ноябре 2014 года, ASP.NET 5 (позже переименован в ASP.NET Core) был анонсирован и стал кросс-платформенной технологией. Очевидно, что Microsoft нужен новый дизайн для поддержки Windows, macOS и Linux, где все основные веб-серверы, nginx/Apache (или другие веб-серверы) должны рассматриваться помимо IIS.
Я думаю, многие согласятся, что Microsoft извлекла довольно лот от NodeJS, а затем спроектирован и разработан Kestrel (на основе
libuvпервоначально, но вскоре может перейти на другие технологии). Это легкий веб-сервер, такой как Cassini изначально, но позже добавляются дополнительные функции (как и другой ответ, гораздо больше функций, поэтому их можно рассматривать как полный веб-сервер). Хотя он полностью управляется (существуют некоторые собственные зависимости), он больше не является игрушечным веб-сервером, таким как Cassini.тогда почему вы не можете просто использовать Пустельга? Почему IIS Express и потенциально IIS, nginx или Apache все еще необходимы? Это в первую очередь результат сегодняшней интернет-практики. Большинство веб-сайтов используют обратные прокси, чтобы принимать запросы от веб-браузеров, а затем перенаправлять их на серверы приложений в фоновом режиме.
- IIS Express / IIS/nginx / Apache-это обратные прокси-серверы
- Kestrel / NodeJS / Tomcat и так далее являются серверами приложений
другой ответ уже показал ссылку на Microsoft документация, так что вы можете взглянуть.
Microsoft разработала HttpPlatformHandler изначально, чтобы сделать IIS достаточно хорошим обратным прокси для Java/Python и т. д., Поэтому планировала использовать его для ASP.NET ядро. Проблемы начали появляться во время разработки, поэтому позже Microsoft сделала ASP.NET модуль сердечника специфически для ASP.NET ядро. Вот так ASP.NET поддержка на IIS версии 4.
Ну, довольно длинный, но я надеюсь, что я собрал все необходимые части вместе, и вы любите читать оно.
обратите внимание, что Microsoft планирует (вероятно, в ASP.NET ядро 2.2) некоторые огромные изменения для ASP.NET модуль ядра, улучшить представление. Этот ответ может быть обновлен снова, когда он будет выпущен.
из ms docs по адресу: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x
Kestrel-это кросс-платформенный веб-сервер для ASP.NET сердечник основанный дальше libuv, кроссплатформенная асинхронная библиотека ввода-вывода. Пустельга-это паутина сервер, который включен по умолчанию в ASP.NET основные шаблоны проектов.
вы можете использовать Kestrel самостоятельно или с обратным прокси-сервером, например IIS, Nginx или Apache. Реверс прокси-сервер получает HTTP-запросы из интернета и пересылает их в Kestrel после некоторого предварительного обращение.
Comments