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):
- Rozmawiaj bezpośrednio z bazą danych (poziom 2)
- Użyj zaplecza, który został napisany dla danej aplikacji (3 warstwy)
- Użyj zestawu usług internetowych, które zostały napisane do użytku przez wiele aplikacji i nie można ich zmienić w aplikacji. (Architektura zorientowana na usługi)
- Aktualizacje wykonywane przez operacje CRUD
- Aktualizacje wykonywane za pomocą wzorca poleceń (wysyłanie poleceń do serwera zaplecza)
- Wiele zastosowań wiązania danych / brak zastosowań wiązania danych
- Większość danych ma charakter „tabelaryczny” (np. Faktury), które działają dobrze w standardowych kontrolkach siatki / wymagają niestandardowych kontroli dla większości danych interfejsu użytkownika.
- Jeden programista / zespoły składające się z 10 lub 20 programistów (tylko w interfejsie użytkownika)
- Wiele testów jednostkowych przy użyciu makiet itp. / Brak testów jednostkowych
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:
„Kiedy kliknę przycisk„ Zapisz ”, plik powinien zostać zapisany, a ostrzeżenie o niezapisanym pliku powinno zniknąć.”
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.
- Czy chcesz mieć możliwość przetestowania jak największej ilości kodu?
- Czy próbujesz pozwolić na ponowne wykorzystanie jak największej ilości kodu?
- Czy starasz się, aby baza kodu była łatwa do zrozumienia?
- 101 innych powodów, które mogą być ważne dla danego projektu.
Gdy już jasno określisz swoje cele , łatwiej będzie wybrać taką czy inną implementację.