Какую роль играют функции Build () и Run () в веб-приложении ASP.Net Core? - PullRequest
0 голосов
/ 06 июля 2019

Я действительно новичок в программировании, начав с разработки на .NET core Web API development.

Это фрагмент кода:

namespace time_api
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>();
    }
}

Я потратил больше часов, чтобы понять этот фрагмент кода.Я понимаю, что это вызывает статический метод CreateWebHostBuilder.Но я действительно не понимаю, что это за .Build() & .Run().
Это похоже на метод (CreateWebHostBuilder), вызывающий другой метод и другой метод?

Что означает наличие здесь =>?

Пожалуйста, помогите мне понять

1 Ответ

1 голос
/ 06 июля 2019

Хорошо, вот что происходит в двух словах.

  1. Вы вызываете свой собственный статический метод, который создает IWebHostBuilder, который является интерфейсом, цель которого - позволить вам настроитьСреда размещения ASP.Net.
  2. Затем вы вызываете метод экземпляра Build для объекта IWebHostBuilder, который вернула ваша статическая функция.
    • Функция Build берет конфигурацию, расширения и т. Д., Которые хранятся в реализации IWebHostBuilder, и использует ее для создания экземпляра IWebHost, который фактически будет выполнять прослушивание запросов HTTP для обработки.
  3. Наконец-то вы вызываете метод Run для IWebHost, возвращенного методом IWebHostBuilder.Build.
    • Это метод, который фактически прослушивает HTTP-запросы, отображает запросы на один из ваших контроллеров, создает экземпляр этого контроллера вместе с любыми зависимостями и вызывает методы действия.
    • Этот метод "блокирует"или не возвращается, пока что-то не заставит вашу программу завершиться (т. е. вы нажмете Ctrl + C).

=> после объявления CreateWebHostBuilder(string[] args) являетсяновый способ объявления тела метода, называемого «член с выражением тела».В этом случае это эквивалентно следующему

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) {
            return WebHost.CreateDefaultBuilder(args).UseStartup<Startup>();
        }

Этот же символ => может использоваться для создания «лямбды» или анонимной функции в случае, когда ожидается делегат или выражение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...