Читаем Язык программирования C#9 и платформа .NET5 полностью

  "commandName": "Project",

  "launchBrowser": true,

  "launchUrl": "api/values",

  "applicationUrl": "https://localhost:5021;http://localhost:5020",

  "environmentVariables": {

  "ASPNETCORE_ENVIRONMENT": "Development"

  }

}

<p id="AutBody_Root1384"><strong>Создание и конфигурирование экземпляра WebHost</strong></p>

В отличие от классических приложений ASP.NET MVC или ASP.NET Web API приложения ASP.NET Core — это просто консольные приложения .NET Core, которые создают и конфигурируют экземпляр WebHost. Создание экземпляра WebHost и его последующее конфигурирование обеспечивают настройку приложения на прослушивание (и реагирование) на запросы HTTP. Экземпляр WebHost создается в методе Main внутри файла Program.cs. Затем экземпляр WebHost конфигурируется для вашего приложения в файле Startup.cs.

<p id="AutBody_Root1385"><strong>Файл Program.cs</strong></p>

Откройте файл класса Program.cs в приложении AutoLot.Api и просмотрите его содержимое, которое для справки приведено ниже:

namespace AutoLot.Api

{

  public class Program

  {

    public static void Main(string[] args)

    {

      CreateHostBuilder(args).Build.Run;

    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>

      Host.CreateDefaultBuilder(args)

        .ConfigureWebHostDefaults(webBuilder =>

          {

            webBuilder.UseStartup;

          });

  }

}

Метод CreateDefaultBuilder ужимает наиболее типовую настройку приложения в один вызов. Он конфигурирует приложение (используя переменные среды и JSON-файлы appsettings), настраивает стандартный поставщик ведения журнала и устанавливает контейнер DI. Такая настройка обеспечивается шаблонами ASP.NET Core для приложений API и MVC.

Следующий метод, ConfigureWebHostDefaults, тоже является мета-методом, который добавляет поддержку для Kestrel, IIS и дополнительные настройки. Финальный шаг представляет собой установку класса конфигурации, специфичной для приложения, который в данном примере (и по соглашению) называется Startup. Наконец, вызывается метод Run для активизации экземпляра WebHost.

Помимо экземпляра WebHost в предыдущем коде создается экземпляр реализации IConfiguration, который добавляется внутрь контейнера DI.

<p id="AutBody_Root1386"><strong>Файл Startup.cs</strong></p>

Класс Startup конфигурирует то, как приложение будет обрабатывать запросы и ответы HTTP, настраивает необходимые службы и добавляет службы в контейнер DI. Имя класса может быть любым, если оно соответствует строке UseStartup в конфигурации метода CreateHostBuilder, но по соглашению класс именуется как Startup.

<p id="AutBody_Root1387"><strong>Доступные службы для класса Startup</strong></p>

Процессу запуска требуется доступ к инфраструктуре, а также к службам и настройкам среды, которые внедряются в класс инфраструктурой. Классу Startup доступно пять служб для конфигурирования приложения, которые кратко описаны в табл. 29.11.

Конструктор принимает экземпляр реализации IConfiguration и необязательный экземпляр реализации IWebHostEnvironment/IHostEnvironment. Метод ConfigureServices запускается до того, как метод Configure получает экземпляр реализации IServiceCollection. Метод Configure должен принимать экземпляр реализации IApplicationBuilder, но может принимать экземпляры реализаций IWebHostEnvironment/IHostEnvironment, ILoggerFactory и любых интерфейсов, которые были добавлены внутрь контейнера DI в методе ConfigureServices. Все перечисленные компоненты обсуждаются в последующих разделах.

<p id="AutBody_Root1388"><strong>Конструктор</strong></p>

Конструктор принимает экземпляр реализации интерфейса IConfiguration, который был создан методом Host.CreateDefaultBuilder в файле класса Program.cs, и присваивает его свойству Configuration для использования где-то в другом месте внутри класса. Конструктор также может принимать экземпляр реализации IWebHostEnvironment и/или ILoggerFactory, хотя он не добавляется в стандартном шаблоне.

Добавьте в конструктор параметр для IWebHostEnvironment и присвойте его локальной переменной уровня класса. Это понадобится в методе ConfigureServices. Проделайте такую же работу для приложений AutoLot.Api и AutoLot.Mvc.

private readonly IWebHostEnvironment _env;

public Startup(

Перейти на страницу:

Похожие книги

97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT