2010-06-14 4 views
4

이것은 잠시 동안 내 머리 속에서 뒤죽박죽이 된 질문입니다. 그가 MVVM과 함께 작동하는 방법을 알아낼 수 없었기 때문에 다른 밤에 그가 내비게이션 프레임 워크를 사용하지 않을 것이라고 말한 사람과 채팅했습니다. 나는 패턴이 소금 한 뭉치로 채워 져야한다고 설명하려고했을 때 그는 듣지 않을 것입니다.MVVM은 실버 라이트 개발을 죽입니까?

요점은 이것입니다. 패턴은 어떤 문제를 해결할 때 훌륭합니다. 때로는 패턴의 일부만이 특정 문제를 해결하는 반면 다른 부분은 다른 문제를 일으킬 수 있습니다. 모든 개발자의 목표는 노하우와 예지력을 결합한 패턴을 사용하여 견고한 애플리케이션을 구축하는 것입니다.

MVVM이 모두를 지배하는 하나의 패턴이되고 있다고 느낍니다. 그것이 닷넷에 의해 직접적으로 지원되지 않기 때문에 약간의 화려한 사업이 필요하다. 나는 사람들이 느슨하게 결합 된 테스트 가능한 코드 인 패턴의 요점을 놓치고 있고, 대신 MVVM을 따라가는 훌륭한 경험을 통해 농구를 뛰어 넘었다 고 느낍니다.

MVVM은 위대하지만 MVV 스틱으로 공격당하는 사람들을 두려워 실버 라이트 개발에서 벗어날 것이라는 두려움 때문에 초보자에게 경고 또는 면책 조항이 함께 제공되기를 바랍니다.

편집 : 편집으로 추가 할 수 있습니다. MVVM을 프로젝트에서 유용하고 실현 가능한 패턴으로 사용하고 동의합니다. 내 문제는 마치 개발의 일부로 사용되는 것처럼 받아 들여지고있는 포괄적 인 성격에 있습니다. 그것은 필수적인 기능이 아닌 패턴으로 사용됩니다.

EDIT 2 : 지금까지 모든 의견을 보내 주셔서 감사 드리며, 지금까지 떠오른 한 가지 문제는 지금까지 생각하지 못했던 부분입니다. GUI/RIA 개발을위한 더욱 풍부하고 진보 된 프레임 워크의 도입은이 세대의 RAD 개발의 약점을 보여줍니다. 즉, 이러한 프레임 워크와 함께 코드 디자인 및 패턴 지식이 부족합니다. 한 번 C# (Pro C# & .Net 프레임 워크가 인기가 있음)에 대한 책을 요청한 적이 있는데 왜 C#에서 winforms/asp를 뺀 것인지 알고 싶었습니다.

물론 이러한 주제에는 많은 책/KB가 있지만 슈퍼 스타와 훌륭한 프로그래머를 초월한 사람들이 사용하고 있습니까?

+3

내 경험에 비추어 볼 때 Silverlight 개발을 부끄러워하는 진정한 이유는 Silverlight의 테스트 프레임 워크가 좋지 않은 상태입니다. 주어진 Silverlight 응용 프로그램에 대해 단위 테스트 스위트를 깨끗하고 신속하며 효율적으로 실행할 수 없으면 막대한 장애물이됩니다. –

+3

이것은 실제의 SO 문제보다 가까운 생각과 좁은 사고에 대한 호언 장담처럼 보입니다. 나는 반드시 당신과 의견이 다를 지 모르지만 블로그가 더 좋은 장소 일 수 있습니다. – Dana

+0

@Dana, 나는 당신의 요점을 생각해 본다. 나는 이것이 개인적인 견해를 뛰어 넘는 것이라고 생각한다. 닫기 mindedness는 더 나은 것을 모르는 새로운 사용자로 스며 나오기 시작할 때까지 무시 될 수 있습니다. – deanvmc

답변

8

그래서 여기에 새로운 MVVM 개발자가 많이 있다는 것을 잊어 버렸습니다. 패턴은 이 아닌 다른 방법으로 도움이됩니다. 이러한 방식으로 소프트웨어를 빌드하면 이되어 프로젝트가 커질수록 쉽게 작업 할 수 있지만 특정 작업에 완전히 방해가된다면 한 걸음 물러서서 "이 특정 시나리오에서는 여기에서 MVVM이 도움이되고 있습니까? ? " 삶이 편 해지면 때때로 속임수를 쓰는 것이 허용됩니다.

+0

+1 나는 그 의견을 두 번째로 받았다. – Przemek

+0

+1 나는 동의한다. – deanvmc

5

사실 MVMS는 명령 및 메시징을 사용하는 Windows Phone 7 프레임 워크의 탐색 응용 프로그램과 함께 사용하면 효과적입니다. 그러나 누군가 코드 숨김에 코드를 추가하지 않고 Silverlight의 모든 기능을 사용할 수 있다고 말하면 스스로 속일 수 있습니다. 특정 기능에 뭔가 맞춤화가 필요한 경우 도움이되고 이해가되는 패턴을 사용하고 패턴을 벗어납니다.

+0

+1, 나는 당신의 견해에 동의하며 그것은 내가 취하는 견해입니다. – deanvmc

1

Why can't you?

는없고, MVVM 많은 패턴의 한 그리고 솔직히, 심지어 가장 인기있는 것들 사이입니다. Silverlight의 개발은 a) 플래시 b) 플래시가 아닌 c) Microsoft 중심의 d) 학습 곡선입니다.

사실 WPF는 실제로 잡히지 않은 것 같습니다.별로 도움이되지 않습니다.

+0

나는 WPF가 잡히지 않았다면, winforms를 하룻밤 사이에 대체 할 것이라고 생각하는 사람은 순진하다. MVVM이 인기있는 패턴이 아니라고 말하는가? WPF/Silverlight의 관점에서 볼 때 가장 인기 있다고 생각합니다. – deanvmc

+1

나도 몰라 ... 밤새 너는 어떻게 생각하니? WPF는 2006 년에 발표되었지만 정확히 '밤새'는 아닙니다. – Serapth

+0

대규모 다국적 기업에서 일하는 것은 WPF가 대기업이 IE 6/7 및 Windows 2000/nt에서 잠시 동안 움직일 때까지 이륙하지 않을 것이라는 점입니다. 물론 이것은 다른 주제에 대한 논의입니다. – deanvmc

1

MVVM => 누군가가 탐색 프레임 워크를 사용하지 않고 탐색 프레임 워크를 사용하는 방법을 파악하는 데 문제가 있습니다.> MVVM이 탐색 프레임 워크를 죽입니다.> MVVM이 Silverlight 개발을 중단합니다.

이 추론의 연쇄에는 몇 가지 결함이 있다고합니까?

+0

아니요, 내 말을 오해하셔야합니다. 내 요점은 사람들이 MVVM을 사용하고 있으며 MVVM과 호환되지 않는 것들을 숨기고 있다는 것입니다. 네비게이션 프레임 워크는 MVVM으로 작업하기 위해 "함께 사용"되어야하는 예제의 예일뿐입니다. – deanvmc

2

Windows Phone 7 앱에 MVVM을 사용하고 있습니다.나는 그것의 아이디어를 정말 좋아하지만 너무 많은 해킹, wordarounds 및 타사 도구를 실행하는 데 필요한.

Silverlight가 출시 될 때마다 상황이 개선되고 있지만 기술은 여전히 ​​"최첨단"이라고 생각합니다.

+0

이것은 내 느낌입니다. SLMS 팀이 MVVM을 실버 라이트에 통합하기로 결정한 경우 통합 목표를 위해 다음 릴리스를 기다리는 코드 해킹에서 좌절감이 온 것 같습니다. – deanvmc

4

귀하의 질문이 WPF에도 적용된다고 가정 할 때, MVVM을 시험해보기 전에 문제가 WPF/Silverlight의 막대한 학습 곡선이 아닌지 궁금합니다. XAML, 종속성 속성, 연결된 속성, 라우트 된 이벤트, 라우트 된 명령, 정적 리소스, 동적 리소스, 스타일, 데이터 템플릿, 컨트롤 템플릿, 데이터 바인딩 및 기타 등등 WPF로 배워야 할 모든 새로운 것들에 대해 생각해보십시오. 등등. 그런 다음 Microsoft가이 기술을 불완전한 집합으로, 적어도 WPF로, 심하게 껍질을 벗기고 컨트롤을 릴리스한다는 사실을 받아 들여야합니다. 그리고 당신은 좌절감과 피할 수없는 감정을위한 레시피를 가지고 있습니다. "황금 시간대 준비가 안된다". WPF Toolkit이 나오기 전에 적절한 DataGrid 컨트롤조차 없었습니다.

이 모든 것을 이해하면 MVVM은 또 다른 장애물이지만 WPF/Silverlight 악 대차에서 점프하는 사람들에게는 이것이 주요 장애물이라고 생각하지 않습니다. 마이크로 소프트가 ASP.NET MVC에 뒤처지게된다면 좋을 것이다. 현재로서는 MVVM FoundationMVVM Toolkit과 같은 타사 도구를 다운로드하여 사용해야합니다 (중복되는 경우가 많으므로 단일 프로젝트로 결합해야 함).

그렇기 때문에 나는 동의한다.하지만 MVVM과 관련된 대부분의 도전은 Microsoft의 지원이 부족하고 WPF/Silverlight의 고유 한 복잡성 때문일 것이라고 생각합니다. MVVM 패턴 자체.

+1

그럴 수 있습니다. WPF/Silverlight는 본질적으로 복잡합니다. 그렇다면 초보자를위한 패턴과 코드 디자인에 대한 강조가 충분하지 않을 수도 있습니다. 그 모든 것은 내가 실버 라이트에서 읽은 책들에서 구조가 없다. – deanvmc

+1

@DeanMc, comment upvoted 너무 열심히. 강조점은 항상 플랫폼이 당신을 위해 무엇을 할 수 있고 플랫폼을 어떻게 할 것인지 (그리고 어떻게 할 것인가)가 아닙니다. – nlawalker

+0

건배, 사람들이 똑같은 생각을한다는 것을 아는 것이 좋습니다. – deanvmc

3

여기에 큰 대답이 있습니다. 좋은 토의와 중요한 것. Silverlight를 배우는 것이 새로운 개발자를 위협 할 수 있다는 것은 의심의 여지가 없습니다. MVVM 프레임 워크는 의심의 여지가 없습니다.

그러나 나는 그것을 이해하지 못하는 누군가가 프레임 워크를 파헤 치지 않는다는 것에 동의한다. 제어/의존성 주입의 반전이 배우기에는 너무 혼란 스럽다고 말하는 개발자가 있지만 이러한 잘못된 패턴을 만들 수 있습니까? "현장에서"소프트웨어가 입증 된 사실은 그 개념에 의거하여 처음에는 파악하기가 복잡하거나 이해가된다고하더라도 나에게 소리가 들린다 고합니다.

외국에서 배우는 것은 힘들었지 만 시작한 후에는 편안하게 말하고 시작할 수없는 이유를 궁금해 할 수 있습니다.

내가 가장 두려워하는 추세는 복잡한 개념을 파악할 수 없거나 이해하지 못하는 초보 개발자가 어떤 이유로 복잡한 엔터프라이즈 응용 프로그램을 쉽게 만들어야한다는 개념입니다. 그게 정말 내려 놔요. 당신은 의사가 "도움을 받아이 뇌 수술을 더 쉽게 만들어서 누구나 할 수있다"고 말하지 않습니다. 그것은 전문입니다. 뛰어난 소프트웨어를 구축하는 것도 전문화 된 것입니다. 컨설턴트가 서비스에 대한 적절한 지불을 요구하는 이유입니다. 솔루션을 설계하고 개발하는 올바른 방법을 이해하는 데있어 컨설턴트가 제공하는 가치입니다.

소행성 게임, 판타지 게임, 미디어 사이트, YouTube 녹아웃 등을 만드는 경우 MVVM이 필요 없으며 과잉입니다. 몇 가지 양식과 그래프로 소규모 사이트를 구축하는 경우 편안하고 완고하게 작성하십시오.

동적 인 여러 모듈로 구성되고 수천 또는 수백만 개의 레코드를 이동하며 대량의 동시 사용자로 확장해야하는 대규모의 복잡한 사이트를 만드는 경우 축소 한 후에 디자인이 튀어 나오기를 기대할 수 없습니다 몇 권의 책 또는 몇 군데의 사이트를 감추고 있습니다. 그런 소프트웨어는 움직이는 부분이 많아 복잡하고 아키텍처에 대한 확고한 이해가 필요합니다.

저보다 더 복잡한 응용 프로그램을 작성하지 않는 복잡한 응용 프로그램을 만드는 사람들이 저를 놀라게합니다. 팀 경험이있는 사람이 있습니까? 당신이 사용할 수있는 프레임 워크를 완성 할 아키텍트가 있습니까?

실제로이 예제는 문제가 MVVM이 아니라는 것을 알려줍니다. 개발자입니다. "MVVM 때문에 탐색을 피합니까?" 정말? MVVM과 관련이 있습니까? 네비게이션 조각을 작성하고 뷰 모델을 페이지 내부에 배치하십시오. 내 탐색이 뷰 모델에서 벗어나야하는 이유는 무엇입니까?

하나 가자. 그것이 복잡하다면 패턴과는 아무런 관련이 없다고 생각합니다. 그리고 개발을 이해하지 못하는 개발자와 관련된 모든 것. 패턴을 비난하지 마십시오. 어쩌면 그들은 더 간단한 어플리케이션에 집중해야 할 것입니다. 내 경험상, 패턴을 이해하게 된 사람들은 패턴을 사용하지 않을 때를 언제 알 수 있도록 소프트웨어를 충분히 이해합니다.

"평균 소비자"에게는 간단하게 말하려는 움직임이 많습니다.하지만 이것은 미적분이 커브 아래에서 영역을 찾는 잘못된 방법이라고 생각합니다. 배우기가 어렵다. " MVVM은 미적분처럼 복잡하지는 않지만 복잡한 소프트웨어를 작성하는 것은 복잡한 작업이며 사용자가 단순화하거나 간단한 수식을 사용하지 않을 것이라고 생각하지 않습니다. MVVM에 어려움을 겪고 있다면 MVVM을 사용하지 마십시오. 더 간단하고 쉬운 것을 찾으십시오. 프로젝트가 사용하기에 충분히 복잡하고 여전히 이해하지 못한다면, 누군가를 고용하고, 그들이 그것을 밖으로 내 보내고 배울 수있게하십시오.

아니요, Microsoft에서 어떤 패턴을 사용해야한다고 말하고 싶지 않으며 자신의 책임이라고 생각하지 않습니다. 저는 전문인으로서 제가 구축하고있는 것을 배우고 이해하는 데 시간을 투자하여 고객에게 가장 좋은 방법을 구축 할 수 있도록 지원합니다. Microsoft는 내 고객이 필요로하거나 필요로하는 것이 무엇인지 알 필요가 없기 때문에 어떤 패턴을 사용할지 어떻게 말할 수 있습니까? Prism과 같은 프로젝트는 절충안이므로 훌륭합니다. 개발자에게 구현을 강요하지 않으면 서 무언가를 수행 할 수있는 방법에 대한 지침과 공유 "우수 사례"를 제공합니다.