[Razor] ASP.NET Core Razor Page vs MVC

2018. 11. 6. 11:56WEB/ASP.NET MVC

이 글은 https://hackernoon.com/asp-net-core-razor-pages-vs-mvc-which-will-create-better-web-apps-in-2018-bd137ae0acaa을 바탕으로 작성되었습니다. 본 문서에는 원문과 다른 내용추가, 삭제 및 변경을 다소 포함하고 있습니다.

ASP.NET Core2 프레임워크의 발표와 함께 Razor Page가 소개되었습니다. Razor Page는 ASP.NET MVC와 유사하면서도 새로운 웹개발 접근방식을 제공합니다.

여기에서는 ASP.NET Razor Page의 중요한 몇가지 부분에 대해서 다루고자 합니다.

  • Razor Page란 정확히 무엇인가?
  • ASP.NET MVC의 단점
  • Razor Page의 장점

Razor Page란 정확히 무엇인가?

Razor Page는 ASP.NET MVC의 ViewComponent와 구조적으로 유사합니다. 또한 Razor Page는 기본적으로 MVC와 동일한 구문과 기능을 사용합니다.

참고: ViewComponent란?
ASP.NET MVC의 PartialView와 동일하게 부분적인 렌더링을 담당하는 컴포넌트입니다. PartialView와 다른 점은 View 렌더링을 위해 Model을 전달받지 않으며 독자적으로 비지니스 로직을 가지고 View 렌더링을 수행할 수 있습니다.

Razor Page가 MVC와 가장 차별화되는 부분은 Controller와 Model 코드를 Razor Page 내부에 위치시킨다는 것입니다.

쉽게 말하면 MVVM(Model-View-View-Model) 프레임워크와 유사하다고 볼 수 있습니다. MVVM은 Two-Way 데이터 바인딩을 제공하며 보다 격리된 관점에서 단순한 개발경험을 지원합니다.

참고: MVVM이란?
MVVM은 MVC와 유사한 디자인 패턴으로 UI와 비지니스 로직을 분리하기 위한 개발패턴 입니다. MVC는 Model-View-Controller구분을 통해 View Rendering(One-Way)을 지원하지만, MVVM은 ViewModel을 통해 View와 상호작용(Two-Way)을 지원합니다. MVC는 모든 요청을 Controller가 처리하는 형태라면, MVVM은 View 마다 존재하는 ViewModel이 Controller의 역할을 대신하기 때문에 View 별로 격리된 관점에서 생각하고 개발할 수 있습니다.

ASP.NET MVC는 동적 Server View 렌더링, Single Page App개발, REST API 구현, AJAX 요청 처리 등 다양한 형태의 웹 개발 시나리오를 모두 지원하지만, Razor Page는 페이지 개발에 맞추어진 개발모델을 지원합니다.

ASP.NET Core Razor Page는 ASP.NET WebForm에서 한단계 발전된 프레임워크로도 볼 수 있습니다.

ASP.NET MVC의 단점

MVC는 가장 대중적인 프레임워크이고 세계 수백만 웹개발자들에 의해 사용되고 있지만 여전히 단점을 가지고 있습니다. 가장 큰 단점 2가지를 꼽으면 아래와 같습니다.

#1 복잡성

ASP.NET MVC는 TempData, RouteCollection, ViewData, Linq to SQL, Controller Action, Lambda Expression, Custom Route, HTML Helper와 같은 다양한 개념들이 존재하며 모두 Model, View, Controller 구현과 밀접하게 관련되어 있습니다.

이러한 모든 기본개념들을 익히기 전까진 ASP.NET MVC 웹어플리케이션 개발을 원활하게 진행 할 수 없습니다. 모든 개념을 익혔다고 해도 MVC만의 코드 파편화와 복잡성 문제에 직면할 수 있습니다. 특히 큰 규모의 어플리케이션을 개발할 때 이러한 복잡성이 두드러지게 나타납니다.

#2 잦은 업데이트에서 비용문제

ASP.NET MVC개발에서 View와 Model은 서로 의존적이기 때문에 View와 Model을 완전히 분리하여 생각할 수 없습니다. 이러한 문제 때문에 Model이 자주 변경되면 관련된 모든 View도 수정되야 합니다.

View는 시각적인 표현을 담당하기 때문에 UI의 복잡성에 따라 시간이 다소 소요되는 작업입니다. View가 화려하고 복잡한 웹사이트라면 Model 변경은 큰 부담으로 다가오게 됩니다.

Razor Page의 장점

#1 더 나은 구조화

MVC 개발을 해왔다면 하나의 웹어플리케이션을 MVC로 개발하는데 많은 시간이 소요된다는걸 알 것입니다. 라우팅을 설정하고, 컨벤션을 바탕으로 적절한 작명을 통해 파일들을 추가한 후 적절한 코드를 작성하는 등의 작업이 필요합니다.

반대로 Razor Page는 MVC에 비해서 잘 구조화되어 있습니다.

하나의 페이지는 하나의 Razor Page 파일로 대응됩니다. Razor Page를 추가하면 ASP.NET WebForm 처럼 Razor View와 Code Behind(Model+Controller)가 생성됩니다.

#2 단일 책임

ASP.NET MVC에서 Controller는 다양한 Action을 처리하기 위해 방대한 코드를 포함하게 됩니다. 하나의 Controller는 다양한 요청을 처리하기 위해 다양한 코드를 포함합니다.

Razor Page에서 각 페이지가 요청에 대응하며 자신의 View와 Code만 페이지에 포함되게 됩니다. 따라서 MVC에 비해서는 단일 Class에 더 적은 코드를 포함하게 됩니다.

결론

Razor Page는 장래가 유망한 새로운 웹개발 프레임워크로 보입니다. 하나의 페이지를 출력하기 위해 ASP.NET MVC는 코드를 여러 곳에 분산시켜야 했고 퍼즐처럼 하나의 조각으로 맞추어 가며 개발해야 했다면, Razor Page는 필요한 모든 코드들이 하나의 페이지에 위치하기 때문에 웹개발에 있어 충분한 이점을 제공할 것으로 보입니다.

References


'WEB > ASP.NET MVC' 카테고리의 다른 글

[ASP.NET] ASP.NET Core 2.0 호스팅  (0) 2017.12.05
[ASP.NET] Web.config 암호화  (0) 2016.06.14
[ASP.NET] (HRESULT: 0x80070057 (E_INVALIDARG))  (0) 2014.06.13
[ASP.NET MVC] AsyncController의 사용  (0) 2014.03.26