.NET/ASP.NET Core

[ASP.NET Core] AddController(), AddMvc(), AddControllersWithViews(), AddRazorPages() 차이점

ddochea 2021. 6. 26. 11:33
반응형

ASP.NET Core에서 MVC 템플릿으로 프로젝트를 생성하면 Startup 클래스의 ConfigureServices 메소드에서AddControllersWithViews()를 확인할 수 있다.

public void ConfigureServices(IServiceCollection services)
{
	services.AddControllersWithViews();
}

함수 이름으로 유추해봐도 알 수 있듯이, MVC 모델의 Controller와 View를 ASP.NET Core에서 사용하겠다는 뜻을 의미한다. 그런데 AddControllersWithViews 가 아닌, AddMVC를 사용해도 문제없이 동작하는 것을 확인할 수 있다.

 

이 메소드들은 공통적으로 MvcServiceCollectionExtensions 클래스에서 제공하는데, 차이점으로 무엇이 있을지 알아보았다.

 

제목에 작성한 AddController(), AddMvc(), AddControllersWithViews(), AddRazorPages() 는 공통적으로 아래와 같은 기능을 사용할 수 있도록 해준다.

  • Controllers
  • Model 바인딩
  • Authorization
  • Vaildations

그 외는 조금씩 차이가 존재한다. 차이점은 아래와 같다.

기능 AddMvc() AddControllersWithViews() AddController() AddRazorPages()
API Explorer O O O X
CORS O O O X
Formatter Mapping O O O X
Antiforgery O O X O
TempData O O X O
Views O O X O
Pages O X X O
TagHelpers O O X O
MemoryCache O O X O

순수하게 MVC 패턴의 웹개발만 한다면 AddControllersWithViews(), WebAPI 개발이 목적이라면 AddController(), 비하인드 코드가 있는 razor page 방식의 웹 어플리케이션 개발은 AddRazorPages(), 모두 필요하면 AddMvc()를 사용하면 된다.

 

출처 : https://dotnettutorials.net/lesson/difference-between-addmvc-and-addmvccore-method/

 

AddController vs AddMvc vs AddControllersWithViews vs AddRazorPages

In this article, I am going to discuss the AddController() vs AddMvc() vs AddControllersWithViews() vs AddRazorPages() methods

dotnettutorials.net

 

반응형