.Net developer, data scientist
Приветствую Вас на моем канале. Сегодня мы познакомимся с серверами которые используются в приложении ASP.NET Core и в каких режимах они могут работать.
Приложение ASP.NET Core работает с встроенной реализацией сервера HTTP. Реализация сервера ожидает получение запросов HTTP и передает эти запросы далее в приложение ASP.NET Core в видео объекта с различными параметрами. Данный объект является объектом класса HttpContext. Объект данного типа был представлен в видео на тему связующих программных компонентов. Ссылка на данное видео будет в описании к данному видео и в верхнем углу экрана.
В зависимости от того, в какой операционной системе (Windows, Mac или Linux) Ваше приложение будет запущено вам будут доступны разные возможности. Больше всего возможностей можно получить, используя приложение ASP.NET Core в среде Windows. В средах Mac или Linux мы можем использовать только сервер Kestrel. Данный сервер также доступен в среде Windows, поэтому его и другие сервера мы рассмотрим с точки зрения использования нашего приложения в операционной системе Windows.
Приложение ASP.NET Core в среде Windows поставляется со следующими серверами:
Если мы используем сервер IIS, то наше приложение может быть запущено и работать 2 способами:
Если мы сравним сервер Kestrel с сервером HTTP.sys, то сервер Kestrel будет иметь как преимущества, так и недостатки:
Http.Sys имеет некоторые продвинутые функции, которые отсутствуют в сервере Kestrel:
Сервер Kestrel поддерживает 2 возможности использования:
Если приложение ASP.NET Core работает в среде Windows, HTTP.sys является альтернативой серверу Kestrel. Хотя Kestrel и является рекомендованным сервером по сравнению с HTTP.sys, возможно вам будет необходима функциональность, которая есть в сервере HTTP.sys и которой нет в Kestrel.
Сервер HTTP.sys также может быть использован для приложение, которые обслуживают запросы из сети интернет.
Если по какой-то причине вам не подошли предложенные варианты, вы всегда можете написать свою собственную имплементацию сервера HTTP. С этой цель можно использовать примеры имплементаций OWIN. OWIN – это аббревиатура с английского Open Web Interface for .NET: открытый веб интерфейс для .NET. Для того чтобы написать свой собственный сервер с минимально доступной функциональностью, необходимо реализовать интерфейсы IHttpRequestFeature и IHttpResponseFeature.
Сервер приложение ASP.NET Core запускается, когда среда разработки, IDE запускает приложение. Например, если речь идет о Visual Studio, то когда мы нажимаем кнопку Run наш приложение запускается вместе с сервером. Здесь мы можем использовать профили запуска, или на английском языке launch profiles. В профилях запуска определяется как наше приложение должно быть запущено: внутри IIS Express или в виде консольного приложения.
Когда мы запускаем приложение из командной строки в папке проекта, команда dotnet run запускает приложение и сервер (это касается только серверов Kestrel и HTTP.sys). При запуске можно указать конфигурацию параметром -c|–configuration, значение которого может быть Debug (по умолчанию) и Release.
Файл launchSettings.json содержит конфигурацию, которая может быть использована для запуска приложения из командной строки или из среды разработки такой как Visual Studio. Если в данном файле есть профили запуска, то можно использовать параметр –launch-profile {PROFILE NAME} с командой dotnet run или выбрать определенный профиль при запуске из Visual Studio.
Это было всё что я хотел сказать на тему серверов. В практике скорей всего решение какой сервер использовать и как его настраивать скорей всего уже было принято до вас и непосредственно настройкой сервер вы заниматься не будете. Однако общее понимание как работает приложение ASP.NET Core и как оно обслуживает запросы вам необходимо. Я надеюсь, что вам данное видео было вам полезно и вы узнали для себя что-то новое. Если это так, то будут благодарен за лайк, подписку и положительный комментарий. Спасибо за внимание и до новых встреч.
Пример кода из видео на GitHub
Для открытия файла проекта необходимо Visual Studio 2019.