Пользовательская реализация MVVM Vs. PRISM

Этот вопрос вызван этим закрытым вопросом:

Что предлагает Prism разработчику? И стоит ли это?

Я уже реализовал свои собственные реализации MVVM в корпоративных приложениях. Мне интересно знать:

  • Почему я должен изучать PRISM (в частности, PRISM, а не другие frameworks MVVM)?
  • Преимущества PRISM над пользовательской реализацией MVVM и
  • Стоит ли инвестировать в изучение PRISM?

Надеюсь, этот вопрос не субъективен, и все, пожалуйста, не вступайте в аргументы 🙂

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

    1. Испытано гораздо больше глазных яблок : чем вы сами. Это (надеюсь) включает в себя модульные тесты, которые вы можете или не можете делать, создавая свою собственную инфраструктуру.
    2. Более читаемый для других разработчиков : у кого-то еще нет опыта работы с вашей пользовательской инфраструктурой MVVM. Но если другой разработчик присоединяется к вашему проекту или присоединяется к вашей команде или присоединяется к вашей компании, они могут перейти прямо в код Prism.
    3. Лучшая документация : в любом случае любое новое присоединение, вероятно, должно изучить веревки, вручную собрав коллективные знания из вашего мозга и любых других пользователей в команде, и посмотрев исходный код. Сторонние структуры имеют собственную документацию, а в Интернете больше сообщений в блогах.
    4. Лучшее сообщество : вы можете задавать вопросы о StackOverflow о том, «как мне сделать X с Prism?» Вы не можете спросить об этом с помощью своей пользовательской структуры.
    5. Вероятнее всего, более способный : если вам нужно больше пользователей, чем только вы / ваша команда, добавится больше функций. Если вам нужно сделать что-то связанное с MVVM, что вы никогда не делали раньше, вероятность того, что он не встроен в вашу собственную инфраструктуру MVVM. Но это, скорее всего, в Призме.
    6. Лучшая структура . Предположим, вы хотели сделать что-то связанное с MVVM, но это не было в Призме. Скорее всего, для этого есть веская причина! Если что-то не в (разумно зрелой) структуре, предназначенной для работы в данном домене, это признак того, что то, что вы пытаетесь сделать, – это неестественный или неудобный способ приблизиться к проблеме. Работая со своей собственной инфраструктурой, слишком легко сказать «о, я добавлю эту функцию», а через 6 месяцев поймут, что вы совершили огромную ошибку, потому что эта новая функция делает ваш код очень трудным для выполнения или заканчивается тем, что является вектором для лотов ошибок или чего-то еще.
    7. Позиция CV : у меня были бы смешанные чувства к найму того, кто «реализовал и использовал пользовательскую среду MVVM». Хотя это может означать, что они умны, это может также указывать на страшный «нестроенный здесь синдром». С другой стороны, размещение «Microsoft Prism MVVM Framework» среди огромного перечня технологий может быть приятным, но это не вау-эй. Лучшее из обоих миров было бы более длинным маркером, в соответствии с «Глубоким пониманием шаблона MVVM, достигнутым путем первого внедрения платформы MVVM для обучающих целей, прежде чем переключиться на MVVM Prism». Да, разница между этими тремя не собирается делать или разорвать ваше резюме, а синдром незастроенного здесь – это то, что, надеюсь, возникнет в интервью, но это стоит иметь в виду, особенно если вы применяете для места, которое получает достаточно резюме, они могут позволить себе выбросить что-нибудь, что слегка их нервирует.

    PRISM может быть вам интересен, потому что это больше, чем MVVM. Да, его часть может рассматриваться как основа MVVM (все это являются объектами NotificationObject , EventAggregator и Command), но она предлагает гораздо больше.

    Это позволяет вам создавать композитные приложения из нескольких свободных пар «Модули». Он имеет очень гибкую и расширяемую навигационную среду (Region Navigation), предлагает интеграцию с контейнерами IoC (особенно Unity и MEF) и множество других функций.

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

    Надеюсь это поможет 🙂

    Prism – это структура приложения с функциями MVVM, но не является (на мой взгляд) полнофункциональной инфраструктурой MVVM. Он предлагает минимум, необходимый для разработки базовой MVVM.

    См. Мой предыдущий ответ на аналогичный вопрос для разбивки рамок состава приложения и структур MVVM. Большинство приложений выбирают один из двух категорий:

    Альтернативы Prism + MEF для модульных приложений MVVM

    С призмой и MEF вы можете создавать очень расширяемые и поддерживаемые. Чистое приложение. С каждым модулем с собственным пользовательским интерфейсом в отдельной отдельной DLL. Единственное соединение между вашими модулями или расширениями и MainUI будет областью, в которую вы будете вводить пользовательский интерфейс вашего расширения. И поверьте мне, он очень расширяемый и обслуживаемый

    Давайте будем гением компьютера.