Kiedyś rozpocząłem projekt MVVM / WPF, który ostatecznie został zbudowany i wdrożony, i do tego czasu studiowałem wiele Caliburn.Micro MVVM Framework. Faktem jest, że ostatecznie nie użyłem do tego Caliburn.Micro i sam wdrożyłem niektóre koncepcje MVVM (konkretnie tylko klasy ViewModelBase
i RoutedCommand
).
Teraz zostałem przydzielony do nieco większego projektu według tych samych zasad: „Aplikacja kliencka dla pojedynczego użytkownika, bogatego klienta offline”, że tak powiem, i zdecydowałem się użyć Caliburn.Micro. I tu zaczyna się mój „problem”.
Przeczytałem w tym słynnym poście na blogu , którego tytuł mówi: „Jeśli używasz MVVM, potrzebujesz ram”, który:
„Próba zrobienia czegoś takiego jak MVVM bez frameworka to ogromna praca. Mnóstwo zduplikowanego kodu, wynalezienie koła i przeszkolenie ludzi do myślenia w inny sposób .
Przynajmniej dzięki frameworkowi unikniesz duplikatu kodu i miejmy nadzieję, że nie musisz wymyślać koła na nowo - pozwalając ci skupić się na przekwalifikowaniu ludzi. Części do przekwalifikowania jest generalnie nieuniknione, ale platforma zapewnia kod i strukturę hydrauliczną, co ułatwia proces. „
Zgodziłbym się przy pierwszym czytaniu, ale moje rzeczywiste doświadczenie z Caliburn.Micro (CM) w moim rzeczywistego aplikacja jest od cluelessness i dezorientacja. Oznacza to, że ramy wcale nie ułatwiły tego procesu, wręcz przeciwnie. Czytanie ciągle powtarzających się przykładów dostarczonych przez Roba Eisenberga w raczej (zbyt) nieformalnej dokumentacji i próba wnioskowania o wzorcach użytkowania na podstawie skomplikowanych dostarczonych próbek oraz ich całkowicie pośrednich relacji między klasami i interfejsami, w których wydaje się, że rzeczy mają działać w oparciu o skutki uboczne wydają się po ludzku niemożliwe, chyba że jesteś doświadczonym geniuszem (przepraszam za rant, ale chyba wiesz, co mam na myśli).
Nie wspominając już o tym, że każdy trywialny scenariusz wydaje się obejmować kontenery IoC, z którym nigdy nie pracowałem i który wydaje się rozwiązać problem, którego mógłbym nawet nie mieć . Nie mam ochoty poświęcać więcej godzin na naukę tych rzeczy, zamiast myśleć o moich problemach i domenach aplikacji. Chciałem tylko banana, ale CM dał mi goryla (IoC) z koszem bananów.
Teraz, gdy zastanawiam się nad powrotem do mojego samodziałającego frameworka MVVM - złożonego tylko z kilku klas specyficznych dla MVVM, które tak naprawdę chcę wdrożyć - chciałbym przynajmniej dać CM szansę, na wypadek, gdyby coś tu straciłem, lub po prostu robienie rzeczy „w niewłaściwy sposób” z czystego braku doświadczenia i ignorancji. Tak więc pytanie brzmi:
Panuje powszechna zgoda co do tego, że „frameworki sprawiają, że rzeczy stają się łatwiejsze i bardziej naturalne”, ale jeśli doświadczam czegoś wręcz przeciwnego, czy to oznacza, że nie powinienem używać frameworka lub że staram się go nauczyć w niewłaściwy sposób? Czy istnieje wskazówka, że w ogóle nie powinienem używać frameworka? Czy jest jakiś „właściwy” sposób, aby dowiedzieć się, jak używać CM do prostego programowania MVVM?
RelayCommand
implementacji (ponieważ „wiąże się” bezpośrednio z metodami zgodnie z konwencją, zamiast wiązania z właściwościami ICommand).
RelayCommand
innej biblioteki, jeśli ta używana przez Caliburn Micro nie działa dla ciebie.
EventAggregator
do przesyłania wiadomości iNotificationObject
ViewModelBase, a MVVM LightRelayCommand
do poleceń. Ważne jest, aby określić, jakie problemy rozwiąże dla Ciebie środowisko, i używaj tylko tych rozwiązań. Nie czuj się zmuszony do korzystania z całej biblioteki frameworka.