새로운 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 부분을 분산시켜야 합니다. 응용 프로그램은 거대한 퍼즐과 같습니다. 그런 다음 다시 코딩 작업을 해야 합니다.