2011-08-04 3 views
4

여기 상황이 있습니다. 우리는 WebForms를 기반으로하는 웹 응용 프로그램 제품군에 새로운 응용 프로그램을 추가하고 있으므로 MVC를 도입하기에 완벽한시기라고 생각했습니다.기존의 커스텀 컨트롤 라이브러리가있는 WebForms에서 MVC3으로 통합/전환

나는 둘을 혼용하는 것에 관한 모든 연구를했고 프로젝트의 나머지 부분은 MVC 경로를 사용하는 Area을 사용하여 설정했다. (비주얼 스튜디오) 프로젝트의 나머지 부분은 실행중인 방식으로 웹 양식과 함께 실행된다.

마스터 페이지가 모든 응용 프로그램간에 공유되는 마스터 페이지가 하나뿐이기 때문에 너무 나쁘지 않은 면도기 레이아웃으로 변환되었습니다.

내가 지금까지 실행 한 문제는 사용자 컨트롤을 다시 사용하는 것입니다. 수 많은 사용자 정의 컨트롤이 상당히 복잡하며 모든 응용 프로그램에서 재사용됩니다. 그들 중 대부분 (특히 포팅하기 어려운 것들)은 ViewState와 포스트 백을 통해 상당한 금액을 처리합니다.

MVC에서 이러한 내용을 다시 작성해야하는 경우 한 번만 수행하면 비용이 이상적이지는 않지만 심각하지는 않습니다. 그러나 기존 앱을 유지 보수하고 업데이트해야하기 때문에 완전히 다른 패러다임을 사용하여 동일한 버전의 두 가지 버전을 유지하는 것이 생산성을 크게 떨어 뜨리는 것처럼 보입니다.

실용적인 해결책이 없다고 말하며이 프로젝트에서 MVC로 가고 웹 폼을 고수해야한다는 생각을 포기해야 할 수도 있습니다.하지만 SO 커뮤니티에 무엇이 필요한지에 대한 통찰력이 있는지 알고 싶었습니다. 이 시나리오에서 수행하십시오.

답변

4

가장 좋은 방법은 MVC 패러다임을 사용하여 서버 측 컨트롤을 다시 작성하는 예산이있는 경우입니다. 그렇지 않다면 기존의 WebForms 페이지에 삽입 할 수 있으며 표준 HTTP/HTML 기술 (양식 게시, 쿼리 문자열 매개 변수, iframe, 쿠키, HTML 5 저장소 등을 통한 ID 보내기)을 사용하여 새 MVC 응용 프로그램과 통신 할 수 있습니다. 한 가지 확실한 점은 : MVC 뷰에 서버 측 컨트롤을 두는 것을 피하십시오. 적절한 ASP.NET MVC도 아니고 적절한 WebForms도 아닌 하이브리드 응용 프로그램으로 끝날 것입니다.

개인적으로 나는이 동일한 마이그레이션을 여러 번 수행해야했으며 Area 나 다른 기술을 사용하여 동일한 애플리케이션에서 MVC와 기본 WebForms를 섞어 놓지 않았습니다. 하루가 끝나면 악몽이되어 그 두 사람이 함께 존재하게 만들 수도 있습니다. 항상 두 가지 중 하나입니다. 예산이 있고 처음부터 다시 작성하거나 예산이 없으며 ASP.NET MVC를 사용하여 새 작업을 올바르게 수행하고 기존 응용 프로그램과 상호 작용을 시도합니다.

내가 원하는 상호 작용에 따라 기존 WebForms 응용 프로그램의 기능을 통합하기위한 여러 가지 방법을 사용하는 별도의 MVC 응용 프로그램을 시작하는 것이 더 쉽습니다.

시나리오의 복잡성과 세부 사항에 익숙하지 않아 객관적인 대답을 제공하기는 어렵지만 기존 WebForms 서버 측 컨트롤을 기반으로 새 코드를 작성하고 전혀 MVC를 수행하지 않을 가능성이 있습니다 이 프로젝트는 좋은 해결책이 될 수도 있습니다. ASP.NET MVC에서 새 응용 프로그램을 작성하는 것이 최선의 선택이 아닐 수도 있습니다.

+1

+1 재 작성을위한 예산이없는 경우 MVC의 이점을 얻을 수있는 또 다른 가능성이 있습니다. MVC를 API로 사용할 수 있습니다. 예를 들어 Telerik의 ASP.NET AJAX 컨트롤과 같이 리치 클라이언트 측 API에서 컨트롤을 사용하는 경우 해당 메소드에서 json을 반환하는 컨트롤러를 사용하여 클라이언트 측 데이터 바인딩과 같은 작업을 수행 할 수 있습니다. 필자는 과거에이 방법을 사용하여 코드의 단위 테스트를 개선하고 다운로드 가능한 내보내기 데이터를보다 쉽게 ​​제공 할 수있게했습니다. – Sumo

관련 문제