(번역) ASP.NET Core Razor Pages 가 뭘까?
새로운 ASP.NET Core 2 프레임 워크가 출시되면서 Microsoft와 그 community 에서 MVC (Model-View-Controller) 접근 방식에 대한 새로운 대안을 제공했습니다. Microsoft는 Razor Pages라고 이름을 지었습니다. 조금 다른 접근 방식이지만 Razor Pages는 몇가지 면에서 MVC와 여전히 유사합니다.
이 기사에서는 ASP.NET Razor Pages의 중요한 점을 다룰 것입니다.
- Razor Page - 정확히 무엇입니까?
- ASP.NET MVC 사용시 단점
- Razor Page 사용의 이점
- 이 두 가지 방법으로 Request 을 처리하는 방법을 비교해보자.
Razor Page - 정확히 무엇입니까?
Razor Page 는 ASP.NET MVC의 View 의 component 와 매우 유사합니다. 기본적으로 MVC와 동일한 문법과 기능을 가집니다.
Razor Page 와 MVC의 주요 차이점은 Razor Page 자체 내에 Model(모델)과 Controller(컨트롤러) 코드가 포함되어 있다는 것입니다. 간단히 말해 MVVM (Model-View-View-Model) 프레임 워크와 비슷합니다. 이는 양방향 데이터 바인딩과 isolated concerns 포함하여 쉬운 개발 경험을 제공합니다.
MVC는 많은 양의 동적 서버 View 들, Single Page App, REST API 및 AJAX 호출이 있는 웹 응용 프로그램에서 잘 작동하지만, Razor Pages는 read-only(읽기 전용) 이거나 기본 데이터 입력을 수행하는 단순한 페이지에 적합합니다.
이제 ASP.NET MVC는 웹 응용 프로그램 개발에서 매우 인기가 있었으며 이는 확실히 장점이 있습니다. 실제로 ASP.NET WebForms는 MVC의 MVVM 솔루션으로 특별히 설계되었습니다.
그러나 이 새로운 ASP.NET Core Razor Pages는 차세대 버전의 ASP.NET WebForms 이라고 보시면 됩니다.
ASP.NET MVC 단점
대부분의 사람들이 알고 있는 것처럼, MVC는 Model-View-Controller의 약자입니다. UI (사용자 인터페이스)를 구현하기위한 소프트웨어 개발에 사용되는 아키텍처 패턴입니다.
MVC는 가장 널리 사용되는 프레임 워크 중 하나이며, 전세계 수백만 웹 개발자가 사용하고 있지만 여전히 단점은 존재합니다. 그중에서 중요한 2 가지를 살펴 보겠습니다.
# 1 - 복잡성
ASP.NET MVC에는 TempData, RouteCollection, ViewData, Linq to SQL, Controller Action, Lambda Expression, Custom Route 및 HTML Helpers와 같은 개념들이 많이 있습니다.이 모든 것은 Model, View 및 Controller를 연결합니다.
이런 모든 기본 개념을 배우기 전까지는 ASP.NET MVC를 사용하여 웹 응용 프로그램을 만들 수 없습니다. 비록 그것들을 배웠다 하더라도, 여전히 대규모 어플리케이션을 구축 할 때는, 때때로 복잡한 문제에 직면하게 될 것입니다.
# 2 - 잦은 업데이트 비용
ASP.NET MVC에서 웹 개발자는 Model 과 View 가 분리되어 있어도 이를 완전히 무시할 수 없습니다. 이유는 Model를 자주 변경하면 View 에게 변경에 대한 요청이 넘칠 수 있기 때문입니다.
View 는 기본적으로 그래픽 디스플레이로, 응용 프로그램의 복잡성에 따라 렌더링하는 데 약간의 시간이 걸립니다. 응용 프로그램이 복잡하고 모델이 많이 변경된 경우 View 가 업데이트 요청보다 뒤쳐 질 수 있습니다. 따라서 개발자는 이런 상황을 변경 및 수정하는데 더 많은 시간을 투자해야 하므로 비용이 높아집니다.
Razor Page 사용의 이점
약 10 년 동안 ASP.NET MVC 개발 서비스를 제공해 왔습니다. 사실 Microsoft Gold Partner 인증을 받았습니다. 따라서 지식, 경험 및 전문 지식을 토대로, MVC 대신 ASP.NET Core Razor Page를 사용하면 좋은 두 가지 주요 이점을 말씀 드리겠습니다.
# 1 - Razor Page 의 구성이 개선되었습니다.
어떤 종류의 웹 개발에 MVC를 사용한 적이 있다면 전체 앱을 코딩하는 데 걸리는 시간을 알고 있을 것입니다. 동적 경로를 만들고, 올바르게 이름을 짓고, 수백 가지의 물건을 만드는 것에 많은 시간을 소비합니다.
한편, Razor Page 는 MVC에 비해 체계적입니다.
Razor Page 에서 파일은 기본적으로 보다 체계적으로 구성됩니다. 이전 ASP.NET WebForm과 같은 방식으로 Razor Page 와 전체 코드가 Webform 처럼 Code Behind 뒤에 있습니다. 예를 들어 sample.cshtml 그 아래에 sample.cshtml.cs 가 존재합니다.
# 2 - 단일 Responsibility
이전에 MVC 프레임 워크를 사용 해본 적이 있다면 일반적으로 다양한 actions 으로 가득 찬 커다란 Controller 클래스가 있다는 것을 알았을 것입니다. 이러한 클래스들은 새로운 것들이 점점 추가됨에 따라 더 커지는 바이러스와 같습니다.
그러나 Razor Pages에서는 각 앱 페이지에 자체 View와 Code로 구성되어 있으며 결과적으로 MVC 보다 덜 복잡합니다.
전반적으로 ASP.NET Core 는 Module 식 웹 프레임 워크입니다.
MVC에서 새 항목을 추가할 때마다 .NET Framework 의 새로운 버전으로 릴리스 해야합니다.
예를 들어, 마이크로 소프트는 MVC 4 에 Routing를 발표하고 추후 출시할때 Routing 할 Attribute 을 다시 또 다른 새로운 프레임 워크인 MVC 5에 공개했습니다.
반면에 ASP.NET Core 에서는 NuGet 패키지를 사용하여 이 모든 것을 관리합니다. 즉, 새로운 항목이 추가 될 때마다 새로운 .net 프레임 워크 버전에 릴리즈 하지 않으므로, 기존 프레임 워크를 업그레이드 하는 MVC보다 쉽습니다.
또한 .NET Core에서 새로운 NuGet 패키지 버전에 대한 업데이트를 릴리스 할 수 있으며, NuGet 패키지를 업데이트하여 최신 변경 사항으로 반영 할 수 있습니다.
이 두 가지 방법으로 Request 을 처리하는 방법을 비교해 보자.
위의 내용에서 ASP.NET Core Razor Page를 사용하여 웹 응용 프로그램을 작성하는 것이 MVC보다 덜 복잡하다고 설명했습니다. 여기서 우리는 행동을 통해 그것을 보여줍니다.
먼저 MVC로 시작합니다. 다음은 MVC가 Request 처리하는 방법에 대한 간단한 개요입니다.

보시다시피 Routing 은 MVC가 Request 를 처리하는데 있어서 결정하는 중요한 열쇠입니다. Routing 의 기본 구성은 Action 과 Controller 의 이름으로 조합되어 있습니다.
따라서 /staff/index를 요청하면 StaffController 클래스에서 Index라는 Action 을 Routing 합니다.
그러나 Code 의 Block 이 있는 모든 컨트롤러에 Request 을 Routing 하도록 커스텀마이징 하거나 설정 할 수 있습니다.
Razor Page 와 동일한 비교
Razor Pages가 Request 을 처리하는 방법에 대한 간략한 개요는 다음과 같습니다.

두가지 차이점은 Razor Page 에서 Request 를 하면 기본 Routing 환경의 Page 폴더에서 특정 Request 에 대한 Razor Page 를 찾습니다.
/contact/ 에 대한 Request 를 한다고 가정하면 ASP.NET Core 는 Request 시 사용한 것과 같은 이름을 가진 페이지를 찾아 직접 연결합니다.
즉, /contact/ 에 대한 요청은 Contact.cshtml로 연결됩니다.
그리고 .cshtml 파일을 Razor Page 로 간주하려면 Page Folder 안에 배치해야 하며, 마크 업에 @Page 를 포함해야 합니다.
이렇게 하면 Razor Page 가 Controller 의 동작으로 작동 합니다. 이제 MVC와 비교해 보면, 이는 별도의 코딩이 필요 없이 맞춤 경로 구성으로 인해 덜 복잡합니다.
결론적으로
Razor Pages 는 2018 년에 "less complexity" 시작으로, 모던 웹 앱 개발 의 출발점으로 보입니다 . 비교에 따르면 특정 Request 와 관련된 모든 것들을 한 곳으로 모으는 장점을 제공하는 것으로 나타났습니다. MVC에서 모든 Request 부분을 분산시켜야 합니다. 응용 프로그램은 거대한 퍼즐과 같습니다. 그런 다음 다시 코딩 작업을 해야 합니다.
번역 사이트
ASP.NET Core Razor Pages Vs MVC: Which Will Create Better Web Apps in 2018? | HackerNoon
<em>Brace yourself because this is going to be a lengthy but informative article!</em>
hackernoon.com