Nano Hash - криптовалюты, майнинг, программирование

MVVM Light + Unity или Prism?

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

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

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

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


Ответы:


1

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

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

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

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

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

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

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

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

20.01.2011
  • Извините за задержку с ответом на это, внезапно приоритетом стал другой проект, и я забыл об этом. Очень полезный ответ, я посмотрю на другие темы и фреймворки, на которые вы мне указали. 28.01.2011
  • Я бы посоветовал проверить MEF для Silverlight как дополнение или замену для аспектов композиции Prism. 01.02.2011
  • Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..