Что такое Призма для WPF?

137

Я часто сталкивался с тем, что называется Призма . Microsoft, которая управляет проектом, описывает его как

Рекомендации по составным приложениям в WPF и Silverlight.

Даже после прочтения более подробных описаний, я боюсь, что понятия не имею, о чем это на самом деле.

Я надеюсь, что здесь кто-нибудь сможет дать мне краткое и ясное объяснение того, что на самом деле представляет собой Призма и почему я должен ее изучить. Я уже пару лет являюсь разработчиком WPF, использую MVVM, если честно, и недавно сталкивался с людьми, использующими Prism, но лично чувствую себя немного не в курсе.

В частности, меня интересуют следующие моменты:

  • Является ли Prism буквально (или главным образом) буклетом, представленным на сайте MSDN ? Включает ли он какие-либо библиотеки, если да, то для чего именно?

  • Является ли Prism платформой MVVM? Должен ли я использовать его как «официальную платформу Microsoft MVVM» по сравнению с другими или своими?

  • Обеспечивает ли это внедрение зависимости? Так ли это относится к MEF?

  • Все, что я должен знать о том, что делает Prism, как разработчик WPF / Silverlight.

нолдорин
источник
5
На самом деле это тоже довольно сложная вещь - Prism пытается удовлетворить множество потребностей, поэтому сложно получить один «правильный» ответ, если вы пытаетесь выяснить его цель. Это действительно делает несколько вещей.
Рид Копси
1
На этот похожий вопрос, заданный мной, также есть несколько хороших ответов на этот вопрос - stackoverflow.com/questions/6251821/…
akjoshi
9
еще одно темное болото от P & P. каждый раз, когда они выпускают что-то подобное, мне приходится заходить в SO или википедию, чтобы выяснить, что это на самом деле. почему это всегда должно быть таким загадочным?
Адам Ральф
1
если хотите, это своего рода документация, которая поможет вам понять, как реализовать шаблон MVVM в ваших приложениях WPF / Silverlight. есть также библиотека от codePlex, для которой я не уверен, для чего она предназначена. Хорошая документация о PRISM находится по ссылке ниже, стоит взглянуть на нее: Prism 4.1 - Руководство разработчика по Microsoft Prism - MSDN
user3353518

Ответы:

92

Prism является официальным руководством Microsoft Patterns and Practices Team по созданию «составных приложений» в WPF и Silverlight.

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

Это включает руководство по внедрению зависимостей (через Unity или MEF), макет (включая использование MVVM), обработку составных событий и т. Д.


Является ли Prism буквально (или главным образом) буклетом, представленным на сайте MSDN? Включает ли он какие-либо библиотеки, если да, то для чего именно?

Это книга, но также включает библиотеки для поддержки (на сайте GitHub ).

Является ли Prism платформой MVVM? Должен ли я использовать его как «официальную платформу Microsoft MVVM» по сравнению с другими или своими?

Да и нет. Он включает руководство по использованию MVVM, но гораздо больше, чем инфраструктура MVVM. На самом деле, это не «фреймворк MVVM», хотя он включает руководство MVVM.

Обеспечивает ли это внедрение зависимости? Так ли это относится к MEF?

Да. Первоначально он включал Unity, но последний выпуск включает использование MEF для DI.

Все, что я должен знать о том, что делает Prism, как разработчик WPF / Silverlight.

Стоит взглянуть на то, как они работают. У них очень продуманная концепция «региона», а также хорошая поддержка агрегации событий. Он также включает в себя передовые практики для разработки под WPF, Silverlight и Windows Phone одновременно.

Рид Копси
источник
1
Спасибо за ответ. Это дает мне хороший обзор, я думаю. Просто чтобы прояснить: есть ли вообще какой-либо код, связанный с MVVM, или даже библиотека DLL?
Нолдорин
4
@Noldorin: Я предполагаю, что вы спрашиваете о Prism ... Существует некоторая поддержка MVVM, но, честно говоря, MVVM, как шаблон, почти не требует поддержки библиотеки. Prism действительно имеет хороший объект уведомления и командную поддержку, что является единственным недостатком в BCL, который вам действительно нужен для MVVM. Он также имеет поддержку поиска служб, которая помогает, если вы хотите использовать DI / общие службы для связи VM <-> VM. Он не имеет некоторые «лишние» вещи , предоставленные некоторые MVVM «рамки», такие , как основы обмена сообщений и т.д.
Reed Copsey
1
Чтобы следовать указаниям Prism, обязательно ли были установлены библиотеки?
dios231
18

Это основа для создания приложений WPF и Silverlight.

http://compositewpf.codeplex.com/

Раньше его называли «Призма», прежде чем Microsoft переименовала его в «CompositeWPF».

ответы:

1) Prism - это инфраструктура MVVM, используемая в качестве основы для ваших приложений.

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

3) Prism использует внедрение зависимостей (Unity), но не «обеспечивает» его

4) Imo, Prism предоставляет множество функциональных возможностей, но сильно влияет на кривую обучения. Для небольших проектов, в которых вы являетесь единственным разработчиком, вам может не потребоваться предоставляемая им абстракция и инструменты.

rboarman
источник
3
Я несколько не согласен с вашим утверждением № 1 - Prism включает руководство MVVM, но МНОГО руководства (большинство образцов) вообще не являются MVVM. Это больше представлено как один вариант, который можно использовать при создании составных приложений.
Рид Копси
1
Я думаю, что я всегда использовал с шаблоном MVVM
rboarman