2009-09-22 3 views
2

저는 WPF에서 Model-View-ViewModel (MVVM) 패턴을 사용하고 C#과 함께 Silverlight 앱을 사용하여 매우 기뻤습니다. 선언적 XAML 마크 업과 데이터 바인딩은 매우 중요합니다. 그러나 동적 언어에 대한 Harry Pierson의 this talk은 동적 언어를 배우는 것에 흥분을 느끼고 새 프로젝트에서 하나를 시도하고 싶습니다. 나는 IronPython In Action 독서를 즐기고 있었고 몇 가지 WPF 예제를 포함하고 있습니다.IronPython 또는 IronRuby는 WPF/Silverlight의 MVVM 패턴에 가장 적합합니까?

MVVM 앱의 ViewModel 및 Model 레이어에서 IronPython 또는 IronRuby를 사용하는 것에 대한 생각은 (C#과 비교하여) 어떻게됩니까? 매력적인 (또는 매력없는) 기능은 무엇입니까? 기본 이점/제한 사항 (예 : AOP, 오리 타이핑, 원숭이 패치, 정적 유형 제한 등) 및 실제적인 제한 사항 (예 : 실적, no current IronPython Studio for v2 등)에 관심이 있습니다. C# 4.0에서는 모든 제한 사항이 개선됩니까?

감사합니다,

데이비드

답변

2

내가 아이언 루비와 WPF를 작성하는 것은 정말 멋진, 그리고 당신이 당신의 환경을 메타 프로그래밍 약간의 시간을 투자한다면, 그것은 멋진 될 수 있음을 말할 수있다.

그러나, 단점이 있습니다 - 데이터는 (당신이에 대한 CLR 개체를 사용해야합니다 - look at my blog post 해결을위한)에 아이언 루비 객체와 바인딩이 작동하지 않습니다, 그러나 이것은 닷넷 4.

에주의를 개선한다 IronRuby는 11 월에야 RTM으로 전환 될 것으로 예상됩니다.

이 모든 것을 말하면서 나는 그것을 체크 아웃하는 것이 좋습니다. 내가 가지고있는 것처럼 떨어질 수도 있습니다 :)

Shay.

3

Shay가 적합하지만 Silverlight에만 해당되며 Silverlight 및 IronRuby는 사용하지 않았습니다. 순수 IronRuby 및 WPF로 명령을 바인딩하고 사용할 수 있습니다. IronPython도이 두 가지를 모두 사용하기 때문에 이것도 적용 할 것이라고 가정합니다. ICustomTypeDescriptor. 주의 사항이 있습니다. 이벤트를 위해 IronRuby 0.9보다 최신 DLR 빌드가 필요합니다.

IronRuby 명령을 만들려면 이벤트를 구현해야합니다. 이 질문에 대한 더 많은 것을보기 Implementing and Interface in IronRuby that includes CLR Events

바인딩에 참여할 수있는 IronRuby 개체를 만드는 방법은 DLR에 attr 판독기/기록기를 사용해야 속성으로 볼 수 있습니다.

class Bindable 
    attr :some_property, true 
end 

나는 그것에 대해 몇 가지 요지가 있습니다. A Command Example, A simple ViewModel Example with Binding 및 실시 예에서 사용 된 XML Builder based xaml library. 이것들은 나를 위해 일했습니다.

제한 사항이 있습니다. XamlLoader는 CLR에서 IronRuby 클래스를 볼 수 없습니다. 이것은 당신의 견해가 정말로 바보 (0 코드 숨김)이거나 C# dll에서 왔음을 의미합니다. 또한 C#을 사용하지 않고 코드가 숨겨진 사용자 정의 컨트롤이나 사용자 정의 컨트롤을 만들 수 없다는 것을 의미합니다.

IronRuby/WPF에서 완전히 구운 MVVM 응용 프로그램이 없지만 모든 조각이 제 위치에 있고 생각합니다.

2

WPF here을 사용하여 IronPython 및 MVVM을 사용해 본 경험에 대해 블로그에 왔습니다. 놀랍게도 쉽게 갈 수있었습니다.

관련 문제