본문 바로가기
ASP.NET Core

ASP.NET MVC vs ASP.NET Core] startup, host 차이점

by Fastlane 2023. 2. 7.
728x90
반응형

MVC app은 Window web server의 IIS에 의해 실행된다. Core는 MVC와 다르게, command line에서 dotnet run을 사용하여 실행가능하다. 따라서 Window systems이 아닌 환경에서도 실행이 가능하다. 

 

Startup

  • ASP.NET MVC

IIS내에서 호스트되는 ASP.NET은 특정 object(Global.asax 파일의 class)를 인스턴스화하고 request가 오면 특정 함수를 호출합니다. 첫번째 request가 오면, 요청 자체를 처리하기 전에 Application_Start 함수를 호출합니다. 

 

많은 NuGet packages는 WebActivator package를 사용해서 app startup에 실행된 code를 설정한다. 기본적으로 해당 코드는 App_Start 폴더에 위치한다. 

WebActivator : web application의 Startup, Shutdown code를 쉽게 설정할 수 있도록 해주는 package이다. 

 

OWIN, KATANA를 사용할 수도 있습니다. 

 

  • ASP.NET Core 

독립 실행형 프로그램으로 app의 entry point를 포함하는 Program.cs 파일이 있다. 

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();

builder를 사용하여 host와 service를 구성한다. 그 다음 app에 대한 request pipeline을 작성한다. 

이전 .NET에서는 Program.cs에서 참조하는 별도의 Startup.cs파일이 있었지만, .NET6부터는 Startup.cs 파일 사용은 되나, 기본은 아니다. 

 

앱 시작 시, 실행되어야 하는 코드는 Program.cs에 있거나, IHostedService의 형태로 등록된다. 

728x90

Host

  • ASP.NET MVC

IIS

  • ASP.NET Core 

다양한 서버에서 실행 가능하며, 기본 크로스 플랫폼 서버인 Kestrel이 좋은 선택이다. 

Kestrel은 IIS 모듈과 동일한 기능이 없다. 동일한 동작을 위해서는 middleware를 구성해야 한다. 

728x90
반응형

댓글