MVVM światło + jedność czy pryzmat?

Jestem teraz trochę Nieaktualny w WPF i byłbym zainteresowany wysłuchaniem opinii ludzi na temat najnowszej wersji Prism (której użyłem kilka wersji temu) vs podejście MVVM Light + Unity (czego nigdy nie robiłem - przyzwoite przykłady adresów URL byłyby dobre).

Mój projekt będzie duży, składający się z wielu modułów napisanych przez kilku programistów. Istnieje również fundusze na wprowadzenie pakietu kontrolnego 3rd party, aby skonfigurować ładne miejsce do pracy przy użyciu jednego z fantazyjnych Docking / Workspace layout managers tam (i Wiem, że niektóre grać lepiej z regionów Prism niż inne).

Gdybyś teraz zaczynał projekt od zera, co byś zrobił i dlaczego? Przydałyby się szczegóły dotyczące konkretnych zalecanych wzorców architektury(np. automatyczne wykrywanie bibliotek DLL modułów? / Align = "left" / ). Zasadniczo, wszelkie myśli i Rady byłyby dobre. Chciałbym rozpocząć dobrą dyskusję. Być może istnieje inny kierunek całkowicie, że można sugerujesz wejście? Jestem bardzo w fazie badań i chciałbym jak najwięcej wkładu.

Umieściłem to tutaj, ponieważ myślałem, że będzie mniej stronniczy punkt widzenia niż Fora Prism/MVVM Light, ale jeśli jest bardziej odpowiednie miejsce na to pytanie, proszę wskazać mi w tym kierunku.

Author: David, 2011-01-20

1 answers

Jeśli potrzebujesz modułowości, chciałbyś spojrzeć na pryzmat. Prism ma Niektóre elementy, które mogą pomóc w MVVM( na przykład DelegateCommand i CompositeCommand), ale myślę, że jest bardziej kompletny z innym frameworkiem MVVM.

Kilka dni temu pojawiło się pytanie, jak modelować pryzmat. Sprawdź to, aby uzyskać szczegółowe wyjaśnienie, jak wziąć pod uwagę funkcjonalność Prism. Porady dotyczące modelowania na wysokim poziomie dla Prism MVVM

Jedność jest realizacją inwersja kontenera sterującego i jest zdecydowanie dobra, ale Prism ma możliwość korzystania z innych kontenerów. Ma wbudowane wsparcie dla MEF (który z kolei jest wbudowany w. NET 4.0), ale nie jest to jedyny wybór. Spójrz na niektóre próbki zawarte w Prism i zdecyduj, jakie podejście lubisz bardziej. Unity nie jest kompletna sama w sobie dla UI compositing moim zdaniem. MEF może być bliższym wyborem, jeśli chcesz spróbować złożyć interfejs z MVVM Framework + IoC Framework podejdźcie.

MVVM Light jest w rzeczywistości komplementarnym frameworkiem do pryzmatu. Inne frameworki MVVM do rozważenia:

  • MVVM Foundation (very lightweight... dobre dla małych projektów)
  • Caliburn (bardzo solidny framework)
  • Caliburn Micro (ma nazwisko i autora od Caliburn, ale jest podobny do MVVM Light z kilkoma fajnymi konwencjami)]}
  • ReactiveUI (Dawniej "ReactiveXAML". To trochę rozluźnia mózg, ale jeśli nauczysz się reagować Rozszerzenia dla. NET (Rx), ten framework jest po prostu niesamowity... moim zdaniem magiczne.)

Gdybym miał rozpocząć nowy projekt: wybrałbym Prism i ReactiveUI.

Prism, ponieważ musisz mieć modułowość z dużymi projektami i lubię możliwość usuwania i dodawania dużych jednostek funkcjonalności do aplikacji po prostu usuwając lub dodając biblioteki DLL (i nie musisz implementować funkcji sniffingu DLL, jak w przypadku podejścia IoC + MVVM). Łatwiej testować, łatwiej do debugowania, łatwiej rozwijać oddzielnie. Miło wszędzie.

ReactiveUI ponieważ w dzisiejszych czasach z programowaniem UI większość czasu poświęcasz na zarządzanie swoim czasem w wątku UI. Blokowanie To Nie-Nie... użytkownicy nie chcą widzieć zamrożenia interfejsu użytkownika; chcą widzieć obracający się animowany symbol oczekiwania GIFA, aby wiedzieli, że mogą pracować nad czymś innym podczas ładowania danych. Ponadto, tak wiele aplikacji wartości zapewniają te dni jest pobieranie danych z różnych systemów i umieszczanie ich razem w interfejsie użytkownika... potrzebny będzie nie tylko dobry system komponowania (Prism), ale także dobry Framework MVVM, który traktuje operacje asynchroniczne jak chleb powszedni... ReactiveUI jest to.

 55
Author: Anderson Imes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:25:02