1. program.cs 개요

var builder = WebApplication.CreateBuilder(args); // <--- 1. Create the Builder (ASP.NET convention)

// --- 2. Add services in builder or do DI
// default services added to the service container when creating 'web api project' template
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

// --- 3. Build the App (ASP.NET convention) ---
var app = builder.Build(); 

// --- 4. Add middleware in app ---
// default middleware when choosing create 'web api project'
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();

app.Run(); // <--- 5. Run the App (ASP.NET convention)

Program.cs 클래스는 .NET Core 앱의 최상위 클래스다. .NET Core 앱의 모든 bootstrapping 프로세스는 program.cs 클래스에서 진행된다.

Program.cs의 전반적인 프로세스는 다음과 같다:

  1. WebApplication.CreateBuilder()에서 빌더 개체(WebApplicationBuilder타입)를 생성한다.

    var builder = WebApplication.CreateBuilder(args);
    
  2. 빌더의 Services의 의존성 주입 서비스 컬렉션에 서비스를 추가한다.

  3. Build() 메서드를 사용하여 앱(WebApplication 타입)을 빌드한다.

    var app = builder.Build();
    
  4. 미들웨어를 추가하여 요청에 따른 파이프라인을 설계한다. →UseHttpsRedirection(), UseAuthorization(), MapControllers()

  5. Run() 메서드로 앱 실행.

2. WebApplicationBuilder

WebApplicationBuilder builder = WebApplication.CreateBuilder(args);

2.1 builder(WebApplicationBuilder) 역할

  1. 앱에서 필요한 서비스 및 configuration들을 주입 및 설정(Service.AddController(), …)
  2. 이후 앱을 빌드(Build())

2.2 프로퍼티(필드, 멤버 변수)들