MVC보다 ASP.NET WebForms를 선호하는시기 Microsoft가 말한 것을 알고 있습니다

Microsoft가 말한 것을 알고 있습니다

ASP.NET MVC는 WebForms를 대체하지 않습니다.

그리고 일부 개발자들은 WebForms가 MVC보다 개발 속도가 더 빠르다고 말합니다. 그러나 코딩 속도는 기술과 함께 편안함 수준으로 떨어 지므로 그 정답에 대한 답변을 원하지 않습니다.

ASP.NET MVC가 개발자에게 응용 프로그램을보다 강력하게 제어 할 수 있다는 점에서 WebForms가 더 이상 사용되지 않는 이유는 무엇입니까? 또는 새로운 개발을 위해 언제 MVC보다 WebForms를 선호해야합니까?



답변

Webforms vs. MVC는 현재 뜨거운 주제로 보입니다. 내가 아는 모든 사람은 MVC가 다음 위대한 일이라고 선전합니다. 그것에 약간의 dabblings에서, 그것은 괜찮아 보이지만, 나는 그것이 webforms의 끝이라고 생각하지 않습니다.

내 추론과 MVC를 통해 웹 양식을 선택하는 이유에 대한 추론은 하나가 다른 것보다 나은 것이 아니라 비즈니스 관점과 관련이 있습니다.

시간 / 돈은 웹 양식이 MVC보다 선택되는 가장 큰 이유입니다.

대부분의 팀에서 웹 양식을 알고 있고 MVC를 빠르게 익힐 시간이 없다면 생성되는 코드의 품질이 좋지 않을 수 있습니다. MVC의 기본 사항을 익힌 다음 복잡한 페이지로 들어가서 수행해야하는 작업은 매우 다릅니다. 학습 곡선이 높기 때문에이를 예산에 반영해야합니다.

웹 양식으로 작성된 대규모 웹 사이트가있는 경우 사이트에 서로 다른 유형의 페이지가 두 개가 없도록 웹 양식으로 새 페이지를 만드는 경향이 더 큽니다.

나는 이것이 전혀 또는 전혀 접근하지 않는다고 말하지는 않지만, 특히 팀의 모든 사람들이 MVC에 익숙하지 않은 경우 두 가지가 모두 있으면 코드를 유지하기가 어려워집니다.

우리 회사는 최근 MVC로 3 개의 테스트 페이지를 수행했습니다. 우리는 앉아서 그들을 설계했습니다. 우리가 겪은 한 가지 문제는 대부분의 화면에 동일한 페이지에보기 및 편집 기능이 있다는 것입니다. 결국 페이지에 둘 이상의 양식이 필요합니다. 우리가 마스터 페이지를 사용하지 않는 한 큰 문제는 없습니다. 우리는 webforms 페이지와 MVC 페이지가 동일한 모양과 느낌을 위해 동일한 마스터 페이지를 사용할 수 있도록 개정해야했습니다. 이제 추가 중첩 계층이 있습니다.

이러한 페이지가 올바른 MVC 분리를 따르도록 완전히 새로운 폴더 구조를 만들어야했습니다.

나는 3 페이지에 대한 파일이 너무 많다고 생각했지만 그것은 내 개인적인 의견입니다.

내 의견으로는 MVC를 사용하기 위해 사이트를 업데이트하는 데 시간 / 돈이 없다면 MVC보다 webforms를 선택하는 것입니다. 이것에 반쯤 반박했다면, 지금 가지고있는 웹폼보다 나을 것입니다. 더 나쁜 것은 경영진이 알고있는 것보다 열등한 것으로 볼 수 있기 때문에 엉망인 경우 회사에서이 기술을 실패로 설정할 수도 있습니다.


답변

3 년 동안 ASP .Net WebForms 응용 프로그램을 개발했으며 하루 동안 MVC 자습서를 수행 한 후 판매되었습니다. MVC는 거의 항상 더 나은 솔루션입니다. 왜?

  • 페이지 라이프 사이클이 더 간단하고 효율적입니다.
  • html 컨트롤 외에 컨트롤과 같은 것은 없습니다. ASP .Net이 생성하는 내용을보기 위해 출력을 디버깅 할 필요는 없습니다.
  • ViewModel은 강력한 성능을 제공하고 수동 제어 바인딩을 수행 할 필요가 없으며 바인딩과 관련된 많은 오류를 제거합니다.
  • 한 페이지에 여러 양식을 가질 수 있습니다. 이것은 WebForms의 심각한 제한이었습니다.
  • 웹은 상태 비 저장이며 MVC는 웹 아키텍처와 더 밀접하게 일치합니다. Webforms는 ViewState를 도입하여 상태와 버그를 소개합니다. ViewState는 자동으로 백그라운드에서 작동하므로 항상 원하는 방식으로 동작하지는 않습니다.
  • 요즘 웹 애플리케이션은 ajax와 함께 작동해야한다. 더 이상 전체 페이지를로드 할 수 없습니다. MVC는 JQuery를 사용하여 아약스를 훨씬 더 쉽고, 쉽고 효율적으로 만듭니다.
  • 페이지에 여러 양식을 가질 수 있고 아키텍처는 URL 호출에 의해 구동되므로 JQuery를 사용하여 편집 양식과 같은 다른 양식을 현재 페이지에로드하는 것과 같은 펑키 한 작업을 수행 할 수 있습니다. 이것이 무엇을 할 수 있는지 알게되면 놀라운 일을 쉽게 할 수 있습니다.
  • ASP .Net WebForms는 html에 대한 추상화 일뿐만 아니라 매우 복잡한 것입니다. 때로는 이상한 버그가 발생하여 필요 이상으로 오랫동안 문제를 겪을 수 있습니다. 많은 경우에 실제로 무엇이 잘못되고 있는지 알 수 있지만 그것에 대해 아무것도 할 수 없습니다. 당신은 이상한 해결 방법을 마칩니다.
  • WebForms는 디자이너에게 좋은 기술을 제공하지 않습니다. 디자이너는 종종 html로 직접 작업하는 것을 좋아합니다. MVC에서는보기이며 WebForms에서는 반나절의 작업입니다.
  • 웹 플랫폼이 빠르게 발전함에 따라 WebForms는 계속 유지되지 않습니다. HTML5의 새로운 태그 나 기능을 인식하지 못하지만 비싼 타사 컨트롤을 얻거나 Microsoft가 업데이트를 발행 할 때까지 기다리지 않는 한 여전히 동일한 내용을 렌더링합니다.
  • WebForms의 컨트롤은 많은 방법으로 제한합니다. MVC에서는 JQuery 라이브러리를 가져 와서 템플릿에 통합하면됩니다.

WebForms가 발전함에 따라 위의 문제 중 일부가 어느 정도 해결되었다는 것을 알고 있지만 이것이 원래의 경험이었습니다. 프로젝트가 이미 사용하지 않는 한 WebForms에 대한 비즈니스 사례를 찾는 것이 매우 어렵다는 것을 알 수 있습니다.


답변

Microsoft 의 MVC 전문가 인 Scott Guthrie 에게 이메일을 보냈습니다 . 그리고 아마도이 질문에 대답 할 수있는 가장 유능한 사람입니다. 그는 대답하기에 충분히 친절했습니다.

“다른 고객들은 다른 프로그래밍 방식을 찾고 있으며 WebForms를 좋아하고 훌륭하다고 생각합니다. 다른 사람들은 MVC를 좋아하고 훌륭하다고 생각합니다. 그래서 우리는 두 가지 모두에 투자하고 있습니다.”

나에게 이것은 기술적 인 문제가 아니라고 말합니다. 당신이 원한다면 그것은 “소프트 이슈”에 가깝습니다. 개인적인 취향 중 하나. 이것은 당신 중 몇몇이 말한 것과 일치합니다.

모든 답변에 감사드립니다.


답변

이것은 많은 답변이있는 오래된 질문이지만 아무도 목록에있을 것으로 예상되는 답변이 없었습니다.

짧은 대답은 다음과 같습니다.

  • 최신 프로그래밍 규칙과 업계에서 채택 된 ASP.NET 플랫폼 패턴을 사용하여 웹 응용 프로그램을 올바르게 작성하려면 ASP.NET MVC를 사용하십시오. 단점은 HTML과 클라이언트 측 리소스 (자바 스크립트, CSS)가 작동하는 방식을 알고 학습 곡선이 가파르지만 일단 파악되면 갑자기 끝나는 MVC 프로그래밍 사고 방식을 강화하는 것입니다.
  • GUI 중심의 RAD (Rapid Application Development) , 드래그 앤 드롭 방식을 사용하여 무언가를 매우 빠르게 프로토 타이핑 하기 위해 ASP.NET Web Forms를 사용하십시오. 15 분이며 솔루션은 개발자가 지원하는 것이 아닙니다. 또는 GUI 또는 Windows Forms 개발 에 대한 배경 지식이 있고 지식을 웹으로 이전하려는 경우 ASP.NET Web Forms를 사용하십시오 .

그러나 이것을 올바르게 보려면 각각의 역사를 이해해야합니다.

ASP.NET Web Forms는 Visual Basic 6 ActiveX 컨트롤, 서버의 VB6 DLL 및 ASP Classic을 사용하여 동적 웹 응용 프로그램을 구축 한 사람들에게 Microsoft의 대답이었습니다. 당시에는 이러한 Microsoft 도구를 사용한 웹 개발이 엉망이었습니다. ASP.NET Web Forms는 당시 Windows 스택에서 생산적인 비즈니스 프로그래밍을 수행하는 방법에 대한 드로잉 보드로 돌아가는 Microsoft의 결과물 인 .NET Framework 전체와 함께 놀랍고 아름답습니다.

전체 접근 방식은 개발자에게 Windows 응용 프로그램 개발과 매우 유사하지만 인터넷 서비스의 힘을 사용하여 두 가지 이점을 모두 제공하는 것이 었습니다. 아이디어는 VB6 / WinForms “양식”(창)과 마찬가지로 웹 페이지 도 양식 (창과 마찬가지로 양식) 이며 그 양식에서는 레이블, 텍스트 상자, VB / WinForms GUI 개발자에게 익숙한 데이터 그리드, 버튼 및 기타 사항.

버튼으로 무언가를 수행하려면, 드래그 앤 드롭 한 후 디자이너에서 버튼을 두 번 클릭하고 코드 편집기에서 붐을 일으켜 “클릭”이벤트가 발생할 때 수행 할 작업을 양식에 알려줍니다. 이것이 바로 Windows GUI 개발자 가 VB6의 GUI 툴링과 경쟁 툴을 사용하여 소프트웨어를 생성 한 방식입니다 . 단, 이제 코드가 서버에서 실행되고 있습니다! 와!

이것은 2002 년 기술이었습니다. RAD 개발을 위한 인터넷 지원 GUI 솔루션에 대한 해답으로서 놀랍고 아름다웠으며 , 비즈니스 목표를 달성해야하는 지저분한 소프트웨어 개발자의 세계에 힘을 실어주었습니다.

불행하게도,이 프로그래밍 모델은 Windows GUI 프로그래밍의 은유를 강조하여 필요한 구현 세부 사항, 이벤트 수명주기를 수용하는 데 필요한 모든 방해 수하물 및 간단한 HTML의 미묘한 세부 사항을 제거합니다. 이러한 드래그 앤 드롭 구성 요소 및 컨트롤이 출력하는 스크립트. 그리고 마지막 날, 실제 응용 프로그램을 지원하는 개발자는 필연적으로 이러한 구성 요소에 대해 깊이 파고 들어가거나 직접 작성해야했으며 결과적으로이 인프라와의 전투, 말뚝 박기 더미에 쌓인 전투, 머리를 당기고 눈물.

백업 손을 씻으십시오. 비즈니스 문제를 다시 살펴 보겠습니다. 우리의 사업 목표는 무엇입니까?

우리는 웹 애플리케이션 을 구축하고 관리해야 합니다 . 우리의 제약은 HTTP, HTML, Javascript 및 CSS에있는 월드 와이드 웹을 가지고 있고 서버에는 비즈니스 규칙, 데이터베이스 및 소수의 훌륭한 프로그래밍 언어 (예 : C #)가 있다는 것입니다. 개발 방법론을 추진하려면이 Windows GUI 메타포가 실제로 필요합니까? 왜 우리는 응용 프로그램 문제에만 집중할 수없고 GUI 비유를 피할 수 없습니까?

ASP.NET MVC가 등장한 곳입니다. “Alt.Net”이라고 불리는 개발자들이 적절하고 순수한 소프트웨어 개발 원칙으로 돌아 가고자하는 반란이 시작되었습니다. 더 이상 번거롭지 않고 비즈니스 목표와 소프트웨어 모범 사례에만 집중하십시오.

이 경우에 이것이 실제로 의미하는 것은 :

  1. 우려의 분리 . 예를 들어, 데이터 컴포넌트는 데이터 렌더링 방법을 알 필요가 없으며 데이터베이스 연결 구성 세부 사항으로 마크 업을 볼 필요가 없으며, 이러한 방식으로 개발자는 편집 및 편집시 관심 영역에 집중할 수 있습니다. 테스트 코드.
  2. HTML 및 관련 리소스의 완벽한 노출에 대한 노출 및 완벽한 지원 . Web Forms에서는 HTML이 사용되지 않으며 개발자는 그에 대한 소란을 피해야합니다. ASP.NET MVC에서는 개발자가 이러한 세부 정보를 관리하는 것이 좋습니다 . 사실 그것은 필수입니다. 여기서 장점은 개발자가 HTML, CSS 및 스크립트의 깔끔한 의미를 인식하고 반대하지 않고 함께 작업 할 수 있다는 사실을 다시 배울 수 있다는 것입니다.
  3. 비즈니스 객체의 테스트 가능성 . 컨트롤러와 모델은 프로그래밍 방식의 단위 테스트에 훨씬 적합하므로 비즈니스 목표를 달성하기 위해 구현을 검증 할 수 있으며 변경 사항이 중단되지 않는지 확인할 수 있습니다. Web Forms를 사용하면 구성 요소가 개별적으로 테스트되도록 설계되지 않았고 전체 개발 결과가 페이지 양식 과 이벤트 수명주기를 중심으로 비즈니스 로직과 프리젠 테이션 로직이 서로 밀접하게 연관 되어 있으므로 테스트하기가 어려웠습니다 .

Javascript는 고급 프로그래밍 언어와 마찬가지로 HTML은 이미 매우 높은 수준의 마크 업 언어입니다. 우리가 어셈블리 언어와 C를 다루고 있다면 전체 이야기는 달라졌을 것입니다.

2 위로 확장 한 ASP.NET MVC의 또 다른 목표는 개발자가 솔루션의 ‘보기’부분에 대한 프런트 엔드 세부 정보를 구성하고 나머지 업계가 구축 한 풍부한 기반을 활용할 수 있도록하는 것입니다. 프론트 엔드 클라이언트 플랫폼

ASP.NET MVC 개발자는 서버 측 아키텍처와 싸우지 않고 풍부한 Javascript 라이브러리와 클라이언트 측 템플릿 기술을 사용하여 집에서 느낄 수 있습니다. 웹 양식 당신이 경우를 제외하고는, 전혀 HTML 또는 스크립트를보고 싶어하지 않기 때문에 이것은 원래 ASP.NET 웹 폼의 경우 아니었다 정말로 가지고 있으며,이 경우에, 조심, 그것은 약한 아니다 마음의.


답변

ASP.NET MVC로 완전히 변환하고 완전히 돌아 왔으며 되돌아 보지 않았습니다. 여전히 매우 큰 WebForms 앱을 여러 개 유지해야한다고 말했습니다. 여기에 내가 가져 가라.

WebForms
그리드와 관련하여 심각한 무거운 리프팅이있을 때 사용하십시오. 표 형식에 잘 맞는 간단한 데이터 집합이 있고 사용자가 레코드를 업데이트 할 수있는 간단한 방법을 제공하고자 할 때 그리드 컨트롤은 정말 좋습니다. 예, MVC 4에는 정말 멋진 Ajax 목록 유형의 항목이있어서 잘 작동하지만 비즈니스에서 어제 무언가를 실행해야하며 좋은 구식 그리드가 훌륭하게 작동하고 사용자는 행복합니다. 기쁨으로 그리드를 가로 질러 탭할 수 있습니다. 저에게는 이것이 WebForms에있어서 가장 좋은 것입니다. 하지만 Ryan은지적한 코드 숨김 파일에서 펜스의 양면을 재생하기 때문에 WebForms가 큰 혼란을 초래할 수 있습니다. 그것은 모든 컨트롤러 유형의 물건을 당신의 시야와 혼합 유지하기 위해 장미와 가시가 될 수 있습니다.

MVC
실제로 롤업하고 싶을 때 응용 프로그램을 처음부터 시작할 수있는 경우에 사용하십시오. 명확하게 정의 된 MVC 응용 프로그램을 사용하는 것은 시작하기에 조금 더 많은 작업이지만 유지 관리 성의 이점은 초기 설치 비용을 능가합니다. 흥미로운 Ajax 상호 작용을 원한다면 깨끗한 URL 및 경로와 같은 코드로 모델을 작성하고 앱의 전체 흐름을 제어 할 수 있어야합니다. 이것은 분명히 갈 길입니다. 처음에는 익숙해 지지만 그린 필드 앱에는 더 나은 옵션이라고 생각합니다.

결론적으로, 그것은 그리드와! grid로 귀결됩니다. 🙂


답변

내 경험:

  • 1 년 동안 CakePHP 프로젝트를 작성했습니다.
  • 6 개월 동안 중간 규모의 Webforms 프로젝트를 완료했습니다.
  • 3 년 동안 Windows Forms 프로젝트에서 근무했습니다.

그 경험 후, 나는 webforms를 사용하여 다른 응용 프로그램을 작성하려고 시도했지만 webforms가 html, javascript 및 css를 사용하는 응용 프로그램을 개발하고 있다는 사실로부터 webforms가 개발자를 보호하려고 시도하는 방법에 대해 하루 동안 어려움을 겪고 좌절했습니다.

그런 다음 MVC를 사용해 보았고 출력을 더 직접 제어하고 CakePHP의 MVC 패러다임에 대한 경험을 통해 하루 약 1/2에 원하는 방식으로 간단한 앱을 완성 할 수있었습니다.

jQuery와 같은 강력한 UI 프레임 워크를 사용하면 대량의 사전 빌드 된 UI 구성 요소를 사용하여 출력을 직접 제어하지 않아도됩니다.


답변

내 배경은 Windows 개발이기 때문에 webforms를 선호합니다.

developmnt의 속도는 중요한 문제이며, 인도의 누군가에게 문제를 쉽게 전달하여 양식으로 밤새 고칠 수 있습니다. 또한 페이지에 속도 문제가 있으면 asp.net 속도에 대한 정말 좋은 책이 편리합니다 (Rick Kiessig는 사람입니다).

webforms는 전 Windows 사람들을위한 것입니다 mvc는 웹 사람들을위한 것입니다

그러나 현대 세계에서 Rick은 멋진 책을 썼습니다. 인도에서 서버는 매일 속도가 빨라지고 저렴한 코더가 있습니다.