Tìm hiểu về phương thức WebApplication.CreateBuilder(args) trong .NET Core

Để tạo một ứng dụng web .NET Core, chúng ta thường sử dụng phương thức WebApplication.CreateBuilder(args). Phương thức này thực hiện nhiều tác vụ quan trọng để thiết lập môi trường cho ứng dụng. Dưới đây là cách nó hoạt động:

var builder = WebApplication.CreateBuilder(args);

Phương thức CreateBuilder được định nghĩa như sau:

public static WebApplicationBuilder CreateBuilder(string[] args) =>
    new(new() { Args = args });

Phương thức này khởi tạo một đối tượng WebApplicationBuilder với các cài đặt mặc định và truyền vào tham số args (đối số dòng lệnh).

Cấu trúc của WebApplicationBuilder

WebApplicationBuilder chứa nhiều thuộc tính và phương thức quan trọng, b.g.:

  • Environment: Cung cấp thông tin về môi trường hosting.
  • Services: Tập hợp các dịch vụ cho ứng dụng.
  • Configuration: Quản lý cấu hình của ứng dụng.
  • Logging: Cung cấp giao diện để cấu hình các nhà cung cấp đăng nhập.
  • WebHost: Cấu hình các thuộc tính cụ thể cho máy chủ web.
  • Host: Cấu hình các thuộc tính chung cho host.

Các thuộc tính này được khởi tạo và cấu hình trong quá trình xây dựng WebApplicationBuilder.

Quá trình Khởi tạo

Phương thức Initialize trong HostApplicationBuilder thực hiện các bước sau:

  1. Thêm cấu hình từ đối số dòng lệnh:
HostingHostBuilderExtensions.AddCommandLineConfig(Configuration, settings.Args);
  1. Cập nhật cấu hình từ HostApplicationBuilderSettings:
if (settings.ApplicationName is not null)
{
    optionList ??= new List<KeyValuePair<string, string?>>();
    optionList.Add(new KeyValuePair<string, string?>(HostDefaults.ApplicationKey, settings.ApplicationName));
}
  1. Tạo môi trường hosting:
(HostingEnvironment hostingEnvironment, PhysicalFileProvider physicalFileProvider) = HostBuilder.CreateHostingEnvironment(Configuration);
  1. Cấu hình tập hợp dịch vụ:
HostBuilder.PopulateServiceCollection(
    Services,
    hostBuilderContext,
    hostingEnvironment,
    physicalFileProvider,
    Configuration,
    () => _appServices!);
  1. Khởi tạo logging:
logging = new LoggingBuilder(Services);

Tạo và Sử dụng IHost

Cuối cùng, phương thức Build trong HostApplicationBuilder được gọi để tạo ra một IHost hoàn chỉnh:

public IHost Build()
{
    if (_hostBuilt)
    {
        throw new InvalidOperationException(SR.BuildCalled);
    }
    _hostBuilt = true;

    using DiagnosticListener diagnosticListener = HostBuilder.LogHostBuilding(this);
    _hostBuilderAdapter?.ApplyChanges();

    _appServices = _createServiceProvider();

    // Prevent further modification of the service collection now that the provider is built.
    _serviceCollection.MakeReadOnly();

    return HostBuilder.ResolveHost(_appServices, diagnosticListener);
}

Phương thức này đảm bảo rằng chỉ có thể gọi Build một lần, và sau khi gọi, tập hợp dịch vụ không thể bị thay đổi nữa.

Kết luận

Phương thức WebApplication.CreateBuilder(args) là điểm bắt đầu quan trọng trong việc tạo và cấu hình một ứng dụng web .NET Core. Nó khởi tạo và cấu hình các thành phần cần thiết như môi trường, dịch vụ, cấu hình, và logging, giúp bạn nhanh chóng thiết lập môi trường cho ứng dụng của mình.

Thẻ: .NET-Core webapplication webapplicationbuilder ihostenvironment iservicecollection

Đăng vào ngày 14 tháng 7 lúc 04:07