센로그
3. MVC 철학 본문
◆ MVC 철학
모델, 뷰, 컨트롤러로 구분하여 코드를 관리하는 패턴
ASP.NET Core에서 MVC는 다음과 같이 사용된다.
- Model : 데이터 모델. (데이터를 표현하는 구조)
- 요리 재료
- 메모리, 파일, DB 등에서 데이터 모델의 형태로 정보를 추출 (DTO 등)
- Controller : 데이터 가공, 필터링, 유효성 체크, 서비스 호출
- 재료 손질 및 요리
- 각종 Service를 통해 요리함 (DI로 서비스 추가)
- View : 최종 결과물을 어떤 형태로 보여줄지
- 최종 서빙
이런식으로 역할을 분담하면 유동적으로 기능을 확장 및 변경할 수 있고, 재사용이 쉽다는 장점이 있다.
ASP.NET Core에서의 MVC
좀 더 구체적으로 살펴보자.
ASP.NET Core에서 MVC에는 Controller/Action이라는 요소가 있다.
- Action: 요청에 대한 실제 처리 함수 (Handler)
- Controller는 액션들을 포함하고 있는 그룹을 의미한다.
기본 MVC 프로젝트에는 HomeController라는 '컨트롤러'가 있고, 이 안에 IActionResult 형태를 반환하는 '액션'들이 존재한다.
액션 함수들이 유저의 요청에 대한 실제 처리를 담당한다.
예시를 보자.
Program.cs의 미들웨어 파이프라인에 보면 이런 코드가 있었다.
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
- 어떤 요청을 받으면 해당 요청은 특정 '컨트롤러'와 그 안의 특정 '액션'으로 연결되어 처리된다.
- 위 코드에서, 요청은
- HomeController라는 컨트롤러로 연결되고
- Index에 해당하는 (HomeController의) 액션을 실행하여 처리된다.
- 위 코드에서, 요청은
HomeController에 있는 액션들을 보면, 기본적으로 다음과 같이 IActionResult 타입을 반환한다. (MVC)
public IActionResult Index()
{
return View();
}
- 위 코드는 HTML View를 생성하여 반환하는 코드이다. (Index.cshtml 파일)
ASP.NET Core MVC 플젝에서 자주 사용되는 IActionResult는 다음과 같다.
- ViewResult : HTML View 생성
- RedirectResult : 요청을 다른 곳으로 토스. (ex) 결제페이지로 연결)
- FileResult : 파일을 반환
- ContentResult : 특정 string을 반환
- StatusCodeResult : HTTP status code 반환
- NotFoundResult : 404 HTTP status code 반환
※ 참고: 위 코드에서는 뷰 생성시에 왜 return new ViewResult()라고 안하고 return View()라고 했을까? 차이점이 뭘까?
=> 뷰를 보여주기 위해 new ViewResult()로 새로 만들어서 반환해도 된다.
그런데 매번 new로 새로 만들기는 싫으니까, Controller라는 헬퍼 클래스에서 미리 만들어놓은 View() 메서드를 쓰는 거임.
- 얘도 내부적으로 ViewResult() 반환하도록 되어있음.
- 이렇듯 보통 각 IActionResult 이름에서 'Result'만 지운 이름의 헬퍼 메서드들이 정의되어있으니 잘 사용하면 된다.
- 예를들어 RedirectResult()에 대한 헬퍼 메서드는 Redirect()
'게임 > ASP.NET Core' 카테고리의 다른 글
6. View (0) | 2024.04.15 |
---|---|
5. Model Binding (+Validation) (0) | 2024.04.15 |
4. Routing (0) | 2024.04.15 |
2. Middleware 기초 (0) | 2024.04.15 |
1. MVC 프로젝트 소개 (Program.cs) (0) | 2024.04.15 |
Comments