Хостинг в ASP.NET Core теперь имеет новый базовый хост (.NET Core 2.1+), который в будущем заменит веб-хост.
Существует множество способов запуститьприложение, использующее интерфейсы Microsoft.Extensions.Hosting
IHost
и IHostBuilder
.
Я знаю разницу между использованием async
против sync
, но каковы различия между всеми этими параметрами?Использование Run
против Start
и вызов IHostBuilder
против вызова IHost
?
См. Параметры // 1
, // 2
, // 3
и // 4
в приведенном ниже коде:
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace MyNamespace
{
class Program
{
static async Task Main(string[] args)
{
IHostBuilder builder = CreateBuilder();
// 1 - Call Run on the builder (async)
await builder.RunConsoleAsync(); // extension method
// 2 - Call Start on the builder (sync)
builder.Start(); // extension method
IHost host = builder.Build(); // Call Build on the builder to get a host
// 3 - Call Run on the host (sync / async)
host.Run(); // extension method
await host.RunAsync(); // extension method
// 4 - Call Start on the host (sync / async)
host.Start(); // extension method
await host.StartAsync(); // class method
}
private static IHostBuilder CreateBuilder() => new HostBuilder()
.ConfigureAppConfiguration((hostingContext, config) =>
{
//...
})
.ConfigureLogging((hostingContext, logging) => {
//...
})
.ConfigureServices((hostContext, services) =>
{
//...
services.AddSingleton<IHostedService, MyService>();
});
}
}