[asp.net] cshtml 대 aspx를 선택하는 것이 더 나은 이유는 무엇입니까?

cshtml을 선택하는 것이 더 나은 것이 무엇인지, 왜 또는 언제, 그리고 aspx 기술을 선택하는 것이 더 나은지, 왜 또는 언제를 알고 싶습니다. 이 두 기술의 용도는 무엇입니까?

감사합니다,



답변

다른 사람들이 대답했듯이 .cshtml(또는 .vbhtml그것이 당신의 취향이라면) MVC 엔진을로드하는 핸들러 매핑을 제공합니다. .aspx확장은 단순히 aspnet_isapi.dll을 그 수행 컴파일을로드하고 웹 양식을 제공합니다. 핸들러 매핑의 차이점은 MVC 응용 프로그램과 WebForms 응용 프로그램이 모두 공통 루트 아래에있을 수 있도록 두 가지가 동일한 서버에 공존하도록 허용하는 방법입니다.

이를 통해 http://www.mydomain.com/MyMVCApplication 이 유효하고 http://www.mydomain.com/MyWebFormsApplication 이 표준 웹 양식으로 유효하도록 MVC 규칙과 함께 제공됩니다 .

편집 :
기술의 차이와 관련하여 MVC (Razor) 템플릿 프레임 워크는 .Net 페이지를 모델 (비즈니스 / 데이터 개체)간에 코드 논리를 분리하는 템플릿 뷰의보다 RESTful “웹 기반”플랫폼으로 반환하도록 설계되었습니다. ,보기 (사용자가 보는 것) 및 컨트롤러 (둘 사이의 연결). WebForms 모델 (aspx)은 Microsoft가 복잡한 자바 스크립트 임베딩을 사용하여 이벤트와 페이지 간 고유 한 상태를 유지할 수있는 페이지 라이프 사이클을 갖춘 WinForms 애플리케이션과 유사한보다 상태 저장 애플리케이션을 시뮬레이션하려는 시도였습니다.

둘 중 하나를 사용하는 선택은 두 시스템에 대한 논쟁이 있기 때문에 항상 논쟁의 여지가 있습니다. MVC 아키텍처의 단순함 (라우팅은 간단하지 않지만)과 Razor 구문의 용이함을 좋아합니다. WebForms 아키텍처가 효과적인 웹 플랫폼이 되기에는 너무 무겁다 고 생각합니다. 즉, WebForms 프레임 워크가 잘 정의 된 풍부한 이벤트 구조와 함께 매우 간결하고 사용 가능한 모델을 제공하는 경우가 많이 있습니다. 그것은 모두 응용 프로그램의 요구와 그것을 구축하는 사람들의 선호도에 달려 있습니다.


답변

Razor는 ASP.NET MVC 용 뷰 엔진 이며 템플릿 엔진 이기도합니다. 입니다. Razor 코드와 ASP.NET 인라인 코드 (마크 업과 혼합 된 코드)는 모두 먼저 컴파일되고 실행되기 전에 임시 어셈블리로 전환됩니다. 따라서 C # 및 VB.NET이 둘 다 IL로 컴파일되어 상호 교환이 가능한 것처럼 Razor와 인라인 코드는 모두 상호 교환이 가능합니다.

따라서 스타일과 관심의 문제입니다. ASP.NET 인라인 코드보다는 razor에 더 익숙합니다. 즉, .aspx 페이지보다 Razor (cshtml) 페이지를 선호합니다.

당신이 Human수업 을 받고 그것을 렌더링 하고 싶다고 상상해보십시오 . 에서 cshtml 파일 당신은 쓰기 :

<div>Name is @Model.Name</div>

에있는 동안 영문 파일 당신은 쓰기 :

<div>Name is <%= Human.Name %></div>

보시다시피, @sign of razor를 사용하면 코드와 마크 업을 훨씬 쉽게 혼합 할 수 있습니다 .


답변

구문은 Razor ( .cshtml/ .vbhtml)와 WebForms ( .aspx/ .ascx) 간에 확실히 다르지만 (Razor는 둘 중 더 간결하고 현대적임) 둘 다 View Engines / Templating Engines, 전통적인 ASP.NET으로 사용할 수 있다고 언급 한 사람은 없습니다. Web Forms 컨트롤은 모든 .aspx 또는 .ascx 파일에서 사용할 수 있습니다 (MVC 아키텍처와의 결합에서도).

이는 문제에 대한 오랜 솔루션이 확립되고 플러그 형 구성 요소 (예 : 대용량 파일 업로드 컨트롤)로 패키지화되어 MVC 사이트에서 사용하려는 상황과 관련이 있습니다. Razor로는이 작업을 수행 할 수 없습니다. 그러나 Web Form보기를 사용하여 기존 ASP.NET 아키텍처에서 사용하는 것과 동일한 백엔드 처리를 모두 실행할 수 있습니다.

또한 ASP.NET 웹 양식보기에는 코드 숨김 파일이있을 수 있으므로보기와 함께 컴파일되는 별도의 파일에 논리를 포함 할 수 있습니다. 소프트웨어 개발 커뮤니티가 긴밀하게 결합 된 아키텍처와 스마트 클라이언트 패턴을 나쁜 관행 으로 인식하고 있지만, 이전에는 작업을 수행하는 주요 방법이었으며 .aspx / .ascx 파일에서 여전히 가능합니다. Razor는 의도적으로 그러한 품질이 없습니다.


답변

Cshtml 파일은 Razor에서 사용하는 파일이며이 질문에 대한 답변으로 언급했듯이 주요 이점은 단위 테스트 내에서 렌더링 할 수 있다는 것입니다. 이 다른 주제에 대한 다양한 답변은 다른 많은 흥미로운 점을 가져올 것입니다.


답변