Co to jest Prism dla WPF?

137

Ostatnio często natknąłem się na coś, co nazywa się Prism . Microsoft, który prowadzi projekt, opisuje go jako

Wskazówki dotyczące aplikacji złożonych w WPF i Silverlight.

Obawiam się, że nawet po przeczytaniu bardziej szczegółowych opisów nie mam pojęcia, o co właściwie chodzi.

Mam nadzieję, że ktoś może mi w jasny i zwięzły sposób wyjaśnić, czym właściwie jest Prism i dlaczego powinienem się tego nauczyć. Jestem programistą WPF od kilku lat, korzystałem z MVVM, co jest moim udziałem i ostatnio spotkałem ludzi używających Prism, ale osobiście czuję się tutaj trochę poza pętlą.

W szczególności zastanawiam się nad następującymi punktami:

  • Czy Prism to dosłownie (lub głównie) broszura podana na stronie MSDN ? Czy zawiera jakieś biblioteki, jeśli tak, to po co?

  • Czy Prism jest frameworkiem MVVM? Czy powinienem używać go jako „oficjalnej platformy Microsoft MVVM” zamiast innych, czy jako własnej?

  • Czy zapewnia zastrzyk zależności? Czy to w ogóle odnosi się do MEF w ten sposób?

  • Cokolwiek jeszcze powinienem wiedzieć o tym, co robi Prism, jako programista WPF / Silverlight.

Noldorin
źródło
5
W rzeczywistości jest to również dość złożona sprawa - Prism stara się zaspokoić wiele potrzeb, więc trudno jest uzyskać jedną „właściwą” odpowiedź, jeśli próbujesz zrozumieć jego cel. Naprawdę robi wiele rzeczy.
Reed Copsey
1
To podobne pytanie zadane przeze mnie również zawiera dobre odpowiedzi na to pytanie - stackoverflow.com/questions/6251821/…
akjoshi
9
kolejny mroczny grzęzawisko od P&P. za każdym razem, gdy publikują coś takiego, muszę udać się do SO lub wikipedii, aby dowiedzieć się, co tak naprawdę jest. dlaczego zawsze musi być tak tajemniczy?
Adam Ralph
1
jeśli chcesz, jest to rodzaj dokumentacji, która prowadzi Cię do sposobu implementacji wzorca MVVM w aplikacjach WPF / Silverlight. jest też biblioteka z codePlex, do której nie wiem dokładnie, do czego służy. dobra dokumentacja na temat PRISM znajduje się w poniższym linku, warto ją obejrzeć: Prism 4.1 - Przewodnik programisty po Microsoft Prism - MSDN
user3353518

Odpowiedzi:

92

Prism to oficjalne wskazówki zespołu Microsoft Patterns and Practices Team dotyczące tworzenia „aplikacji kompozytowych” w WPF i Silverlight.

Jego celem jest dostarczenie wskazówek dotyczących najlepszych praktyk tworzenia aplikacji na dużą skalę, które są elastyczne pod względem rozwoju i łatwości konserwacji.

Obejmuje to wskazówki dotyczące iniekcji zależności (za pośrednictwem Unity lub MEF), układu (w tym przy użyciu MVVM), obsługi zdarzeń złożonych itp.


Czy Prism to dosłownie (lub głównie) broszura podana na stronie MSDN? Czy zawiera jakieś biblioteki, jeśli tak, to po co?

Jest to książka, ale zawiera również biblioteki do wsparcia (na stronie GitHub ).

Czy Prism jest frameworkiem MVVM? Czy powinienem używać go jako „oficjalnej platformy Microsoft MVVM” zamiast innych, czy jako własnej?

Tak i nie. Zawiera wskazówki dotyczące korzystania z MVVM, ale jest czymś więcej niż tylko strukturą MVVM. To naprawdę nie jest sam w sobie „frameworkiem MVVM” - chociaż zawiera wskazówki dotyczące MVVM.

Czy zapewnia zastrzyk zależności? Czy to w ogóle odnosi się do MEF w ten sposób?

Tak. Pierwotnie zawierał Unity, ale najnowsza wersja obejmuje użycie MEF for DI.

Cokolwiek jeszcze powinienem wiedzieć o tym, co robi Prism, jako programista WPF / Silverlight.

Warto przyjrzeć się, jak to robią. Mają bardzo rozbudowaną koncepcję „regionu”, a także dobre wsparcie dla agregacji wydarzeń. Obejmuje również dobre praktyki dotyczące jednoczesnego tworzenia programów dla WPF, Silverlight i Windows Phone.

Reed Copsey
źródło
1
Dziękuję za odpowiedź. Myślę, że to daje mi dobry przegląd. Dla jasności: czy rzeczywiście istnieje kod związany z MVVM lub biblioteką DLL?
Noldorin
4
@Noldorin: Zakładam, że pytasz o wnętrze Prism ... Jest pewne wsparcie dla MVVM, ale szczerze mówiąc, MVVM jako wzorzec prawie nie wymaga obsługi biblioteki. Prism ma dobry obiekt powiadomień i wsparcie dowodzenia, co jest naprawdę jedyną brakującą rzeczą w BCL, której naprawdę potrzebujesz do MVVM. Obsługuje również lokalizator usług, który pomaga, jeśli chcesz używać DI / usług udostępnionych do komunikacji z maszynami wirtualnymi <-> VM. Nie zawiera niektórych „dodatkowych” rzeczy dostarczanych przez niektóre „frameworki” MVVM, takie jak framework do przesyłania wiadomości itp.
Reed Copsey
1
Czy aby postępować zgodnie z wytycznymi Prism, czy biblioteki zostały zainstalowane?
dios231
18

Jest to platforma do tworzenia aplikacji WPF i Silverlight.

http://compositewpf.codeplex.com/

Nazywano go „Prism”, zanim Microsoft zmienił nazwę na „CompositeWPF”.

Odpowiedzi:

1) Prism to framework MVVM do wykorzystania jako podstawa dla twoich aplikacji

2) Proponuję to w zależności od konkretnych wymagań. Powinieneś zadać kolejne pytanie z konkretnymi szczegółami, aby uzyskać konkretne odpowiedzi.

3) Prism używa wstrzykiwania zależności (Unity), ale go nie „zapewnia”

4) Imo, Prism zapewnia wiele funkcji, ale jest ciężki w nauce. W przypadku małych projektów, w których jesteś jedynym programistą, możesz nie potrzebować abstrakcji i narzędzi, które zapewnia.

rboarman
źródło
3
Nieco nie zgadzam się z twoim stwierdzeniem nr 1 - Prism zawiera wskazówki dotyczące MVVM, ale WIELE wskazówek (większość próbek) w ogóle nie jest MVVM. Jest to bardziej przedstawiane jako jedna z opcji, której można użyć podczas tworzenia aplikacji złożonych.
Reed Copsey
1
Myślę, że zawsze używałem wzoru MVVM
rboarman