왜 Web Forms를 통해 MVC를 사용 하시겠습니까?


11

최근 한 건축가는 회사가 Toyota (Web Forms) 만 있으면 롤스 로이스 솔루션 (MVC)을 제공한다고 회사에 설명했습니다.

웹 양식과 MVC에 대해 아키텍처 선택에 대해 어떻게 생각하는지 궁금합니다.


11
건축가는 ASP.NET MVC를 잘 이해하지 못한다고 생각합니다.
Adam Crossland

3
@Chris Webforms는 MVC의 하위 집합이 아닙니다. 둘 다 서로 독립적으로 작동합니다. 또한 webforms는 오래되어 아마도 더 오래 유지되지 않을 것입니다. 또한 프론트 엔드 웹 / UI 개발자에게는 적 그리스도입니다.
Erik Reppen

답변:


20

Rolls-Royce / Toyota의 비유는 몹시 결함이 있고 오해의 소지가 있습니다. 하나 (ASP.NET MVC)는 단순히 다른 것 (ASP.NET WebForms)보다 더 비싼 버전이 아닙니다. ASP.NET을 사용하여 웹 응용 프로그램을 작성하는 방법은 크게 다릅니다.

나에게 MVC와 WebForms의 가장 큰 아키텍처 차이점은 웹의 무 상태 환경에서 작동하는 방식입니다. 그것.

각 접근 방식에는 장점과 단점이 있지만 MVC를 사용하여 웹 사이트를 구축하는 것이 WebForms보다 훨씬 자연스럽게 느껴지는 방식 ( 누수 추상화 계층에 레이어가 있음 )을 정말 좋아합니다 .


1
그 기발한 추상화는 매우 문제가 있습니다. 학습 Asp .Net MVC는 http 프로토콜에 눈을 뜨고
Michal Franc

10

오래된 질문이지만 다른 누군가가 실제로 여전히 딜레마를 가지고있는 경우를 대비하여보다 자세한 답변을받을 가치가 있습니다.

궁극적으로 webforms는 여러 가지 예쁜 버튼을 누르고 프론트 엔드 (클라이언트) 항목이 당신을 위해 만들어 졌다는 것을 의미하는 씬 클라이언트 솔루션입니다. 웹 양식에서 크랭크를 만드는 방법을 아는 사람들이 있고 유지 관리 / 수정 가능성 문제가 전혀 없으며 사이트가 완전히 단기적이고 일회용 인 경우이 접근법에는 전혀 잘못된 것이 없습니다. 자신의 작업을 수행하는 방법을 배울 수는 있지만이 경우 웹 양식 webforms가 .NET 앱 개발자를 보호하려고 시도하고 대부분의 클라이언트 측 웹 개발자가 Microsoft를 살해하려는 모든 webforms 항목을 모두 알아야한다는 것을 알아야합니다. 책임 엔지니어.

다른 모든 사용 사례 시나리오의 99.5 %에서는 웹 개발자가 웹을 숨기려고하지 않았습니다. 실제로 웹 앱을 작성하려는 경우 실제로 웹 작동 방식을 배우는 것이 훨씬 낫기 때문입니다. 씬 클라이언트 솔루션과 씬 클라이언트 솔루션의 아이러니는 필연적으로 씬 클라이언트 접근 방식이 필연적으로 프론트 엔드에서 쓰레기를 부풀려 버리고 성능이 뛰어납니다. 더 중요한 것은, 이러한 솔루션은 실제로 자신이하는 일을 실제로 알고 있고 사실상 프레임 워크에 의해 제약을 받고 싶지 않은 사람들을 위해 모든 지옥을 유연하게 만들 수 없다는 것입니다.

CSS, JavaScript, HTML, XHR에 대한 모든 것을 알고있는 사람을 데리고 모든 길을 막는 프레임 워크로 완전히 쓸모 없게 만드는 것만 큼 의미가 없습니다.

  • 헤드 태그에서 '필요하지 않은'스크립트 태그를 모두 지우면 스크립트 종속성이 강화되지 않습니다. ( '스크립트 관리자'가 당신을 위해 그것을 처리하도록하는 것이 낫습니다.) 물론, 그들이 현재하고있는 일을 알고 있지만 그것이 엉망인 사람은 아무도 없습니다.

  • 모든 HTML을 하나의 거대한 양식 태그로 래핑한다고 주장합니다. HTML은 양식 내부의 양식을 허용하지 않으므로 웹 양식을 양식으로 만들거나 전혀하지 않습니다.

  • 브라우저와 상호 작용하여 서버에 메시지를 보낸 다음 서버가 응답 할 때 반응하여 UI 이벤트에 반응하는 것에 대한 18 단계의 "수명주기"와 같이 생성합니다. 거대한 쓰레기 더미가있는 프로세스를 추상화 할 필요가 없었습니다 (그리고 공평하게도 MS는 이것을 시도한 유일한 멍청이가 아닙니다).

  • 실제로 비웹 양식 솔루션을 문제에 사용하는 데 가능한 모든 것을 수행합니다. 예 : 내가 더 주니어 클라이언트 측 개발자 일 때 페이지 상단에 제출 버튼을 만드는 방법을 찾는 데 하루 종일 보냈습니다. 페이지 하단에 제출 버튼이 트리거되었습니다 ( 거대한 형태의 것). 일반적으로 5 분이 걸리지 만 JavaScript를 담당하는 웹 양식을 리버스 엔지니어링 한 후 몇 시간이 지난 후에는 마지막 양식 요소가 무엇인지 알려주는 속성을 설정하는 것을 발견했습니다. 제출 단추를 클릭 할 때 공식 Microsoft 제출 (tm) 처리기의 활성화와 관련하여 공식 Microsoft 제출 (tm) 단추 만 작동합니다.

따라서 롤스 로이스 대 토요타는 완전히 불합리합니다. 더 말하면 온보드 시스템을 사용하는 Microsoft 엔지니어링 핀토와 비교하여 너무 많은 돈을 지불하는 완전히 합리적 인 현대는 Microsoft 이외의 다른 사람으로부터 가스 또는 석유를 구입했을 때 자동으로 90도 회전을 자동으로 수행합니다. 에 벽이 슬램에 편리합니다. 웹에 대해 전혀 알지 못하고 Microsoft에 평생의 충성을 맹세하려는 suicidally 브랜드 충성도 운전자에게 이상적인 자동차입니다.

모든 .NET MVC는 실제로 간단하고 합리적이며 웹에서 튀어 나오도록 자체 레이어를 다시 만들지 않습니다. 그것은 당신을 위해 보일러 플레이트를 노크하는 데 도움이되는 것과 함께 작동합니다. 더 나은 / 저렴한 / 무료 프레임 워크를 사용할 수 있지만 이미 .NET에 고정되어 있다면 훨씬 더 나빠질 수 있습니다.

그러나 진지하게 웹 양식에서! @ # $를 멀리하십시오. 이제 거의 죽었습니다. 놓아 줘 고객이 실제로 새롭거나 다른 일을하고 싶을 때 또는 MS가 할 수 없기 때문에 쓰레기가 깨지기 시작할 때 독점적이고 유리한 시간별 지원 계약을 약속하면 고객에게 3 배의 돈으로 할 것이라고 말하십시오. 10,000 줄의 ajax.js 파일을 계속 추가하여 귀찮게 할 수는 없습니다.


안녕 에릭은 당신이 대답하는 걸 좋아 했어요 HTML 5와 CSS를 배우기 만하면 게시물이 유익합니다.
차드

+1 아주 좋은 답변입니다! 웹 양식에 대한보다 복잡한 접근 방식이라고 생각했기 때문에 수년 동안 MVC를 피했습니다. 실제로는 웹 양식으로 수행하려는 작업을 더 쉽게 만들 수 있습니다 (예 : 항상 스크립트 관리자와 같은 모든 Microsoft BS를 피하려고합니다).
Drew Chapin

6

ASP.NET MVC 솔루션은 WebForms 솔루션보다 더 복잡 할 필요는 없습니다. 개인적으로 ASP.NET MVC는 실제로 WebForms보다 훨씬 간단하며 본질적으로 더 깨끗한 것 같습니다.

내 경험상 많은 MVC 프레임 워크 (ASP.NET, Rails, CodeIgniter 등)는 동일한 핵심 기능과 규칙을 가지고 있습니다. WebForms는 실제로 웹 관점에서 이상한 오리입니다. 내 생각에 대부분의 웹 프로그래머는 WebForms보다 ASP.NET MVC를 선택하는 데 훨씬 빠릅니다.


5

ASP.NET WebForms보다 ASP.NET MVC를 사용하는 가장 큰 이유는 테스트 가능성입니다. 물론 WebForms를 단위 테스트 할 수는 있지만 모의 프레임 워크와 많은 고통이 필요합니다. 두 번째 이유는 MVC가 우려 사항을 좀 더 쉽게 분리 수 있기 때문입니다 . 이것은 많은 코드 재사용을 제공하고 코드를 느슨하게 결합 할 수 있습니다. 이것은 ASP.NET에서 MVP와 같은 패턴으로 동일한 작업을 수행 할 수 없다는 것을 의미하지는 않습니다.

MVC의 단점은 많은 기능을 잃고 지난 10 년 동안 (거의) WebForms에 내장되어 있다는 것입니다. MVC는 처음부터 비슷한 기능을 제공하기 위해 먼 길을 왔습니다.

성능면에서 어느 기술이 "더 빠르다"는 증거가 있습니까?

나는 하나가 다른 것보다 낫다고 생각하지 않습니다. 저는 MVC 프레임 워크를 정말 좋아하고 큰 성공을 거두었지만 항상 프로젝트와 일치하는 기술을 선택해야합니다.

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