Tworzę aplikację z modelem MVVM, ale doszedłem do punktu, w którym muszę wybrać, którego szkieletu użyć.
Wśród możliwych opcji są:
- Zestaw narzędzi MVVM
- Fundacja MVVM
- Struktura aplikacji WPF (WAF)
- Lekki MVVM
- Caliburn
- Cinch
- Pryzmat
- ReactiveUI
Z twojego doświadczenia, co jest lepsze?
wpf
mvvm
frameworks
Rangel
źródło
źródło
Odpowiedzi:
To naprawdę zależy od tego, co próbujesz osiągnąć i od tego, ile infrastruktury już potrzebujesz, a także od łatwości, z jaką możesz znaleźć próbki, które ci pomogą. Zamierzam zadeklarować zainteresowanie tutaj, ponieważ byłem aktywnie zaangażowany w co najmniej jedną platformę MVVM i miałem wkład w inne za pośrednictwem grupy WPF Disciples, więc jestem nieco stronniczy. Mówiąc to, oto:
Microsofts MVVM Toolkit - to wciąż bardzo dużo w fazie alfa. Kiedy został pierwotnie wydany, zajęło mu to trochę dzikości ze względu na to, czego nie zrobił. Mówiąc to, MS chce ulepszyć ten framework, więc należy go obejrzeć - po prostu nie jest jeszcze gotowy.
Fundacja MVVM - wersja frameworka Josh Smitha. Josh jest jednym z ojców MVVM i był wielkim obrońcą i nauczycielem tego wzoru. W rezultacie wiele z tego, co można znaleźć w innych ramach, ma na sobie odciski palców Josha. Ramy te mają zapewnić podstawy MVVM, a nie rozwiązać niektóre bardziej ezoteryczne problemy. Początkowo było to przeznaczone tylko dla WPF, ale ludzie tacy jak Laurent Bugnion i ja dodaliśmy funkcjonalność / projekty, co oznacza, że będzie to również framework kompatybilny z Silverlight.
WAF - bez doświadczenia, więc nie mogę tego komentować Obawiam się.
MVVM Light - podejście Laurenta Bugnion, właśnie zaktualizowane do wersji 2. Jest to bardzo dobry framework, ale znowu nie ma on obejmować każdego aspektu aplikacji MVVM. Biorąc pod uwagę pochodzenie Laurenta, ma on bardzo silne wsparcie Silverlight i Blendability.
Aktualizacja Laurent właśnie poinformowała mnie, że wersje .NET 3.5 i .NET 4.0 są kompatybilne z funkcjami. Wau to go Laurent.
Cinch - doskonałe środowisko MVVM tylko dla WPF Sacha Barbera. Obejmuje to więcej niż ramy, o których mówiłem powyżej. Jest to doskonały framework i wykorzystuje koncepcje zawarte w doskonałym projekcie Billa Kempfa Onyx . Onyx ma uzupełniać frameworki MVVM i dodaje funkcjonalność, która zwykle była trudna dla ludzi w MVVM / WPF. Ponownie, pierwotnie przeznaczony wyłącznie do WPF, Onyx poczynił postępy w zakresie kompatybilności z SL - praca, z której jestem szczególnie dumny, że jestem w to zaangażowana.
Pryzmat - Znowu nigdy go nie użyłem, ale słyszałem o nim wiele dobrych rzeczy.
Ocean - Karl Shifflett, kierownik programu w zespole Cider, niedawno wydał w pełni funkcjonalną platformę WPF MVVM. Ponownie, jest to doskonała platforma i ma wiele do polecania.
Podsumowując, pobierz różne frameworki, spójrz na nie i sprawdź, który z nich najbardziej intuicyjnie pasuje do twojego sposobu myślenia i twoich wymagań. Jeśli uważasz, że możesz chcieć obsługiwać Silverlight z tej samej bazy kodu, wówczas frameworki tylko WPF powinny zostać zdyskontowane.
źródło
Uważam, że ten artykuł jest bardzo przydatny http://www.japf.fr/2009/10/a-quick-tour-of-existing-mvvm-frameworks/ Tak, że mam go tutaj dla przyszłych użytkowników
Aktualizuję sekcję Cinch i dodam obsługę funkcji Silverlight do jej funkcji
Przepraszam za długą historię
Wspólne cechy:
Cinch
Lekki zestaw narzędzi MVVM
Pomocnicy MVVM
Fundacja MVVM
Caliburn
Onyks
Wapń
nRoute
Nito MVVM
Ocean
Podstawowa struktura MVVM
Dobre światło
źródło
Próbuję opisać Frameworki, których brakuje w świetnej odpowiedzi Pete'a:
MVVM Toolkit (Microsoft) to bardzo lekka biblioteka z szablonami projektów Visual Studio, która powinna obsługiwać początkujących z tym wzorcem. Jeśli Microsoft otrzyma dobre opinie na temat swojego zestawu narzędzi, może to zaimplementować jako nowy szablon projektu Visual Studio (być może 2010).
Pryzmat (Microsoft p & p) to framework, który zapewnia więcej niż obsługę wzorca MVVM. Głównym celem tego projektu jest pomoc w budowie modułowych aplikacji WPF i / lub Silverlight. Gdy potrzebujesz tylko wdrożyć wzorzec MVVM lub jesteś początkującym w .NET / WPF, nie polecam tego projektu. Zobacz także: Link .
WPF Application Framework (WAF) to lekki framework, który pomaga tworzyć aplikacje WPF za pomocą MVVM. To jest tylko dla WPF, więc nie obsługuje Silverlight. Po wprowadzeniu kontrolerów idzie to nieco inaczej niż większość innych platform MVVM. Są odpowiedzialni za przepływ pracy aplikacji i pośredniczą między różnymi modelami ViewModels.
źródło
Meh Mvvm tak naprawdę nie wymaga całego frameworka do obsługi IMO. Jeśli rozumiesz tę koncepcję, łatwo jest zacząć od czystej klasy podstawowej maszyny wirtualnej, która implementuje INotify, i po prostu idź od tego miejsca.
źródło
Zobacz także:
Caliburn i Onyx !
źródło
Miksuj własne!
Użyłem EventAggregator z PRISM, z ViewModelBase z fundacji MVVM i tak dalej. Poprawiłem także RelayCommand (w niektórych miejscach wzywano DelegateCommand), aby akceptować także inne dane i tak dalej.
Nie poleciłbym tylko jednego frameworku per se.
źródło
mój zakład będzie dotyczył Caliburn i MVVMlight, wydaje się, że niewiele z tych ram mvvm obsługuje silverlight. Mogę przewidzieć, że do wyboru będzie więcej frameworków MVVM niż frameworków IoC, ponieważ trudniej jest ustawić granicę funkcji w frameworku mvvm. Myślę, że najlepszym sposobem, aby dowiedzieć się, który jest bardziej odpowiedni dla twojego projektu, będzie lista / porównanie ich funkcji.
Zobacz także Mix10. Dużo się uczę z rozmowy: budowanie frameworka mvvm.
źródło
Również framework Cocktail i DevForce firmy Ideablade
źródło
Używam Pryzmatu i podoba mi się. Jedną z wielkich rzeczy dla mnie było to, że będą inni ludzie, którzy mogliby mi pomóc w razie potrzeby i dobre przykłady. Gdy już zaczniesz korzystać z podstaw, będziesz mieć całą gamę rozszerzeń, których potrzebujesz do swojej aplikacji i jest to o wiele łatwiejsze, gdy pracujesz z tymi samymi ramami, co inne.
źródło
Podsumowując, mam 90% mojej aplikacji i wszystko, czego użyłem MVVM Toolkit, to funkcja fabryczna, która buduje dla mnie polecenie, biorąc pod uwagę funkcję delegowania do uruchomienia w Wykonaj. Myślę, że mógłbym przejść do innego frameworka lub bez niego w ciągu kilku godzin.
źródło
Kolejnym do rozważenia jest MEFedMVVM . Użyłem go w kilku projektach i jest lekki, nieinwazyjny i obsługuje Silverlight i WPF. Jest także w stanie obsługiwać dane projektowe w Blend dla tych, którzy korzystają z tego produktu.
źródło
Jeśli szukasz rozszerzenia (możliwości pisania dodatków) na platformie aplikacji WPF / MVVM, możesz zainteresować się zastrzeżeniem SoapBox Core : Napisałem to . Jest open source, więc nawet jeśli go nie używasz, mogą być dla Ciebie dobre pomysły. Używa MEF zarówno dla rozszerzalności, jak i IoC.
źródło
Istnieje również nRoute
Naprawdę fajna platforma aplikacji dla WPF / Silverlight, która obsługuje MVVM
źródło