Подтвердить что ты не робот

MVVM Light + Unity или Prism?

Я немного устарел в WPF прямо сейчас, и мне было бы интересно услышать мнения людей о последней версии Prism (которую я использовал пару версий назад) против подхода MVVM Light + Unity (который я никогда не делали - приличные примеры URL-адресов были бы хорошими). ​​

Мой проект будет большим, состоящим из нескольких модулей, написанных несколькими разработчиками. Есть также средства, чтобы привлечь сторонний пакет управления, чтобы создать приятное рабочее пространство, используя один из причудливых менеджеров компоновки стыковки /Workspace (и я знаю, что некоторые играют лучше с областями Prism, чем другие).

Если вы начинаете проект с нуля прямо сейчас, с чем бы вы пошли и почему? Подробные сведения о конкретных рекомендуемых шаблонах архитектуры были бы полезны (например, автоматическое обнаружение DLL-модулей? Служба регистрации ввоза?). В принципе, любые мысли и советы были бы хорошими. Я бы хотел, чтобы хорошая дискуссия шла. Возможно, есть другое направление, которое вы хотели бы предложить? Я очень нахожусь на этапе исследования и хотел бы как можно больше вклада.

Я поставил это здесь, потому что я думал, что он получит менее предвзятые точки зрения, чем форумы Prism/MVVM Light, но если есть более подходящее место для этого вопроса, укажите мне в этом направлении.

4b9b3361

Ответ 1

Если вам нужна модульность, вы хотите посмотреть на Призм. Призма имеет некоторые элементы, которые могут помочь вам с MVVM (например, DelegateCommand и CompositeCommand), но я думаю, что он более полно с другой инфраструктурой MVVM.

Несколько дней назад возник вопрос о том, как моделировать Призм. Обратите внимание на подробное объяснение того, как рассматривать функциональность Prism. Рекомендации по моделированию высокого уровня для Prism MVVM

Unity - это реализация инверсии контейнера управления, и это определенно хорошо, но Prism имеет возможность использовать другие контейнеры. Он имеет встроенную поддержку MEF (которая, в свою очередь, встроена в .NET 4.0), но это не ваш единственный выбор. Посмотрите на некоторые из образцов, включенных в Призм, и решите, какой подход вам нравится лучше. Единство не вполне само по себе для компоновки пользовательского интерфейса, на мой взгляд. MEF может быть более близким выбором, если вы хотите попробовать создать пользовательский интерфейс с помощью MVVM Framework + IoC Framework.

MVVM Light на самом деле является бесплатной основой для Prism. Другие рамки MVVM для рассмотрения:

  • Фонд MVVM (очень легкий... хорошо подходит для небольших проектов)
  • Caliburn (очень надежная структура)
  • Caliburn Micro (имеет имя и автор из Caliburn, но это похоже на MVVM Light с некоторыми хорошими соглашениями)
  • ReactiveUI (Раньше "ReactiveXAML". Это немного мозговой расплавитель, но если вы изучите Reactive Extensions для .NET(Rx), эта структура просто потрясающая... волшебная, на мой взгляд.)

Если бы я собирался начать новый проект: я бы пошел с Prism и ReactiveUI.

Призма, потому что у вас должна быть модульность с большими проектами, и мне нравится возможность удалять и добавлять большие единицы функциональности в приложение, просто удаляя или добавляя библиотеки DLL (и вам не нужно реализовывать функцию sniffing DLL, как вы будет иметь только подход IoC + MVVM). Легче тестировать, легче отлаживать, проще разрабатывать отдельно. Ницца вокруг.

ReactiveUI, потому что с использованием пользовательского интерфейса в наши дни большая часть вашего времени тратится на управление временем в потоке пользовательского интерфейса. Блокировка - это не-нет... пользователи не хотят видеть замораживание пользовательского интерфейса; они хотят видеть, что анимационный символ ожидания GIF вращается, поэтому они знают, что могут работать над чем-то еще, пока ваши данные загружаются. Кроме того, так много приложений с ценностями в эти дни берут данные из разрозненных систем и объединяют их в пользовательский интерфейс... вам не только нужна хорошая система компоновки (Prism), но вам также понадобится хорошая структура MVVM который рассматривает асинхронные операции как свой хлеб и масло... ReactiveUI это.