Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в политике поддержки .NET и .NET Core. В текущем выпуске см . версию .NET 9 этой статьи.
Важно!
Эта информация относится к предварительному выпуску продукта, который может быть существенно изменен до его коммерческого выпуска. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Приложение ASP.NET Core выполняется вместе с внутрипроцессной реализацией HTTP-сервера. Реализация сервера прослушивает HTTP-запросы и передает их в приложение как набор функций запросов, объединенных в HttpContext.
Kestrel сервер представляет собой кроссплатформенную реализацию HTTP-сервера по умолчанию.
Kestrel обеспечивает максимальную производительность и использование памяти, но обладает некоторыми дополнительными функциями в HTTP.sys. Дополнительные сведения см. в разделе Kestrel HTTP.sys на вкладке Windows.
При использовании IIS или IIS Express приложение запускается одним из следующих способов:
В том же процессе, что и рабочий процесс IIS (модель внутрипроцессного размещения), с использованием HTTP-сервера IIS.
Внутрипроцессное размещение является рекомендуемой конфигурацией.
Модуль ASP.NET Core представляет собой собственный модуль IIS, который обрабатывает собственные запросы IIS между IIS и внутрипроцессным HTTP-сервером IIS или Kestrel. Дополнительные сведения см. в разделе Модуль ASP.NET Core для IIS.
Kestrel в сравнении с HTTP.sys
Kestrel имеет следующие преимущества перед HTTP.sys:
Повышенная производительность и более эффективное использование памяти.
Кроссплатформенные
Гибкость, поскольку разработка и установка исправлений осуществляется независимо от операционной системы.
Программный порт и конфигурация TLS.
Расширяемость, обеспечивающая использование таких протоколов, как PPv2, и альтернативные транспорты.
Http.Sys работает как разделённый компонент режима ядра с функциями, которых нет у Kestrel.
Kestrel самостоятельное размещение: Kestrel веб-сервер выполняется без необходимости других внешних веб-серверов, таких как IIS или HTTP.sys.
HTTP.sys самообслуживание является альтернативой Kestrel.
Kestrel рекомендуется для HTTP.sys, если приложению не требуются функции, недоступные в Kestrel.
Размещение в процессе IIS: приложение ASP.NET Core выполняется в том же процессе, что и рабочий процесс IIS. Размещение в процессе IIS обеспечивает улучшенную производительность по сравнению с размещением внепроцессных служб IIS, так как запросы не обрабатываются через адаптер петли, сетевой интерфейс, который возвращает исходящий сетевой трафик обратно на тот же компьютер. IIS обрабатывает управление процессом с помощью службы активации процессов Windows (WAS).
Размещение внепроцессных служб IIS: ASP.NET основные приложения выполняются в процессе, отдельном от рабочего процесса IIS, а модуль обрабатывает управление процессами. Модуль запускает процесс для приложения ASP.NET Core при поступлении первого запроса и перезапускает приложение при сбое или завершении работы. Это, по сути, совпадает с поведением приложений, выполняемых внутрипроцессно и управляемых службой активации процессов Windows (WAS). Использование отдельного процесса также позволяет размещать более одного приложения из одного пула приложений.
ASP.NET Core поставляется с Kestrel сервером, который является межплатформенным HTTP-сервером по умолчанию.
ASP.NET Core поставляется с Kestrel сервером, который является межплатформенным HTTP-сервером по умолчанию.
Kestrel
Kestrel сервер представляет собой кроссплатформенную реализацию HTTP-сервера по умолчанию.
Kestrel обеспечивает максимальную производительность и использование памяти, но обладает некоторыми дополнительными функциями в HTTP.sys. Дополнительные сведения см. в разделе Kestrel и HTTP.sys настоящего документа.
Используйте Kestrel в следующих случаях:
Сам по себе как пограничный сервер обработки запросов непосредственно из сети, включая Интернет.
С обратным прокси-сервером, таким как службы IIS, Nginx или Apache. Обратный прокси-сервер получает HTTP-запросы из Интернета и пересылает их на Kestrel.
Поддерживается любая из этих конфигураций размещения (с обратным прокси-сервером и без него).
Рекомендации Kestrel по настройке и сведения о том, когда следует использовать Kestrel в конфигурации обратного прокси-сервера, см Kestrel . в ASP.NET Core.
При использовании IIS или IIS Express приложение запускается в процессе, отдельном от рабочего процесса IIS (внепроцессный) с Kestrel сервер .
Так как приложения ASP.NET Core выполняются в процессе, отделенном от рабочего процесса IIS, этот модуль обрабатывает управление процессами. Модуль запускает процесс для приложения ASP.NET Core при поступлении первого запроса и перезапускает приложение при сбое или завершении работы. Это, по сути, совпадает с поведением приложений, выполняемых внутрипроцессно и управляемых службой активации процессов Windows (WAS).
На следующей схеме показана связь между IIS, модулем ASP.NET Core и приложением, размещенным вне процесса.
Запросы поступают из Интернета в драйвер HTTP.sys в режиме ядра. Драйвер направляет запросы к службам IIS на настроенный порт веб-сайта — обычно 80 (HTTP) или 443 (HTTPS). Модуль перенаправляет запросы к Kestrel на случайный порт для приложения, который не является портом 80 или 443.
Модуль задает порт с помощью переменной среды во время запуска, а ПО промежуточного слоя для интеграции IIS настраивает сервер для прослушивания http://localhost:{port}. Выполняются дополнительные проверки, и запросы не из модуля отклоняются. Модуль не поддерживает переадресацию по HTTPS, поэтому запросы переадресовываются по протоколу HTTP, даже если были получены IIS по протоколу HTTPS.
После того, как Kestrel получает запрос от модуля, запрос передается в конвейер ПО промежуточного слоя ASP.NET Core. Конвейер ПО промежуточного слоя обрабатывает запрос и передает его в качестве экземпляра HttpContext в логику приложения. ПО промежуточного слоя, добавленное с использованием интеграции IIS, обновляет схему, удаленный IP-адрес и базовый путь с учетом перенаправления запроса к Kestrel. Отклик приложения передается обратно в службу IIS, которая отправляет его обратно в HTTP-клиент, инициировавший запрос.
Инструкции по настройке модуля ASP.NET Core и IIS см. в следующих статьях:
Если приложения ASP.NET Core запускаются в Windows, HTTP.sys является альтернативой Kestrel.
Kestrel рекомендуется для HTTP.sys, если приложению не требуются функции, недоступные в Kestrel. Дополнительные сведения см. в статье Реализация веб-сервера HTTP.sys в ASP.NET Core.
HTTP.sys можно также использовать для приложений, которые имеют доступ только к внутренней сети.
Visual Studio для Mac. Приложение и сервер запускаются отладчиком Mono Soft-Mode.
При запуске приложения из командной строки в папке проекта dotnet run запускает приложение и сервер (только Kestrel и HTTP.sys). Конфигурация определяется параметром -c|--configuration, который может принимать значение Debug (по умолчанию) или Release.
Файл launchSettings.json предоставляет конфигурацию при запуске приложения с помощью dotnet run или с помощью отладчика, встроенного в инструментарий, например Visual Studio. Если профили запуска присутствуют в launchSettings.json файле, используйте --launch-profile {PROFILE NAME} параметр с dotnet run командой или выберите профиль в Visual Studio. Дополнительные сведения см. в статьях dotnet run и Упаковка дистрибутивов .NET Core.
Поддержка HTTP/2
HTTP/2 поддерживается в ASP.NET Core для следующих сценариев развертывания:
Windows Server 2016 / Windows 10 или более поздних версий; IIS 10 или более поздней версии
Общедоступные подключения пограничного сервера используют HTTP/2, однако обратное прокси-соединение с Kestrel использует HTTP/1.1.
Требуемая версия .NET Framework: не применимо к внепроцессным развертываниям IIS.
†Kestrel имеет ограниченную поддержку HTTP/2 в Windows Server 2012 R2 и Windows 8.1. Поддержка ограничена из-за небольшого числа поддерживаемых комплектов шифров TLS, доступных для этих операционных систем. Для обеспечения безопасности TLS-подключений может потребоваться сертификат, созданный с использованием алгоритма ECDSA.
Windows Server 2016 / Windows 10 или более поздних версий; IIS 10 или более поздней версии
Общедоступные подключения пограничного сервера используют HTTP/2, однако обратное прокси-соединение с Kestrel использует HTTP/1.1.
Требуемая версия .NET Framework: не применимо к внепроцессным развертываниям IIS.
†Kestrel имеет ограниченную поддержку HTTP/2 в Windows Server 2012 R2 и Windows 8.1. Поддержка ограничена из-за небольшого числа поддерживаемых комплектов шифров TLS, доступных для этих операционных систем. Для обеспечения безопасности TLS-подключений может потребоваться сертификат, созданный с использованием алгоритма ECDSA.
Windows Server 2016 / Windows 10 или более поздних версий; IIS 10 или более поздней версии
Общедоступные подключения пограничного сервера используют HTTP/2, однако обратное прокси-соединение с Kestrel использует HTTP/1.1.
Требуемая версия .NET Framework: не применимо к внепроцессным развертываниям IIS.
†Kestrel имеет ограниченную поддержку HTTP/2 в Windows Server 2012 R2 и Windows 8.1. Поддержка ограничена из-за небольшого числа поддерживаемых комплектов шифров TLS, доступных для этих операционных систем. Для обеспечения безопасности TLS-подключений может потребоваться сертификат, созданный с использованием алгоритма ECDSA.
Windows Server 2016 / Windows 10 или более поздних версий; IIS 10 или более поздней версии
Общедоступные подключения пограничного сервера используют HTTP/2, однако обратное прокси-соединение с Kestrel использует HTTP/1.1.
Требуемая версия .NET Framework: не применимо к внепроцессным развертываниям IIS.
Подключение HTTP/2 должно использовать согласование протокола уровня приложений (ALPN) и TLS 1.2 или более поздней версии. Дополнительные сведения см. в разделах, о конкретных сценариях развертывания сервера.
Шаблоны корпоративных веб-приложений
Рекомендации по созданию надежного, безопасного, производительного, тестового и масштабируемого приложения ASP.NET Core см. в шаблонах веб-приложений Enterprise. Полный пример веб-приложения с высоким качеством рабочей среды, реализующий шаблоны, доступен.
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о ASP.NET Core
ASP.NET Core — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
В качестве гибридного администратора Windows Server вы интегрируете среды Windows Server со службами Azure и управляете Windows Server в локальных сетях.