Gdzie mogę znaleźć dobry przykład pełnego zaimplementowania wzorca MVC w Windows Forms?
Znalazłem wiele samouczków i przykładów kodu w różnych witrynach (na przykład The Code Project i .NetHeaven), ale wiele z nich jest bardziej reprezentatywnych dla wzorca obserwatora niż MVC. Ponieważ aplikacja, którą chcę stworzyć, jest przeznaczona do projektu szkolnego, niechętnie używam frameworków, takich jak PureMVC czy MVC # .
Odpowiedzi:
Uważam, że aplikacje tak bardzo się od siebie różnią, a nasze rozumienie tego, jak powinny być pisane, jest nadal bardzo ograniczone. Wcześniejsze aplikacje Windows Forms, nad którymi pracowałem, bardzo się od siebie różniły. Niektóre z różnic konstrukcyjnych, które zauważyłem, to (w tym większość kombinacji):
Dlatego nie sądzę, aby można było stworzyć jedną implementację MVC (lub MVP), która zawsze będzie dobrze pasować.
Najlepsze posty, jakie widziałem, naprawdę wyjaśniające MVC i dlaczego system MVC jest zbudowany tak, jak jest, to seria „Zbuduj własną CAB” autorstwa Jeremy'ego D. Millera . Po przepracowaniu tego powinieneś być w stanie znacznie lepiej zrozumieć swoje opcje. Należy również wziąć pod uwagę wskazówki dotyczące inteligentnego klienta firmy Microsoft (CAB / Microsoft Composite Application Block) . Jest to trochę skomplikowane, ale może dobrze działać w aplikacjach, które są dobrze dopasowane.
Wybór implementacji MVC / MVP dla projektu Winforms daje przegląd, który warto przeczytać. Wiele osób lubi PureMVC . Nigdy go nie używałem, ale przyjrzę się temu następnym razem, gdy będę potrzebował frameworka MVC.
„ Presenter First ” to podejście do tworzenia oprogramowania, które łączy idee wzorca projektowego Model View Presenter (MVP) z programowaniem opartym na testach . Pozwala zacząć od napisania testów w języku klienta. Na przykład:
Nie mam doświadczenia w używaniu „Presenter First”, ale spróbuję, kiedy będę miał okazję, ponieważ wygląda to bardzo obiecująco.
Inne pytania dotyczące przepełnienia stosu, na które możesz chcieć przyjrzeć się, są tutaj i tutaj .
Jeśli myślisz o użyciu WPF w dowolnym momencie, spójrz na wzorzec Model-View ViewModel (MVVM) . Oto bardzo dobry film, który powinieneś obejrzeć: Jason Dolinger on Model-View-ViewModel .
Wzorzec projektowy MVVM (Model View View Model) dla Winforms daje inną opcję, która może ułatwić konwersję do WPF, jeśli zajdzie taka potrzeba. Magical.Trevor to kolejny przykład MVVM dla Windows Forms, który zawiera również automatyczne wiązanie na podstawie nazw właściwości.
Zadaj sobie również pytanie, dlaczego używasz MVC.
Gdy już jasno określisz swoje cele , łatwiej będzie wybrać taką czy inną implementację.
źródło
AKTUALIZACJA: Oprócz mojej poprzedniej odpowiedzi poniżej, proponuję przeczytać o podejściu „Najpierw prezenter” (zwłaszcza artykuły PDF)
Poleciłbym MVP (właściwie wzorzec PassiveView) zamiast MVC. Tak naprawdę nie potrzebujesz do tego żadnych specjalnych frameworków, chodzi tylko o to, jak organizujesz swój kod.
Jedno podejście (które zwykle stosuję) polega na podzieleniu każdego formularza okna na trzy jednostki:
Przykładowy kod (prosty pseudokod, tylko dla ilustracji):
źródło
Czy spojrzałeś na PureMVC ? Odkryłem, że nikt nie może się zgodzić co do tego, jak naprawdę wygląda MVC, gdy zaczną budować określoną implementację.
Aktualizacja: możesz zbudować własny, zaczynając od czegoś prostszego, takiego jak MobileMVC . Kod Compact Framework powinien kompilować / działać poprawnie w systemie Windows. Ponieważ jest to zadanie szkolne, sugerowałbym, abyś poświęcił trochę czasu na naukę, jak naprawdę działa MVC.
źródło
Możesz rzucić okiem na wykonanie różnicowe .
Tutaj jest w SourceForge
IMO, to ogromna poprawa w stosunku do MVC, choć nadal jest dość niezwykła.
źródło
Dobry przykład toczenia własnej implementacji MVC przy użyciu Windows Forms można znaleźć tutaj . Zawiera kod źródłowy.
Czytając, studiując i pisząc kod tego zadania, odkryjesz, że istnieje wiele nieporozumień dotyczących sposobu implementacji MVC. Jest to prosty przypadek, który odzwierciedla oddzielenie obaw, a także dobry przykład „hydrauliki” wymaganej do połączenia.
Kiedy jesteś poza szkołą, prawdopodobnie będziesz chciał wrócić do schematu, który zalecał inne plakaty.
źródło
Blok aplikacji Microsoft Composite Interface Application rozpoczął swoje życie jako implementacja MVC (wśród innych zaimplementowanych wzorców). Wydana wersja ewoluowała jednak w implementację MVP, co można uznać za rodzaj innej interpretacji koncepcji MVC.
Jeśli chcesz sprawdzić kod bardzo kompletnej (i nieco złożonej) implementacji MVP, możesz znaleźć MS-CAB jako jeden ze składników Microsoft Smart Client Software Factory. Pochodzi z kodem źródłowym. Znajdziesz go tutaj . Powodzenia!
źródło