2010-07-30 5 views
1

마지막 며칠 동안 저는 작은 웹 응용 프로그램을 작성했습니다. ASP.NET MVC를 사용하기로 결정했습니다. 웹 프론트 엔드를 실제로 제어하고 유효한 HTML 페이지를 렌더링하는 것이 가장 좋은 방법이라고 생각하기 때문에 대부분이 결정을 내 렸습니다. 그러나 MVC가 훨씬 더 많을 수 있다는 것을 알고 있습니다.ASP.NET MVC는 실제 MVC 패턴입니까?

비록 내 응용 프로그램은 아주 작지만 응용 프로그램의 아키텍처에 초점을 맞추고 있습니다. 사용자 인터페이스 (Web/Desktop/Webservices)와 데이터 액세스 로직 (여러 데이터베이스 지원)은 언제든지 전환 가능해야하는 여러 개의 레이어를 갖는 것이 중요합니다. Model View Controller 패턴에서 이것이 가능할 것이라고 생각했습니다.

이 경우 웹 기반 프런트 엔드를 Win32 또는 WPF 프런트 엔드로 대체 할 수 있습니까? 이게 가능한가, 아니면 내가 뭔가 잘못 이해 했는가? 나는 이것을 할 길을 찾을 수 없었다.

이 작업을 수행하는 유일한 방법은 MVC 계층, BusinessLogic 계층, BusinessObject-Layer 및 DataAccess-Layer를 만드는 것입니다. 이 경우 WPF App에서 재사용 할 수있는 모든 일반 항목 (예 : 비즈니스 계층에 넣기), MVC 계층에 넣은 모든 MVC 관련 항목 및 내 컨트롤러에서 BL 메서드 호출 및 ViewModel 빌드 그것을보기로 되돌립니다. 이것이 올바른 해석인지 잘 ​​모르고 더 나은 실천에 대한 제안에 감사 할 것입니다.

+0

"실제 MVC"가 무엇을 의미하는지 정의해야하며 웹 프론트 엔드를 데스크톱 프론트 엔드와 바꾸면 무엇을 의미하는지 명확히해야한다고 생각합니다. 조금 이상합니다. – jfar

+0

나에게 Controller는 BusinessLogic의 Container 인 것처럼 보였습니다. 모든 BusinessLogic이 Controller에 있고 언젠가 "Webbased Views"를 "WPF-Views"또는 "Win32 Views"로 바꾸고 싶다면 모든 것을 다시 쓰고 싶지 않습니다. 논리. – john84

답변

4

그렇습니다. 마틴 파울러의 Patterns of Enterprise Application Architecture (적어도 정식 정의와 가장 가까운 것으로, 확장 된 토론은 그의 문서 'GUI Architectures'을 참조하십시오)에 명시된대로 실제 MVC 패턴을 사용합니다.

MVC는 사용자 인터페이스 중심 응용 프로그램에 대한 우려를 명확하게 구분합니다.

MVC는 상태 비 저장 인터페이스 (예 : 웹 응용 프로그램)와 씩 (thick) 클라이언트 응용 프로그램 (예 : WPF 또는 WinForms) 간을 전환하는 것을 목적으로하지 않습니다. 이러한 플랫폼에는 각각 강점과 약점이 있습니다. 단일 컨트롤러를 사용하여 두 가지 모두를 충족 시키려고하면 하위 공용 영역의 최소 공통 분모 구현으로 이어질 것입니다.

0

정말 질문을 이해하지 못합니다. HTML이 아닌보기를 원한다면 다른 ASP.NET MVC View 엔진을보십시오. WinForms 뷰를 제공하려는 경우 같은 방법으로 비즈니스 로직을 코딩해야하지만 동일한 솔루션의 WinForms 앱에서 모든 클래스/데이터를 가져와야하고 사용자가이 "페이지", 그들은 WinForms 애플 리케이션을 다운로드하고 그것을 실행해야합니다. 웹 사이트처럼 보이도록 만들 수는 있지만 보장 할 수는 없습니다.

+0

내가 생각하기에 Controller가 BusinessLogic (추가 BLL 아님)을 포함해야하지만 컨트롤러가 "Retun View();" Webfront를 호출하는 "WPF"-View 또는 "Win32"-View를 호출하도록 구성 할 수 있습니다. 뷰의 각 종류에 대해 특정 MVC 패턴을 사용하면 좋은 모드가 아닙니다. 내 컨트롤러를 3 번 ​​다시 작성하십시오. 실지로는 동시에 Views, Webbased 및 .exe로 컴파일 될 데스크탑 PC에 대한 뷰를 원합니다. 그러나 하나의 컨트롤러 만 있으면됩니다. – john84

+2

@Johannes, 컨트롤러는 BLL이 아니며 컨트롤러는 HTTP 요청 매퍼/관리자/감독자 일뿐입니다. MVC는 state-full winform 또는 wpf 응용 프로그램에 실제로 적합하지는 않지만 MVP 또는 MVVM은 이러한 유형의 개발을위한 더 나은 패턴입니다. – jfar

+0

@jfar, 그 경우에는 모든 Webspecific 논리 및 WPF 응용 프로그램에서 재사용해야하는 모든 일반 논리에 대한 추가 BusinessLogic에 MVC를 사용하는 경우에는 맞습니까? – john84