Если вам нужна модульность, вам стоит взглянуть на Prism.Prism имеет несколько элементов, которые могут помочь вам с MVVM (например, DelegateCommand и CompositeCommand), но я думаю, что он более завершен с другой инфраструктурой MVVM.
Несколько дней назад возник вопросо том, как моделировать призму.Проверьте это для подробного объяснения того, как рассмотреть функциональность Prism. Советы по моделированию высокого уровня для Prism MVVM
Unity - это реализация инверсии контейнера управления, и это, безусловно, хорошо, но Prism имеет возможность использовать другие контейнеры.Он имеет встроенную поддержку MEF (которая, в свою очередь, встроена в .NET 4.0), но это не единственный ваш выбор.Посмотрите на некоторые образцы, включенные в Prism, и решите, какой подход вам больше нравится.На мой взгляд, Unity не является полным для композитинга пользовательского интерфейса.MEF может быть более близким выбором, если вы хотите попытаться объединить пользовательский интерфейс с подходом MVVM Framework + IoC Framework.
MVVM Light на самом деле является дополнительной платформой для Prism.Другие фреймворки MVVM для рассмотрения:
- Фонд MVVM (очень легкий ... подходит для небольших проектов)
- Caliburn (очень надежный фреймворк)
- Caliburn Micro (акцииимя и автор из Caliburn, но это похоже на MVVM Light с некоторыми приятными соглашениями)
- ReactiveUI (Раньше "ReactiveXAML". Это что-то вроде плавления мозгов, но если выИзучите Reactive Extensions для .NET (Rx), этот фреймворк просто потрясающий ... по моему мнению, волшебный.)
Если бы я собирался начать новый проект: я бы выбрал Prism и ReactiveUI,
Prism, потому что у вас должна быть модульность с большими проектами, и мне нравится возможность удалять и добавлять большие функциональные единицы в приложение, просто удаляя или добавляя библиотеки DLL (и вам не нужно реализовывать анализ DLL)функция, как вы бы только с подходом IoC + MVVM).Легче тестировать, легче отлаживать, легче разрабатывать отдельно.Приятно повсюду.
ReactiveUI, потому что в наши дни при программировании пользовательского интерфейса большая часть времени тратится на управление временем в потоке пользовательского интерфейса.Блокировка запрещена ... пользователи не хотят видеть зависание пользовательского интерфейса;они хотят видеть, как вращается анимированный символ ожидания GIF, поэтому они знают, что могут работать над чем-то другим во время загрузки ваших данных.Кроме того, значительная часть полезных приложений, предоставляемых сегодня, берет данные из разрозненных систем и объединяет их в пользовательском интерфейсе ... не только вам понадобится хорошая система компоновки (Prism), но вам также понадобится хорошая среда MVVMкоторый обрабатывает асинхронные операции как хлеб с маслом ... ReactiveUI это так.