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


108

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

감사합니다,


microsoft.com 웹 사이트 어디에서도 cshtml 파일을 본 적이없는 것 같습니다.
user34660

@ user34660 cshtml인지 aspx인지 어떻게 결정합니까? 확장이 숨겨집니다.
Sajuuk

답변:


111

다른 사람들이 대답했듯이 .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 프레임 워크가 잘 정의 된 풍부한 이벤트 구조와 함께 매우 간결하고 사용 가능한 모델을 제공하는 경우가 많이 있습니다. 그것은 모두 응용 프로그램의 요구와 그것을 구축하는 사람들의 선호도에 달려 있습니다.


11
+1, 이것은 상태 비 저장 웹을위한 상태 저장 환경을 만드는 ASP.NET Web Form의 목표를 구분하는 중요한 점입니다.
smartcaveman 2012-06-06

cshtml과 비교하여 aspx의 주요 이점 중 하나는 디자인 탭을 사용하여 페이지 자체 (WUSIWYG 종류)를보고 편집 할 수 있다는 것입니다. cshtml 파일을 사용하면 메모장을 사용하여 html 페이지를 편집 할 수도 있습니다. 당신은 "어둠 속에서"일하고 있습니다.
nivs1978

@ nivs1978 : 실제로 이것이 단점이라고 생각합니다. 너무 많은 개발자가 이것을 조잡한 마크 업을 작성하기 위해 버팀목으로 사용합니다. 결국 디자이너는 자체 내부 "브라우저"를 사용하여 뷰를 렌더링하기 때문에 페이지의 "거의"버전 만 표시 할 수 있습니다. 페이지가 어떻게 표시되는지에 대한 일반적인 감각을 얻을 수 있지만 실제 브라우저에서 렌더링 될 때까지 여전히 알 수 없습니다.
Joel Etherton

44

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를 사용하면 코드와 마크 업을 훨씬 쉽게 혼합 할 수 있습니다 .


6
Razor의 @ MikaëlMayer Modelmodel키워드를 사용하여 맨 위에 유형을 정의하는 강력한 형식의 뷰에 사용 됩니다.
사이드 Neamati

@SaeedNeamati ... SOAP webAPI 기반의 복잡한 마이크로 서비스를 사용하기 위해 웹 애플리케이션을 구축하고 있다고 가정 해 보겠습니다.이 시나리오에서는 asp.net mvc aspx 또는 mvc cshtml을 사용하는 것이 더 좋습니다. . 개인적으로 cshtml 구문이 더 쉽다고 느꼈습니다.
codemilan

좋은 대답 ...이 대답은 이해하기 훨씬 더 간단합니다 ..., 적어도 저와 같은 초보자에게는 :)
eRaisedToX

10

구문은 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는 의도적으로 그러한 품질이 없습니다.


나는 그것을 쓰기 시작했을 때, 조엘은 자신의 편집을하지했다,하지만 난 경우 다른 사람의 발견에 떠날거야 그것은 도움이
smartcaveman

4

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.