Пользовательская реализация MVVM Vs. PRISM - PullRequest
25 голосов
/ 06 июня 2011

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

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

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

  • Почему я должен изучать PRISM (особенно PRISM, а не другие фреймворки MVVM)?
  • Преимущества PRISM по сравнению с пользовательской реализацией MVVM и
  • Стоит ли вкладывать средства в изучение ПРИЗМЫ?

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

Ответы [ 4 ]

25 голосов
/ 06 июня 2011

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

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

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

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

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

Надеюсь, это поможет:)

1 голос
/ 06 июня 2011

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

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

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

0 голосов
/ 01 сентября 2016

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

...