Какие рамки для MVVM мне следует использовать? [закрыто]

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

Среди возможных вариантов:

MVVM ИнструментарийФонд МВВМWPF Application Framework (WAF)Легкий МВВМCaliburnподпругапризма

По вашему опыту, что лучше?

 Tarfa05 нояб. 2009 г., 17:38
Будет ли справедливым сказать, что WPF Application Framework (WAF) - это облегченная версия блока Composite Application Guidance (Prism)?
 kenny29 окт. 2013 г., 22:52
Я вижу, что это закрыто и старо, но это неу меня нет рамокв последнее время пользуюсьgithub.com/reactiveui/ReactiveUI
 Rangel11 сент. 2009 г., 10:09
Ну, было бы очень хорошо, что вы можете использовать с WPF и Silverlight, и с минимальной кривой обучения.
 Kent Boogaart11 сент. 2009 г., 10:46
Возможно, вы захотите проверить Caliburn тоже.codeplex.com/caliburn
 dave13 нояб. 2014 г., 00:47
Старый и старый, но ... Я сделал свой первый проект, используя Prism (ответ ниже), так как мне нужна поддержка компонентов. Мой последний проект я сделал сырым - никаких рамок вообще. Все, что вам нужно, это командный класс, и вы можете делать MVVM без фреймворка - этоо легком весе, как вы можете получить.
 Andrei Rînea04 мая 2010 г., 09:33
Да, я думаю, вы могли бы сказать это :)
 Russell11 сент. 2009 г., 09:58
+1 - Хороший вопрос, но, пожалуйста, уточнителучше', Разные фреймворки дают разные преимущества, лучшее зависит от ваших требований. С нетерпением ждем ответов :)
 Pete OHanlon11 сент. 2009 г., 10:59
Извини, Кент. Как я мог забыть Калибурна?

Ответы на вопрос(13)

MEFedMVVM, Я'мы использовали его в нескольких проектах, и этоs легкий, ненавязчивый и поддерживает Silverlight и WPF. Это's также может поддерживать данные времени разработки в Blend для тех, кто использует этот продукт.

ыло то, что там будут другие люди, которые могут помочь мне, если потребуется, и хорошие примеры. Как только вы освоите основы, у вас будет целая куча расширений.понадобится вашему приложению, и вам будет гораздо прощеработаем с той же структурой, что и другие.

nRoute

Действительно хороший фреймворк для приложений WPF / Silverlight, который поддерживает MVVM

Решение Вопроса

чего вы пытаетесь достичь, и от того, сколько инфраструктуры вы хотите создать, плюс от того, с какой легкостью вы сможете найти образцы, которые вам помогут. Я'Я собираюсь объявить интерес здесь, потому что яЯ был активно вовлечен по крайней мере в одну среду MVVM, и яМы внесли свой вклад в других через группу учеников WPF, поэтому яЯ немного предвзят. Сказав это, здесь идет:

MicrosoftsMVVM Инструментарий - это все еще очень в альфа-этапах. Когда это было первоначально выпущено, это взяло немного дикости от Учеников из-за того, что это не сделалот делать Говоря об этом, MS надеется улучшить эту структуру, так чтоодин смотреть - этоПросто еще не готов.

Фонд MVVM - ах Джош Смитверсия фреймворка. Джош - один из отцов MVVM, и он был большим сторонником и учителем модели. В результате много чего вынайду в других рамках Джошаотпечатки пальцев на всем протяжении этого. Эта структура предназначена для предоставления основ MVVM, а не для решения некоторых более эзотерических вопросов. Первоначально это было предназначено только для WPF, но такие люди, как Лоран Буньон и я, добавили функциональность / проекты, которые означают, что это будет также совместимая с Silverlight инфраструктура.

WAF - нет опыта, так что я могуя не могу это прокомментироватьБоюсь.

MVVM Light - Лоран БюньонВозьмите его, и только что обновили до версии 2. Это очень хороший фреймворк, но опять жене предназначены для охвата каждого аспекта приложений MVVM. Дано ЛорануЭто очень сильная поддержка Silverlight и Blendability.

Обновить Лоран только что сообщил мне, что версии .NET 3.5 и .NET 4.0 совместимы по функциям. Вау, чтобы пойти Лоран.

Cinch - Sacha Barber 'Отличный WPF только MVVM фреймворк. Это охватывает больше земли, чем рамки, которые ямы говорили выше. Это'Это отличная основа, в которой используются концепции, изложенные в статье Билла Кемпфа.отличноОникс проект. Onyx предназначен для дополнения сред MVVM и добавляет функциональность, котораяВ MVVM / WPF людям, как правило, было тяжело. Опять же, изначально предназначенный только для WPF, Onyx усовершенствовал совместимость с SL - работа, которой я особенно горжусь.

призма - Опять яЯ никогда не использовал его, но яЯ слышал много хорошего об этом.

Океан - Карл Шиффлетт, менеджер программы в команде Cider, недавно выпустил полнофункциональную инфраструктуру WPF MVVM. Опять же, это отличная структура и есть много, чтобы рекомендовать ее.

Суть в том, что скачайте различные фреймворки, посмотрите на них и определите, какой из них наиболее интуитивно соответствует вашему мышлению и вашим требованиям. Если вы считаете, что вам может потребоваться поддержка Silverlight из той же кодовой базы, то для платформ WPF only следует отказаться.

 Rangel11 сент. 2009 г., 12:22
Спасибо, отличный ответ.
 Heliac10 апр. 2014 г., 11:08
MVVM-Light по-прежнему крепок.
 LBugnion16 апр. 2010 г., 13:08
Привет, Пит, просто хочу прокомментировать, что MVVM Light Toolkit работает точно так же для WPF 3.5 и WPF 4, как и для Silverlight 3 и Silverlight 4. Я стараюсь синхронизировать функции настолько, насколько я могу. Вы правы насчет смешиваемости, но это для меня серьезное беспокойство :) Ура, Лоран
 CAD bloke22 янв. 2015 г., 14:22
Если ты'ищем @PeteКаркас Goldlight MVVM -goldlight.codeplex.com/SourceControl/latest
 ScottCher29 апр. 2011 г., 23:29
Я был разочарован тем, что MVVM Toolkit неОн был обновлен для работы с Visual Studio 2010. Возможно, потребуется добавить это в процесс принятия решений. Большинство людей, которых я знаю, используя шаблоны MVVM в течение 2010 года, используют MVVM Light, а некоторые мигрировали к этому только по этой причине.
 Benjol23 мая 2013 г., 12:47
Что-нибудь изменилось за последние почти четыре года? (Кроме Джоша Смитаперебежчик :))
 corlettk05 июн. 2011 г., 09:18
Я хотел бы прочитать обновленную информацию о состоянии дел в MVVM-framework-land, 21 месяц спустя. Интересно, сколько технических специалистов пропало, чтоцветут, и что онипересаживать в этом сезоне.
 Jirapong11 сент. 2009 г., 13:05
Наряду с этим, какова ваша структура уровня доступа к данным? ребята .. LINQ, LLBLGen, EF, nHibernate?
 Pete OHanlon11 сент. 2009 г., 13:48
Это зависит от проекта и требований. Иногда мы используем LINQ, иногда NHibernate, иногда Castle ActiveRecord, а иногда и eXpress Persistent Objects.
 Ian Ringrose23 нояб. 2010 г., 10:42
@ Пит, обновление вашего ответа было бы здорово, потому что мир, должно быть, изменился за последние несколько месяцев.
 Jirapong11 сент. 2009 г., 10:43
+1, отличный ответ. какой из них вы используете в своей повседневной работе?
 Pete OHanlon11 сент. 2009 г., 10:51
Я использую тот, который мы написали, потому что у нас есть очень специальные потребности для MVVM. Это'под сильным влиянием работы, которую сделал Джош, и яЯ буду выпускать его как Open Source в ближайшем будущем (яЯ занят вырыванием проприетарных битов). Это'называется Goldlight.
 Chry Cheng17 сент. 2010 г., 08:44
Как работает MVVM Light 's смешиваемость имеет преимущество перед подходом, подробно изложенным в ff. Сообщение блога:blogs.msdn.com/b/mcsuksoldev/archive/2010/08/27/...?
 Deepesh05 июн. 2011 г., 10:45
+1 Для объяснения сложных вещей это простыми словами :-)
 Kelly07 сент. 2014 г., 06:19
Забыли Caliburn.micro. Отличная структура, хотя немного жесткая, если у вас есть крайние случаи.

похоже, что не многие из этих фреймворков mvvm поддерживают silverlight. Я могу предвидеть, что будет больше платформ MVVM для выбора, чем платформ IoC, потому что сложнее установить границу функциональности для инфраструктуры mvvm. Я думаю, что лучший способ выяснить, какой из них лучше подходит вашему проекту, - перечислить / сравнить их характеристики.

Также проверьте Mix10. Из разговора я многому научился: создавая свой фреймворк mvvm.

 anshul26 нояб. 2010 г., 19:51
Я нашел этот разговор весьма полезным. Вот'Прямая ссылка:live.visitmix.com/MIX10/Sessions/EX15

ржки ИМО. Если вы понимаете концепцию, этоДовольно просто начать с чистого базового класса виртуальных машин, который реализует INotify, и просто перейти оттуда.

 Syaiful Nizam Yahya09 мар. 2013 г., 05:29
Это причина, почему многие разработчики развивают библиотеку mvvm. Если то, что вы говорите, правда, то зачем этим разработчикам тратить свое время? Почему пользователи этих фреймворков продолжают использовать свои любимые фреймворки mvvm? Правда, "Mvvm не делаетдействительно требуется целая структура для поддержки IMO ", Но это не практично, чтобы обойтись без MVVM Framework.
 Heliac10 апр. 2014 г., 11:06
-1 IMO, пишущий свой собственный класс RelayCommand для ICommands, класс Messenger для взаимодействия между виртуальными машинами и свой собственный контейнер IoC, чтобы упомянуть только самые основные инструменты, необходимые для хорошо функционирующего приложения WPF, является основной PITA. Ваш ответ действителен только для самых простых программ.

Я использовал EventAggregator из PRISM, ViewModelBase из основания MVVM и так далее. Я также настроил RelayCommand (в некоторых местах вызывался DelegateCommand), чтобы принимать и другие данные, и так далее.

Я бы неЯ рекомендую только одну структуру как таковую.

 Vasudevan Kannan23 окт. 2013 г., 22:31
Я вижу смысл в документации. Но, возможно, нет необходимости разрабатывать собственные документы. Ссылки на внешние сайты с документацией могут быть встроены в сам код.
 Florian Doyon28 февр. 2011 г., 13:23
Я с уважением не согласен, проблема с этим подходом проявится, когда вы получите новых участников - стоимость вступления в проект будет намного выше, поскольку внутренние документы, как правило, не являются приоритетными.

MVVM Toolkit (Microsoft) это очень легкая библиотека с шаблонами проектов Visual Studio, которая должна поддерживать начинающих с этим шаблоном. Если Microsoft получит хорошие отзывы о своем наборе инструментов, они могут реализовать это как новый шаблон проекта Visual Studio (возможно, 2010).

Призма (Microsoft p &п) является структурой, которая обеспечивает больше, чем поддержка шаблона MVVM. Основная цель этого проекта - помочь вам построитьмодульная Приложения WPF и / или Silverlight. Когда вам просто нужно реализовать шаблон MVVM или вы новичок в .NET / WPF, я выигралЯ не рекомендую этот проект. Смотрите также:Ссылка на сайт.

WPF Application Framework (WAF) это облегченная среда, которая помогает вам создавать приложения WPF с MVVM. Это'только для WPF и поэтому неt поддерживает Silverlight. Это идет немного по-другому, чем большинство других сред MVVM с введениемКонтроллеры, Они отвечают за рабочий процесс приложения и являются посредниками между различными моделями представления.

Если вы ищете расширяемость (возможность написания надстроек) поверх инфраструктуры приложений WPF / MVVM, то вас может заинтересоватьSoapBox Core отказ от ответственности: я написал это, Это'с открытым исходным кодом, так что даже если вы неЕсли вы не используете его, там могут быть хорошие идеи для вас. Он использует MEF для расширяемости и IoC.

я на 90% через свое приложение, и все, что я использовал в MVVM Toolkit, - это заводская функция, которая создает для меня команду с функцией делегата для запуска в Execute. Я думаю, что я мог бы переключиться на любой другой фреймворк или без фреймворка через пару часов

http://www.japf.fr/2009/10/a-quick-tour-of-existing-mvvm-frameworks/ Так что я принес это сюда для будущих пользователей

Я обновляю раздел Cinch и добавляю поддержку silverlight к его функциям.

прошу прощения за длинную историю

Общие черты:•

 Класс ViewModelBase (для реализации интерфейса INotifyPropertyChanged) •

 RelayCommand как класс, чтобы связать команду пользовательского интерфейса с ViewModelс обработчиками •

 Юнит-тесты поставляются с фреймворком

Cinch •

 Автор: Саша Барбер •

 Поддержка Silverlight: нет (Cinch версии 2 поддерживает Silverlight) •

 Документация: отлично, 6 статей опубликовано на CodeProject •

 Хостинг: CodePlex •

 Лицензия: Code Project Открытая лицензия •

 Особенности:

прикрепленное поведение

проверка с использованием IDataErrorInfo

поддержка IEditableObject

создание слабых событий и подписка

обмен сообщениями посредника с использованием слабых событий

Поддержка IOC / DI (с использованием Unity)

услуги: регистратор событий, окно сообщения, диалог сохранения, всплывающее окно

помощники

поддержка пунктов меню

закрываемые модели

Генератор кода MVVM

MVVM Light Toolkit •

 Автор: Лоран Бюньон •

 Поддержка Silverlight: да •

 Документация: много статей доступно на Laurentблог + другие разработчики также

 Хостинг: CodePlex •

 Лицензия: лицензия MIT •

 Особенности:

Установщик MSI

VS проект и шаблон товара

Фрагменты кода VS

Система сообщений для межвидовой связи

Обработка событий как команд

Помощники MVVM •

 Автор: Марк Смит •

 Поддержка Silverlight: нет •

 Документация: несколько статей о Маркеблог s •

 Хостинг: персональный сайт •

 Лицензия: не определена •

 Особенности:

прикрепленное поведение

создание viewmodel с использованием расширения разметки

проверка на основе атрибутов

IOC / DI с использованием подхода ServiceProvider

закрываемая модель

курсор ожидания (используя новый WaitCursor () {// ваш код здесь})

Фонд MVVM •

 Автор: Джош Смит •

 Поддержка Silverlight: нет •

 Документация: статьи о реализации Messenger на Джоша или Марлона Гречаблог s •

 Хостинг: CodePlex •

 Лицензия: MS-PL •

 Особенности:

Система сообщений для межвидовой связи

Монитор событий PropertyChanged

Caliburn •

 Автор: Роб Айзенберг •

 Поддержка Silverlight: да •

 Документация: доступна полная онлайн-документация •

 Хостинг: CodePlexhttp://www.codeplex.com/caliburn•

 Лицензия: лицензия MIT •

 Особенности:

Команды построены поверх действий и, таким образом, имеют много общих функций, включая несколько входных параметров, фильтры и автоматическое асинхронное выполнение.

докладчики, которые занимаются вопросами жизненного цикла пользовательского интерфейса, такими как обработка семантики активации, деактивации и выключения для различных компонентов пользовательского интерфейса

Приложения Caliburn полностью тестируемы

различные утилиты, такие как менеджер фоновых задач

поддерживает различные шаблоны пользовательского интерфейса (не только MVVM)

контейнер для инъекций зависимости

Оникс•

 Автор: Уильям и Кемпф •

 Поддержка Silverlight: нет •

 Документация: базовое введение доступно на CodePlex •

 Хостинг: CodePlex •

 Лицензия: не указана •

 Особенности:

Шаблон ServiceLocator

Создание ViewModel с использованием пользовательского расширения разметки

Сервисы, связанные с пользовательским интерфейсом, такие как IDisplayMessage

Кальций •

 Автор: Даниэль Воан •

 Поддержка Silverlight: нет •

 Документация: 2 очень подробные статьи о CodeProject (часть1 и часть2) •

 Хостинг: CodePlex •

 Лицензия: используйте, копируйте, изменяйте и / или распространяйте и сохраняйте авторское право! •

 Особенности:

Диспетчер модулей для включения или отключения модулей во время выполнения

службы обмена сообщениями для взаимодействия с пользователем с клиента или сервера с использованием одного и того же API

Служба команд, чтобы связать WPF ICommands с интерфейсами содержимого, которые становятся активными, только когда активное представление или модель представления реализует интерфейс

Региональные адаптеры для панелей инструментов и меню

Ведение журнала клиент-сервер готово к работе "из коробки"

Включает в себя модули, такие как веб-браузер, текстовый редактор, окно вывода и многое другое

Интерфейс с вкладками с грязной индикацией файла (многоразовое использование в разных модулях)

nRoute •

 Автор: Риши •

 Поддержка Silverlight: да •

 Документация: многие статьи доступны на автораs блог (ссылки см. на домашней странице проекта CodePlex) •

 Хостинг: CodePlex •

 Лицензия: MS-PL •

 Особенности:

поддержка моделей поведения и триггеров Blend3

структура локатора ресурса

просмотр сервисов: OpenFileDialog, ShowMessage…

использует атрибуты для сопоставления View и ViewModel вместе

Нито МВВМ *

 Автор: Шаммах •

 Поддержка Silverlight: нет •

 Документация: нет •

 Хостинг: CodePlex •

 Лицензия: не указана •

 Особенности:

различные дружественные MVVM реализации интерфейса ICommand

Океан•

 Автор: Карл Шиффлет •

 Поддержка Silverlight: нет •

 Документация: статьи доступны на Карлаблог s •

 Хостинг: персональный сайт •

 Лицензия: не указана •

 Особенности:

написано в VB.Net

проверка на основе атрибутов

базовые классы viewmodel: relaycommand, closeableviewmodel…

Уровень доступа к данным сервера SQL

Базовая структура MVVM •

 Автор: Лестер Лобо •

 Поддержка Silverlight: нет •

 Документация: пример приложения, доступного в библиотеке •

 Хостинг: CodePlex •

 Лицензия: MS-PL •

 Особенности:

делегирование команд \ связывание клавиш

обмен сообщениями между виртуальными машинами

обработка событий как команд с прикрепленным поведением

обработка диалогов (и более) как сервисов

Фрагменты кода VS

GoodLight •

 Автор: Питер ОХанлон *Поддержка Silverlight: да •

 Документация: пример приложения, доступного в библиотеке •

 Хостинг: CodePlex •

 Лицензия: MS-PL •

 Характеристики:"

рабочая среда" управление (набор документов, которые могут быть закрыты)

поддержка кожи

обмен сообщениями между виртуальными машинами

 Kildareflare06 июл. 2011 г., 17:29
Отличный пост. Просто думал, что яДобавлю, что Cinch версии 2 поддерживает Silverlight.

Ваш ответ на вопрос