Хорошо ли подходят IronPython или IronRuby для шаблона MVVM в WPF / Silverlight? - PullRequest
2 голосов
/ 22 сентября 2009

Я очень счастливо использовал шаблон Model-View-ViewModel (MVVM) в приложениях WPF и Silverlight в сочетании с C #. Декларативная разметка XAML и привязка данных неоценимы - я просто не могу жить без них. Но этот разговор Гарри Пирсона о динамических языках вдохновил меня на изучение динамического языка, и я хотел бы попробовать его в новом проекте. Мне нравится читать IronPython In Action , и он содержит несколько примеров WPF - но только с кодом императивного стиля.

Что вы думаете об использовании IronPython или IronRuby на уровнях ViewModel и Model в приложениях MVVM (по сравнению с C #)? Какие особенности делают их привлекательными (или непривлекательными)? Меня интересуют фундаментальные преимущества / ограничения (например, AOP, утка, исправление обезьян, ограничения статического типа и т. Д.) И практические (например, производительность, нет текущей версии IronPython Studio для v2 и т. Д.) Будут ли какие-либо ограничения улучшаться с C # 4.0?

Спасибо

David

Ответы [ 3 ]

3 голосов
/ 22 сентября 2009

Шей прав, но только для Silverlight, и я не использовал Silverlight и IronRuby. Вы можете связывать и использовать команды с чистыми IronRuby и WPF. Я предполагаю, что это также относится к IronPython, поскольку они оба используют ICustomTypeDescriptor . Предостережение: для событий вам потребуется более свежая сборка DLR, чем IronRuby 0.9.

Чтобы создать команду IronRuby, вам нужно реализовать события. См. Этот вопрос SO для более Реализация и интерфейс в IronRuby, который включает в себя события CLR

Что касается создания объекта IronRuby, который может участвовать в связывании, сделка представляет собой средство чтения / записи attr, которое необходимо использовать для DLR, чтобы рассматривать его как свойство.

class Bindable
  attr :some_property, true
end

У меня есть несколько гистов по этому поводу. Пример команды , Простой пример ViewModel с привязкой И используемая в примерах библиотека xaml на основе XML Builder *1017*. Это сработало для меня.

Есть ограничения. XamlLoader не может видеть классы IronRuby из CLR. Это означает, что ваши взгляды ДЕЙСТВИТЕЛЬНО тупые (без кода) или они приходят из C # dll. Это также означает, что вы не можете создавать пользовательские или пользовательские элементы управления, имеющие какой-либо код, не переходя на C #.

Хотя у меня нет полностью выпеченного приложения MVVM в IronRuby / WPF, я думаю, что все кусочки на месте, и я добираюсь туда.

2 голосов
/ 06 октября 2010

Я написал в блоге о своем опыте опробования IronPython и MVVM с WPF здесь . Начать было удивительно легко.

2 голосов
/ 22 сентября 2009

Я могу сказать, что написание WPF с IronRuby довольно круто, и если вы потратите немного времени на метапрограммирование своей среды, это может быть здорово.

Однако есть и недостатки: привязка данных не работает с объектами IronRuby (для этого необходимо использовать объекты CLR - посмотрите в моем блоге для обходного пути), но это должно улучшиться. Чистая 4.

Обратите внимание, что ожидается, что IronRuby выйдет в RTM только в ноябре.

Сказав все это, я рекомендую вам проверить это. Вы можете влюбиться в это, как у меня:)

Шей.

...