MVVM 또는 MVC? WPF 및 ASP.NET에 동일한 클래스 집합을 사용하려고합니다.


10

나는 디자인 패턴 측면에서 초보자입니다. 방금 새로운 버즈 인 MVVM을들을 때 MVC를 배우기 시작했습니다.

고객을 위해 개발 한 오래된 인벤토리 및 인보이스 발행 애플리케이션을 다시 디자인하여이 두 가지에 대한 통찰력을 배우고 싶습니다. Windows 기반 WPF 응용 프로그램과 웹 기반 버전을 모두 작성하고 싶습니다. 가능하다면 적어도 동일한 수정 클래스를 사용하고 싶습니다.

몇 가지 기사를 읽었지만 여기서 논의한 .NET 3.5 및 4의 아키텍처와 고급 개념을 따르지 않습니다. 실제 프로젝트에서 실제로 필요한 것만 설계하여 단계별로 이동하고 싶습니다.

MVVM에 대한 쉬운 단계별 참조가 있습니까? MVVM은 MVC의 수퍼 세트 또는 하위 세트입니까? 어떤 패턴이 현대적이고 내 응용 프로그램의 Windows 및 웹 버전에서 어떤 패턴을 선택해야합니까?

View와 거의 연결하지 않아도되는 클래스가 있습니다. 이 경우 MVVM 방식으로 동일한 클래스를 설계하면 추가 작업이 될 것입니다.

답변:


10

MVVM에 대한 쉬운 단계별 참조가 있습니까?

그렇습니다. 여기를보세요.

MVVM은 MVC의 수퍼 세트 또는 하위 세트입니까?

MVVM은 MVC 제품군에 속하므로 전혀 말할 수 없으면 하위 집합입니다. 아래의 비즈니스 로직에서 UI를 분리하는 변형입니다. 나는 그것을 MVC의 형제라고 설명합니다. OOP 초기부터 사람들은 UI를 로직에서 분리하는 방법을 찾고있었습니다. MVC는 진화 한 최초의 원형이었습니다. 대부분의 사람들이 제대로 이해하지 못하더라도 매우 간단합니다. 뷰는 모델의 관찰자 일 뿐이며 필요할 때 호출합니다. 컨트롤러는 뷰와 모델 간의 통신을위한 전략 일뿐입니다 (예 : 교환 가능한 동작 (예 : ReadonlyController, AdminController)). MVC는 매우 성공적이며 적용하는 것이 좋습니다.

MVVM은 Martin Fowler가 설명한 것처럼 특수한 종류의 MVP 패턴 입니다. MVP는 사용자 입력 등을 취하면서 최대한보기를 어둡게 유지하여 테스트 성을 향상시킵니다. 그것은 발표자에게 제시 될 관점과 상호 작용 논리의 추상화를 목표로한다. 발표자는 모델 / 비즈니스 로직과 만 통신하고보기를 업데이트합니다. Martin Fowler는 프레젠테이션 모델 패턴에서 MVVM을 거의 설명합니다.

뷰는 완전히 ViewModel로 추상화됩니다. View재산 이 필요한 경우 재산도 ViewModel필요합니다. (ViewModel)은 추상화 된 기본 UI 기술과 완전히 독립적입니다. View와 ViewModel간에 통신하려면 동기화 패턴 (예 : 관찰자)을 사용해야합니다. 상태 비 저장 웹 환경에서는 달성하기 쉽지 않습니다. MVVM은 View가 더 이상 모델 / 비즈니스 로직에 바인딩되지 않고 ViewModel에 바인딩되므로 MVP와 다릅니다.

어떤 패턴이 현대적이고 내 응용 프로그램의 Windows 및 웹 버전에서 어떤 패턴을 선택해야합니까?

이론적으로 프레젠테이션 모델 (MVVM과 유사)은 사용중인 UI 기술과 완전히 독립적이어야합니다. 그러나 동조화 측면을 다룰 필요가있다. 동기화 접착제가 이미 존재하는 WPF를 사용하여 명령 및 속성에 바인딩하면 쉽게 수행 할 수 있습니다. ASP.NET과는 다른 이야기입니다. 그러나 모든 Windows UI 기술과 함께 프레젠테이션 모델 패턴을 사용 하는 CodeProject에 대한 기사가 있습니다. 보세요


4

수명주기 문제와 페이지 게시물간에 상태를 유지해야하기 때문에 웹과 WPF간에 UI 코드 없음의 100 %를 재사용하기가 매우 어렵습니다. Asp.net에는 MVVM에 필요한 강력한 데이터 바인딩이 없으며 요즘 사람들이 UI를 포스트 백 할 필요없이 자체적으로 업데이트하기를 기대하므로 많은 로직이 jscript에서 실행되어야합니다.

SilverLight를 사용할 수 있다면 인생은 훨씬 덜 복잡해집니다 :-)

마찬가지로 UI의 공통 비트를 위해 WPF 앱에서 웹 브라우저를 호스팅 할 수 있습니까?


SilverLight로 얻을 수있는 이점은 무엇입니까?
RPK

1
@PRK, Silverlight는 대부분 WPF가 수행하는 모든 작업을 수행 할 수있게 해주 며 모든 "웹"사용자가 설치하도록 할 수있는 경우 웹을 통해 액세스하고 웹 앱처럼 "느껴지는"솔루션을 만들 수 있습니다.
Ian

4

ASP.Net 및 WPF 기반 UI에 동일한 클래스를 사용하려는 의도는 그리 실용적이지 않습니다. 웹에서 데이터 바인딩 및 자바 스크립트 사용은 WPF와 매우 다릅니다. 내가 생각할 수있는 유일한 옵션은 완전히 수동적 인 시야를 가진 MVP입니다 . 이론적으로 웹 및 WPF 페이지를 채우는 동일한 발표자를 가질 수 있습니다.
실제로 나는 대부분의 비즈니스 규칙이 웹 서비스 계층과이 웹 서비스와 통신하는 가능한 비즈니스 규칙이 거의없는 두 개의 다른 프리젠 테이션 계층에있는 아키텍처를 개발할 것입니다.

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