Поскольку .NET Core является кроссплатформенным, проекты ASP.NET Core могут запускаться как на Windows, так и на Linux, а если развернуты на Windows, их можно развернуть на IIS или запускать напрямую через командную строку, независимо от сервисов IIS, благодаря включению контейнеров Kestrel в ASP.NET Core.
Для получения дополнительной информации о том, как развернуть ASP.NET Core приложений в сервисы IIS, вы можете обратитесь к следующему:
ASP.NET Core развернут в IISВ процессеиВне процессаДве модели хостинга
Ресурсы:
Вход по гиперссылке виден.
Вход по гиперссылке виден.
Модель в процессе
С ASP.NET Core 3.0,Хостинг в процессе по умолчанию включён для всех приложений, развернутых в IIS, файл web.config выглядит так:
можно увидетьhostingModel="inprocess", модель в процессеПустельга не используется, но вместо этого использует IISHttpServer() для реализации нового веб-сервера, размещённого непосредственно внутри пула приложений IIS, что во многом похоже на то, как традиционный ASP.NET был введён в IIS.
Следующая диаграмма иллюстрирует взаимосвязь между модулями IIS, ASP.NET Core и размещаемыми приложениями в процессе:
Пытаясь получить доступ к сайту, вы можете увидеть сервер через заголовок ответа, как показано на изображении ниже:
Если смотреть на процессы через диспетчер задач, существует всего 2 процесса, как показано на рисунке ниже:
Модель вне процесса
Эта модель IIS выступает в роли обратного прокси, и при получении запроса необходимо перенаправлять его на сервис Kestrel — кроссплатформенный веб-сервер, встроенный в ASP.NET Core-приложения.
Следующая схема иллюстрирует взаимосвязь между модулями IIS, ASP.NET Core и размещёнными приложениями, находящимися вне процесса:
Мы модифицируем файл web.config следующим образом:
Когда мы заходим на сайт через браузер, мы видим, что значение сервера в заголовке ответа стало Kestrel, как показано на рисунке ниже:
Заглянув в диспетчер задач одновременно, я обнаружил, что существует 3 процесса, как показано на рисунке ниже:
сводка
В управляемой модели InProcess запросы и ответы предоставляются через w3wp.exe или IISExpress, тогда как в процессе OutOfProcess это dotnet.exe В управляемой модели InProcess используется один веб-сервер, а в модели OutOfProcess — два веб-сервера.
Очевидная причина использования новой модели In-Process заключается в том, что она быстрее и потребляет меньше ресурсов,Управляемая модель InProcess обеспечивает лучшую производительностьПотому что он работает непосредственно в процессе пула приложений IIS. Внутреннего HTTP-трафика и накладных расходов нет, запросы обрабатываются немедленно.
|