윈폼 MVC 디자인 패턴에 대해 질문

회사에서 급하게 프로그램을 만들게 생겨서 WPF가 아닌 윈폼으로 하게 되었습니다.
퇴사 전 마지막 프로그램이 될 듯 하네요.

그렇게 어떻게 구성을 할지 생각하던 중 MVC를 적용해보자 생각을 했습니다.

그래서 이것 저것 알아보던 중 헷갈리더라고요.

image

당장에 이 그림만 봐도 MVC인데도 구성이 다르다는 것을 알 수 있었습니다.

그런데 마침 예제를 찾던 중 첫번째 이미지에 부합하는 예제가 있더라고요
([Design Pattern] MVC(Model-View-Controller) 패턴 이야기 #2 (예제 포함))

그리고 두번째 이미지에 부합하는 예제도 찾았습니다.
(LateDreamer의 좌충우돌: Compound pattern & MVC pattern, part 2)
(문제 될 시 이 주소들은 삭제 하겠습니다.)

그러다보니 무엇으로 개발을 하는게 맞는지 혼란스럽습니다.

개발 난이도야 당연히 첫번째가 쉽겠지만 어떤게 MVC에 부합한지 알기가 힘들어 함부러 적용할 수가 없네요.

그와 더불어
제가 만들어야 하는게

  1. 버튼 클릭
    2.쓰레드 생성
    3.해당 쓰레드로 시리얼포트로 데이터를 수신
    4.화면에 표시

이걸 구현한다면 각 1,2,3,4는 뷰 컨트롤러 모델에서 어디에 위치해야 할지 의문입니다.(애초에 MVC의 구조가 헷갈리니 만들기가 어렵네요…) 조언 좀 부탁드립니다.

좋아요 2

보통 윈폼에서 MVC를 고려하진 않습니다~ :grinning:
어거지로 해놓는다 하더라도 과연 그게 좋을까… 싶구요…

써놓고보니, 너무 주관적인 의견이네요…ㅎㅎㅎ 죄송합니다

좋아요 2

사실 MVC 아키텍처 패턴이 어떤 공식화된 문서가 없기 때문에
어떤것이 정답이다 라고 말할 순 없을거 같습니다.

하지만, 인터넷에 있는 대부분의 MVC 패턴의 개념 래퍼런스를 찾아 보면 다음과 같은 구조로 보통 일관되게 설명하고 있습니다.



보시는 도표와 같이 MVC의 액션은 View가 아닌 Controller에서 처리 됩니다.

Controller에서 액션을 처리하고 Model을 통해 View가 갱신되는 구조 이지요

하지만 대채적으로 윈폼은 이러한 MVC패턴을 사용할 수 없습니다.

윈폼은 보통 사용자에게 보이는 View로 부터 사용자의 액션을 처리하게 되는데

이러면 컨트롤러의 역할이 애매해 집니다. View 와 Controller의 의존관계도 생겨버리구요

따라서
MVC는 백앤드의 웹 서비스나 ASP.NET Core MVC에서 백앤드/프론트 모두 개발되는 플랫폼에서 어울리는 아키텍처 패턴이라고 생각합니다.

말씀하시는 윈폼에서는 MVP패턴이 더 맞는 환경 입니다.

참고로 윈폼의 MVVM패턴은 데브익스프레스 같은 외부 대형 프레임워크의 도움을 받지 않는한 완벽히 구현은 어렵고 골치아픈 작업입니다.

좋아요 3

확실히 알아볼수록 mvc로 구현하려하니 오히려 소스가 더 길어지네요.

제가 현재 만드는 것도 2,3일이면 끝나는 간단한 작업이라 차라리 그냥 보기 편하게 제가 주석달고 작업하는게 나을 듯 합니다. 그래도 윈폼에선 mvp 가 더 어울린다는 새로운 지식을 얻어갑니다.
다음에 mvp도 공부해야 겠네요.

답변 주셔서 감사합니다.

좋아요 1