Я бы хотел предложить альтернативный ответ с некоторой историей, чтобы вы могли понять, почему приходит Kestrel, даже если вы используете только Windows и IIS.
В самом начале разработки ASP.NET до 2000 года, очевидно, Microsoft создала две части для размещения приложений ASP.NET WebForms,
- Кассини, позже стал 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 размещаются в рабочих процессах IIS w3wp.exe
.
Внедрение интегрированного трубопровода в IIS 7 и выше потребовало дальнейших изменений, которые заменили aspnet_isapi.dll
на webengine4.dll
. Это можно рассматривать как поддержку ASP.NET в IIS версии 3. Конвейеры ASP.NET и IIS унифицированы.
Вы можете увидеть ASP.NET становится гораздо более сложным и тесно интегрирован с IIS, так Кассини начал показывать свой возраст, и постепенно был заменен на IIS Express (режим пользователя облегченный IIS).
Таким образом, во многих случаях, когда люди винят, что ASP.NET работает медленно, они должны обвинять ASP.NET на самом деле. Сам IIS без ASP.NET довольно быстрый и стабильный, в то время как ASP.NET не был разработан с достаточными показателями производительности (поскольку WebForms фокусируется на довольно большой производительности и RAD).
Затем в ноябре 2014 года была анонсирована ASP.NET 5 (позже переименованная в ASP.NET Core) и стала перекрестной платформой. Очевидно, что Microsoft больше не может привязывать его к IIS. Поэтому новый дизайн должен учитывать macOS и Linux, где должны использоваться nginx/Apache или другие веб-серверы.
Я думаю, многие согласятся с тем, что Microsoft многому научилась у NodeJS, а затем разработала и разработала Kestrel (первоначально на основе libuv
, но вскоре может перейти к другой технологии). Сначала это легкий взвешенный веб-сервер, такой как Cassini, но в дальнейшем добавляются дополнительные функции (как и другой ответ, гораздо больше функций, поэтому можно рассматривать как полный веб-сервер). Хотя полностью управляемый (некоторые собственные зависимости существуют), он больше не является веб-сервером игрушек, похожим на Cassini.
Тогда почему вы не можете использовать Kestrel? Почему 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 Core. Это поддержка ASP.NET в версии IIS 4.
Ну, довольно длинный, но я надеюсь, что я собрал все необходимые штуки, и вам понравится читать его.
Когда у вас возник вопрос по поводу этой новой технологии, зайдите на страницу GitHub для проектов, о которых идет речь, и посмотрите на их Вики. Вы перейдете через эту страницу [Страница серверов] (https://github.com/aspnet/Home/wiki/Servers) для репо ASP.NET. – mason
Конечно, тогда вы сталкиваетесь с такими вещами, как «Этот документ устарел. Для современной документации ASP.NET Core перейдите по адресу: http: // docs.asp.net'. К сожалению. – hacksalot