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의 전반적인 프로세스는 다음과 같다:
WebApplication.CreateBuilder()
에서 빌더 개체(WebApplicationBuilder
타입)를 생성한다.
var builder = WebApplication.CreateBuilder(args);
빌더의 Services
의 의존성 주입 서비스 컬렉션에 서비스를 추가한다.
AddControllers()
, AddEndpointsApiExplorer()
, AddSwaggerGen()
과 같은 자주 사용하는 서비스들은 별도의 메서드 사용.AddTransient()
, AddScoped()
, AddSingleton()
중 하나의 라이프 타임을 정해서 DI(의존성 주입)한다. 이들 메서드는 항상 첫 번째 매개 변수는 인터페이스, 두 번째 매개 변수는 인터페이스를 구연한 클래스(서비스) 요구한다.Build()
메서드를 사용하여 앱(WebApplication
타입)을 빌드한다.
var app = builder.Build();
미들웨어를 추가하여 요청에 따른 파이프라인을 설계한다.
→UseHttpsRedirection()
, UseAuthorization()
, MapControllers()
…
Run()
메서드로 앱 실행.
WebApplicationBuilder builder = WebApplication.CreateBuilder(args);
Service.AddController()
, …)Build()
)IServiceCollection Services
→ DI에 서비스 추가ConfigurationManager Configuration
→ 설정(컨피그)파일 추가ILoggingBuilder Logging
→ 로거 추가IWebHostEnvironment Environment
→ 호스트 환경 값 받아옴ConfigureWebHostBuilder WebHost