이것은 많은 답변이있는 오래된 질문이지만 아무도 목록에있을 것으로 예상되는 답변이 없었습니다.
짧은 대답은 다음과 같습니다.
- 최신 프로그래밍 규칙과 업계에서 채택 된 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"이라고 불리는 개발자들이 적절하고 순수한 소프트웨어 개발 원칙으로 돌아 가고자하는 반란이 시작되었습니다. 더 이상 번거롭지 않고 비즈니스 목표와 소프트웨어 모범 사례에만 집중하십시오.
이 경우에 이것이 실제로 의미하는 것은 :
- 우려의 분리 . 예를 들어, 데이터 컴포넌트는 데이터 렌더링 방법을 알 필요가 없으며 데이터베이스 연결 구성 세부 사항으로 마크 업을 볼 필요가 없으며, 이러한 방식으로 개발자는 편집 및 편집시 관심 영역에 집중할 수 있습니다. 테스트 코드.
- HTML 및 관련 리소스의 완벽한 노출에 대한 노출 및 완벽한 지원 . Web Forms에서는 HTML이 사용되지 않으며 개발자는 그에 대한 소란을 피해야합니다. ASP.NET MVC에서는 개발자가 이러한 세부 정보를 관리하는 것이 좋습니다 . 사실 그것은 필수입니다. 여기서 장점은 개발자가 HTML, CSS 및 스크립트의 깔끔한 의미를 인식하고 반대하지 않고 함께 작업 할 수 있다는 사실을 다시 배울 수 있다는 것입니다.
- 비즈니스 객체의 테스트 가능성 . 컨트롤러와 모델은 프로그래밍 방식의 단위 테스트에 훨씬 적합하므로 비즈니스 목표를 달성하기 위해 구현을 검증 할 수 있으며 변경 사항이 중단되지 않는지 확인할 수 있습니다. Web Forms를 사용하면 구성 요소가 개별적으로 테스트되도록 설계되지 않았고 전체 개발 결과가 페이지 양식 과 이벤트 수명주기를 중심으로 비즈니스 로직과 프리젠 테이션 로직이 서로 밀접하게 연관 되어 있으므로 테스트하기가 어려웠습니다 .
Javascript는 고급 프로그래밍 언어와 마찬가지로 HTML은 이미 매우 높은 수준의 마크 업 언어입니다. 우리가 어셈블리 언어와 C를 다루고 있다면 전체 이야기는 달라졌을 것입니다.
2 위로 확장 한 ASP.NET MVC의 또 다른 목표는 개발자가 솔루션의 '보기'부분에 대한 프런트 엔드 세부 정보를 구성하고 나머지 업계가 구축 한 풍부한 기반을 활용할 수 있도록하는 것입니다. 프론트 엔드 클라이언트 플랫폼
ASP.NET MVC 개발자는 서버 측 아키텍처와 싸우지 않고 풍부한 Javascript 라이브러리와 클라이언트 측 템플릿 기술을 사용하여 집에서 느낄 수 있습니다. 웹 양식 당신이 경우를 제외하고는, 전혀 HTML 또는 스크립트를보고 싶어하지 않기 때문에 이것은 원래 ASP.NET 웹 폼의 경우 아니었다 정말로 가지고 있으며,이 경우에, 조심, 그것은 약한 아니다 마음의.