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