Qu'est-ce que Prism pour WPF?


137

Je suis souvent tombé sur quelque chose qui s'appelle Prism récemment. Microsoft, qui dirige le projet, le décrit comme

Directives pour les applications composites dans WPF et Silverlight.

Même après avoir lu les descriptions plus détaillées, je n'ai pratiquement aucune idée de ce dont il s'agit réellement, j'en ai peur.

J'espère ici que quelqu'un pourra me donner une explication claire et succincte de ce qu'est réellement Prism et pourquoi je devrais l'apprendre. Je suis développeur WPF depuis quelques années maintenant, j'ai utilisé MVVM à ma juste part et j'ai récemment rencontré des personnes utilisant Prism, mais je me sens personnellement un peu hors de la boucle ici.

En particulier, je m'interroge sur les points suivants:

  • Prism est-il littéralement juste (ou principalement) un livret, tel que présenté sur le site MSDN ? Inclut-il des bibliothèques, si oui pour quoi exactement?

  • Prism est-il un framework MVVM? Dois-je l'utiliser comme «cadre officiel de Microsoft MVVM» par rapport à d'autres ou au mien?

  • Fournit-il une injection de dépendance? Cela concerne-t-il du tout le MEF de cette manière?

  • Tout ce que je devrais savoir sur ce que fait Prism, en tant que développeur WPF / Silverlight.


5
C'est en fait une chose assez complexe aussi - Prism essaie de répondre à de nombreux besoins, il est donc difficile d'obtenir une seule «bonne» réponse si vous essayez de comprendre son objectif. Il fait vraiment plusieurs choses.
Reed Copsey

1
Cette question similaire posée par moi a également de bonnes réponses à cette question - stackoverflow.com/questions/6251821/…
akjoshi

9
encore un autre bourbier trouble de P&P. chaque fois qu'ils publient quelque chose comme ça, je me retrouve obligé d'aller sur SO ou wikipedia pour découvrir ce que c'est réellement. pourquoi doit-il toujours être si cryptique?
Adam Ralph

1
si vous le souhaitez, c'est une sorte de documentation qui vous guide sur la manière d'implémenter le modèle MVVM dans vos applications WPF / Silverlight. il existe également une bibliothèque de codePlex dont je ne sais pas à quoi cela sert exactement. une bonne documentation sur PRISM se trouve dans le lien ci-dessous, cela vaut la peine d'y jeter un coup d'œil: Prism 4.1 - Guide du développeur de Microsoft Prism - MSDN
user3353518

Réponses:


92

Prism est le guide officiel de l' équipe Microsoft Patterns and Practices pour créer des «applications composites» dans WPF et Silverlight.

Son objectif est de fournir des conseils sur les meilleures pratiques pour la création d'applications à grande échelle flexibles en termes de développement et de maintenabilité.

Cela inclut des conseils sur l'injection de dépendances (via Unity ou MEF), la mise en page (y compris l'utilisation de MVVM), la gestion des événements composites, etc.


Prism est-il littéralement juste (ou principalement) un livret, tel que présenté sur le site MSDN? Inclut-il des bibliothèques, si oui pour quoi exactement?

C'est un livre, mais comprend également les bibliothèques de support (sur le site GitHub ).

Prism est-il un framework MVVM? Dois-je l'utiliser comme «cadre officiel de Microsoft MVVM» par rapport à d'autres ou au mien?

Oui et non. Il inclut des conseils sur l'utilisation de MVVM, mais c'est bien plus qu'un framework MVVM. Ce n'est vraiment pas, en soi, un "framework MVVM" - bien qu'il inclue des conseils MVVM.

Fournit-il une injection de dépendance? Cela concerne-t-il du tout le MEF de cette manière?

Oui. Il incluait à l'origine Unity, mais la dernière version inclut l'utilisation de MEF pour DI.

Tout ce que je devrais savoir sur ce que fait Prism, en tant que développeur WPF / Silverlight.

Il vaut la peine de regarder comment ils font les choses. Ils ont un concept de «région» très élaboré, ainsi qu'une bonne prise en charge de l'agrégation d'événements. Il comprend également de bonnes pratiques pour développer simultanément avec WPF, Silverlight et Windows Phone.


1
Merci pour la réponse. Cela me donne un bon aperçu je pense. Pour être clair: existe-t-il en fait un code lié à MVVM ou même une DLL de bibliothèque?
Noldorin le

4
@Noldorin: Je suppose que vous posez des questions sur l'intérieur de Prism ... Il existe un certain support pour MVVM, mais franchement, MVVM, en tant que modèle, ne nécessite presque aucun support de bibliothèque. Prism a un bon objet de notification et un support de commande, ce qui est vraiment la seule chose qui manque dans le BCL dont vous avez vraiment besoin pour MVVM. Il prend également en charge le localisateur de services, ce qui vous aide si vous souhaitez utiliser des services DI / partagés pour la communication VM <-> VM. Il ne contient pas certains des éléments "supplémentaires" fournis par certains "frameworks" MVVM, tels qu'un cadre de messagerie, etc.
Reed Copsey

1
Afin de suivre les instructions de Prism, il est obligatoire que les bibliothèques aient été installées?
dios231

18

C'est un cadre pour créer des applications WPF et Silverlight.

http://compositewpf.codeplex.com/

Il s'appelait autrefois "Prism" avant que Microsoft ne le renomme "CompositeWPF".

Réponses:

1) Prism est un framework MVVM à utiliser comme base pour vos applications

2) Je le suggère en fonction de vos besoins spécifiques. Vous devriez publier une autre question avec des détails spécifiques afin que vous puissiez obtenir des réponses spécifiques.

3) Prism utilise l'injection de dépendances (Unity) mais ne la "fournit" pas

4) Imo, Prism fournit beaucoup de fonctionnalités mais est lourd sur la courbe d'apprentissage. Pour les petits projets dont vous êtes le seul développeur, vous n'aurez peut-être pas besoin de l'abstraction et des outils qu'elle fournit.


3
Je ne suis pas du tout d'accord avec votre déclaration n ° 1 - Prism inclut des conseils MVVM, mais BEAUCOUP des conseils (la plupart des échantillons) ne sont pas du tout MVVM. Il est plus présenté comme une option qui peut être utilisée lors de la création d'applications composites.
Reed Copsey

1
Je suppose que j'ai toujours utilisé avec le modèle MVVM
rboarman
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.