Я разрабатываю приложение с моделью MVVM, но я достиг точки, когда мне нужно выбрать, какую среду использовать.
Среди возможных вариантов:
- MVVM Инструментарий
- Фонд MVVM
- WPF Application Framework (WAF)
- Легкий МВВМ
- Caliburn
- подпруга
- призма
- ReactiveUI
По вашему опыту, что лучше?
wpf
mvvm
frameworks
Ранжел
источник
источник
Ответы:
Это действительно зависит от того, чего вы пытаетесь достичь, и от того, сколько инфраструктуры вы хотите создать, плюс от того, с какой легкостью вы сможете найти образцы, которые вам помогут. Я собираюсь заявить об интересе здесь, потому что я активно участвовал по крайней мере в одной платформе MVVM, и я принимал участие в других через группу Disciples WPF, так что я немного предвзят. Сказав это, здесь идет:
Microsoft MVVM Toolkit - это все еще очень в альфа-стадии. Когда это было первоначально выпущено, это взяло немного дикости от Disciples из-за того, что это не сделало. Говоря об этом, MS надеется улучшить этот фреймворк, чтобы его можно было посмотреть - он еще не готов.
Фонд MVVM - версия фреймворка Джоша Смита. Джош - один из отцов MVVM, и он был большим сторонником и учителем модели. В результате у многих из того, что вы найдете в других структурах, есть отпечатки пальцев Джоша. Эта структура предназначена для предоставления основ MVVM, а не для решения некоторых более эзотерических проблем. Первоначально это было предназначено только для WPF, но такие люди, как Лоран Бюньон и я, добавили функциональность / проекты, которые означают, что это будет также совместимая с Silverlight инфраструктура.
WAF - нет опыта, поэтому я не могу комментировать это, я боюсь.
MVVM Light - Laurent Bugnion берет его и только что обновил до версии 2. Это очень хорошая структура, но опять-таки она не предназначена для охвата всех аспектов MVVM-приложений. Учитывая опыт Лорана, в нем очень сильная поддержка Silverlight и Blendability.
Обновление Лоран только что сообщил мне, что версии .NET 3.5 и .NET 4.0 совместимы по функциям. Вау, чтобы пойти Лоран.
Cinch - превосходный фреймворк MVVM для Sacha Barber. Это охватывает больше вопросов, чем рамки, о которых я говорил выше. Это отличная структура, в которой используются концепции, описанные в отличном проекте Билла Кемпфа « Оникс ». Onyx предназначен для дополнения сред MVVM и добавляет функциональность, которая обычно была трудной для людей в MVVM / WPF. Опять же, изначально предназначенный только для WPF, Onyx усовершенствовал совместимость с SL - работа, которой я особенно горжусь.
Призма - Опять же, я никогда не использовал это, но я слышал много хорошего об этом.
Оушен - Карл Шиффлетт, менеджер программы в команде Cider, недавно выпустил полнофункциональную среду WPF MVVM. Опять же, это отличная структура и есть много, чтобы рекомендовать ее.
Суть в том, что скачайте различные фреймворки, посмотрите на них и определите, какой из них наиболее интуитивно соответствует вашему мышлению и вашим требованиям. Если вы считаете, что вам может потребоваться поддержка Silverlight из той же кодовой базы, то для платформ WPF only следует отказаться.
источник
Я нашел эту статью очень полезной http://www.japf.fr/2009/10/a-quick-tour-of-existing-mvvm-frameworks/ Так что я привел ее сюда для будущих пользователей
Я обновляю раздел Cinch и добавляю поддержку silverlight в его функции
Извините за длинную историю
Общие черты:
подпруга
MVVM Light Toolkit
Помощники MVVM
Фонд MVVM
Caliburn
Оникс
кальций
nRoute
Нито МВВМ
Океан
Базовая структура MVVM
GoodLight
источник
Я пытаюсь описать рамки, отсутствующие в великолепном ответе Пита:
MVVM Toolkit (Microsoft) - очень легкая библиотека с шаблонами проектов Visual Studio, которая должна поддерживать начинающих с этим шаблоном. Если Microsoft получит хорошие отзывы о своем наборе инструментов, они могут реализовать это как новый шаблон проекта Visual Studio (возможно, 2010).
Prism (Microsoft p & p) - это инфраструктура, которая обеспечивает не только поддержку шаблона MVVM. Основная цель этого проекта - помочь вам создать модульные приложения WPF и / или Silverlight. Когда вам просто нужно реализовать шаблон MVVM или вы новичок в .NET / WPF, я не буду рекомендовать этот проект. Смотрите также: Ссылка .
WPF Application Framework (WAF) - это облегченная среда, которая помогает создавать приложения WPF с MVVM. Это только для WPF и поэтому не поддерживает Silverlight. Это идет немного другим путем, чем большинство других сред MVVM с введением контроллеров . Они отвечают за рабочий процесс приложения и являются посредниками между различными моделями представления.
источник
Мех. Mvvm на самом деле не требует всей платформы для поддержки IMO. Если вы понимаете эту концепцию, довольно просто начать с чистого базового класса VM, который реализует INotify, и просто перейти оттуда.
источник
Также посмотрите на:
Калиберн и Оникс !
источник
Смешайте свой собственный!
Я использовал EventAggregator из PRISM, ViewModelBase из основания MVVM и так далее. Я также настроил RelayCommand (в некоторых местах вызывался DelegateCommand), чтобы принимать и другие данные, и так далее.
Я не рекомендовал бы только одну структуру как таковую.
источник
моя ставка будет на Caliburn и MVVMlight, похоже, что не многие из этих фреймворков mvvm поддерживают silverlight. Я могу предвидеть, что будет больше платформ MVVM на выбор, чем платформ IoC, потому что сложнее установить границу функциональности для инфраструктуры mvvm. Я думаю, что лучший способ выяснить, какой из них лучше подходит вашему проекту, будет перечислить / сравнить их функции.
Также проверьте Mix10. Из этого разговора я многому научился: создавая свою среду mvvm.
источник
Также Cocktail и DevForce Framework от Ideablade
источник
Я использую Prism и мне это нравится. Одной из важных вещей для меня было то, что там будут другие люди, которые могут помочь мне, если потребуется, и хорошие примеры. После того, как вы освоите основы, вам понадобится целый набор расширений для вашего приложения, и это будет намного проще, если вы работаете с той же платформой, что и другие.
источник
В общем, я на 90% через свое приложение, и все, что я использовал в MVVM Toolkit, - это заводская функция, которая создает для меня команду с заданной функцией делегата для запуска в Execute. Я думаю, что я мог бы переключиться на любой другой фреймворк или без фреймворка через пару часов.
источник
Еще один вопрос для рассмотрения - MEFedMVVM . Я использовал его в нескольких проектах, и он легкий, ненавязчивый и поддерживает Silverlight и WPF. Он также может поддерживать данные времени разработки в Blend для тех, кто использует этот продукт.
источник
Если вы ищете расширяемость (возможность написания надстроек) поверх инфраструктуры приложений WPF / MVVM, то вам может быть интересен отказ от ответственности SoapBox Core : я написал его . Он с открытым исходным кодом, поэтому, даже если вы его не используете, там могут быть некоторые хорошие идеи для вас. Он использует MEF для расширяемости и IoC.
источник
Есть также nRoute
Действительно хорошая прикладная среда для WPF / Silverlight, которая поддерживает MVVM
источник