WPF MVVM용 툴로 장단점이 궁금합니다.

안녕하세요.

WPF MVVM 패턴으로 프로그램 개발중입니다.

기존에 Caliburn.Micro로 개발하던 분이 나가서 MVVM을 Caliburn.Micro로 개발하고 있습니다.

그런데 더 보편적인 MVVM 툴로 Prism을 사용하는 것 같더라고요.

특히 Visual Studio Extension에서 Prism tool은 굉장히 많이 쓰는 것 같은데 Caliburn tool은 거의 사용하지 않는 것 같더라고요.

MVVM툴로 prism, caliburn, light mvvm 장단점 알려주실 수 있을까요?

감사합니다.

2개의 좋아요

질문들을 보니,
Prism 에 대한 관심이 계속 늘어나는 느낌이네욜… ㅋㅅㅋ

근데 사실 Prism 은 MVVM 툴 이라고 하기엔 조금 결이 다른 녀석입니다.

앞서 언급한 것들은 MVVM 구현 시 편의를 제공해주는 유틸의 성격이 강하다면
Prism 은 일종의 프레임워크에 가깝다고 봐야합니다.
Prism 이 추구하는 모듈 구현을, Prism 이 제시하는 구성 방법으로 사용해야만 온전히 그 혜택을 누릴 수 있으니까요.(IOC 를 포함해서!ㅁ!)

Prism 은 WinForm의 CAB(Composite UI Application Block) 을 계승한 프로젝트이지만
사실 어플리케이션을 Composite Module 로 구현한다는 개념을 적용한다는 측면에서는
윈폼보다는 WPF 가 찰떡이라고 할 수 있습니다.

… 라고 뭔가 주절거리려 했지만, 얘기가 끝도 없이 길어지는 거 같아서 아래 동영상 하나 남깁니다.
(이거면 충분할 거라고 봅니다.)

근데 혹시… 이 영상 어디다 핀 박을 수 없을까요?
매번 찾기 귀찮은 건 둘째치고 Prism 에 대해선 진짜 완소 영상이라…~ㅁ~

3개의 좋아요

안녕하세요. 데스크톱 프로그래밍 관련 질문으로 보여서, 카테고리를 윈도우 데스크톱 Q&A로 이동했습니다.

2개의 좋아요

Greg.Lee선생님 안녕하세요.
오랜만에 뵙네요~!
안그래도 점심 먹으면서 이영상을 다 보긴 했습니다.

Prism보니까 예전에 PropertyExpolerer 봐주셨을때, 몇가지 Snippet이 보이더라고요.
Command쪽 이 그랬던거 같은데 원래 그런 식으로 쓰는건지 아니면, 프리즘 프레임워크라 그런건지 잘은 모르지만요.

Caliburn이 확실히 쓰기 더 복잡한것 같습니다. 처음에 초기 설정부분이 좀 복잡하고, 의존성 주입부분도 좀 많이 복잡하긴한데, Extension에 Caliburn관련된 거 찾아보니까 초기 세팅 다해주더라고요.
Caliburn은 View에 Screen Collection Controller가 있어서 네비게이션이나 팝업 기능을 좀 더 디테일하게 설정할 수 있는거 같던데, 그리고, Caliburn은 Xaml에 그냥 cal.Message.Action이런식으로 command를 넣으니까 더 직관적인거 같더라고요.
뭐 익숙해져서 그런거 같긴한데, 좀 더 대중적이고 많이 쓰는 프레임워크로 개발해보고 싶은데 Prism으로 현재 Caliburn 기능을 다 포팅할 수 있을지 좀 의문이 들어서 질문을 올려봤습니다.

3개의 좋아요

저도 실제 프로젝트에 적용해본적은 없는데 대체로 Prism 이 그나마 제일 괜찮았던 기억이 있어요.

Caliburn 도 좋긴한데 말씀하신 것처럼 다른 것에 비해 복잡도가 살짝 더 높은 것고 있고
지금은 더이상 개발이 안 되고 있다는 점 때문에
이미 적용된 프로젝트는 상관없겠지만, 새로 시작하는 프로젝트에는 추천하고 싶지 않숩니닷…-ㅁ-;

비교가 필요하다면 요정도면 될까요?ㅅ?

3개의 좋아요

올려주신 보기에서는 Prism만 사용해봤는데, 이 친구를 MVVM 툴 킷 보다는 @Greg.Lee 님께서 말씀하신 것처럼 프레임워크에 가깝습니다.
그렇기 때문에 프로젝트에 한 번 적용하면 다른 MVVM 툴 킷 처럼 마음먹고 리팩토링하는 것이 상당히 큰 작업이 될 수도 있어요.

프레임워크에 가깝기 때문에 Prism에서 권장하는 방법으로 개발하지 않으면 중간중간에 꽤 고통스러울 수도 있습니다…

3개의 좋아요

Caliburn.Micro를 좋아했고 ViewModel 로 시작 (일반적으로 View → ViewModel) 할 수 있었던 매력으로 꽤 써왔던 입장으로 말씀 드리면 익숙해지면 매력적으로 편하고 좋으나 간단한 기능을 추가하기 위해 나름의 복잡한 구조를 취해야 하는 어려움과 적절한 View의 라이브러리의 지원이 필요하다는 점, 다른 개발자들이 어려워하는 이유로 Community Toolkit MVVM으로 변경했습니다.

그래서 제가 내린 결론은 MVVM 라이브러리는 최소한의 구조를 유도하는, 프레임워크가 아닌 라이브러리 수준의 난위도와 기능을 제공하는 경량화된 것을 사용하는게 더 적절하겠다고 생각했습니다.

물론, 만드는 제품이 지속적인 고도화가 예정되어 있고 팀이 MVVM 라이브러리를 지속적으로 학습할 수 있고 MVVM 라이브러리에서 제공하는 자동화 기능과 다양한 구조가 유익한 경우에는 프레임워크 수준의 MVVM 라이브러리를 선택할 수 도 있겠고요, 그렇지 않는 경우 빠르게 학습하고 적용할 수 있는 Community Toolkit MVVM수준의 라이브러리가 좀 더 좋지 않을까 생각합니다.

※ 참고로 저는 Prism에 대한 경험은 없어서 이 부분은 다른 분의 댓글을 참고하시면 좋을 것 같아요.

3개의 좋아요

네 감사합니다.

제가 지금은 Caliburn 3.x버전 쓰다가 Caliburn 4.x로 포팅하면서 엄청 고생중이거든요…
기존 Caliburn은 순수 Caliburn만 쓰는건 아니고 Autofac을 같이 사용해서 더 이해하기가 힘드네요.

보통 프로젝트 하실때 Caliburn.Micro + Autofac 조합을 많이 쓰나요?

1개의 좋아요