Попытка понять CreateDefaultBuilder - PullRequest
0 голосов
/ 25 мая 2018

Я новичок в написании C # Api и смотрю на IdentityServer4 QuickStart1. Я вижу, что модуль QuickstartIdentityServer имеет

using System;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;

namespace QuickstartIdentityServer
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Console.Title = "IdentityServer";

            BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .Build();
    }
}

И API имеет

using System;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;

namespace Api
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Console.Title = "API";

            BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .Build();
    }
}

У меня естьпроблемы с пониманием того, что на самом деле делает BuildWebHost и почему мне нужно, чтобы он работал в 2 отдельных процессах, прежде чем я смогу использовать свой клиентский процесс для подключения к API

. Я вижу, что BuildWebHost содержит

WebHost.CreateDefaultBuilder

Глядя на Microsoft.AspNetCore (из метаданных), я вижу, что это статический класс, который содержит объявление метода

public static IWebHostBuilder CreateDefaultBuilder(string[] args);

Таким образом, фактический код метода должен быть в Microsoft.AspNetCore.Dll

Почему он должен работать как в IdentityServer4, так и в Api?

1 Ответ

0 голосов
/ 25 мая 2018
public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .Build();

Это бит кода по умолчанию, необходимый для запуска и запуска приложения ASP.NET Core.В основном это создает веб-хост с обычными настройками по умолчанию, настраивает класс Startup, а затем создает веб-хост.Веб-хостинг - это то, что на самом деле служит вашему веб-приложению.

Вы можете взглянуть на реализацию из CreateDefaultBuilder, но, судя по актуальному вопросу, этот вопрос выиграл 'это вам очень не поможет.

Почему он должен работать как в IdentityServer4, так и в Api?

В этом примере Identity Server используется сервер Identity Server.и API на отдельных серверах .Это технически необязательно, и вы могли бы разместить их в одном приложении.Однако на практике гораздо более вероятно, что вы развернете Identity Server один раз в каком-то центральном месте, и тогда у вас может быть несколько других серверов - API, клиенты и т. Д. - которые используют сервер в качестве внешнего поставщика аутентификации.

Таким образом, они создают отдельные веб-хосты, потому что они являются отдельными веб-приложениями.Это отдельные веб-приложения, созданные в отдельных проектах .NET.

Если вы внимательно прочитаете руководство по быстрому запуску , вы заметите, что они действительно создают для этого отдельные проекты.И отдельные проекты ASP.NET Core означают отдельные веб-приложения, каждое из которых размещается отдельно.

...