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

227

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

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

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

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

Я вижу, что это закрыто и старо, но это неу меня нет рамокв последнее время пользуюсьgithub.com/reactiveui/ReactiveUI kenny
Да, я думаю, вы могли бы сказать это :) Andrei Rînea
Извини, Кент. Как я мог забыть Калибурна? Pete OHanlon
+1 - Хороший вопрос, но, пожалуйста, уточнителучше', Разные фреймворки дают разные преимущества, лучшее зависит от ваших требований. С нетерпением ждем ответов :) Russell

Ваш Ответ

13   ответов
8

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

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

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

чего вы пытаетесь достичь, и от того, сколько инфраструктуры вы хотите создать, плюс от того, с какой легкостью вы сможете найти образцы, которые вам помогут. Я'Я собираюсь объявить интерес здесь, потому что яЯ был активно вовлечен по крайней мере в одну среду 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 следует отказаться.

@ Пит, обновление вашего ответа было бы здорово, потому что мир, должно быть, изменился за последние несколько месяцев. Ian Ringrose
Если ты'ищем @PeteКаркас Goldlight MVVM -goldlight.codeplex.com/SourceControl/latest CAD bloke
MVVM-Light по-прежнему крепок. Heliac
Я хотел бы прочитать обновленную информацию о состоянии дел в MVVM-framework-land, 21 месяц спустя. Интересно, сколько технических специалистов пропало, чтоцветут, и что онипересаживать в этом сезоне. corlettk
4

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

2

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

19

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

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

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

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

Я вижу смысл в документации. Но, возможно, нет необходимости разрабатывать собственные документы. Ссылки на внешние сайты с документацией могут быть встроены в сам код. Vasudevan Kannan
Я с уважением не согласен, проблема с этим подходом проявится, когда вы получите новых участников - стоимость вступления в проект будет намного выше, поскольку внутренние документы, как правило, не являются приоритетными. Florian Doyon
16
1

nRoute

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

43

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 с введениемКонтроллеры, Они отвечают за рабочий процесс приложения и являются посредниками между различными моделями представления.

1

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

2

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

53

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 •

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

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

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

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

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

Похожие вопросы