Wzorzec MVC Model View Controller Wojciech Gębczyk Emerson PM - PWS Wzorzec MVC Model View Controller “Powinniśmy mieć zasady gotowe do zastosowania w każdej okoliczności.” | Epiktet z Hierapolis
Agenda Scenariusz problemu MVC – rozwiązanie MVC – zyski i straty Warianty wzorca Demo Zastosowanie Zakończenie
Scenariusz problemu – Edycja danych Zapytanie do bazy - All/Filter Przepisanie danych do kontrolek (DBNull, null, etc) Obsługa słowników Obsługa akcji Edit/Add/Remove/BrowseDictionary Sprawdzenie poprawności INSERT/UPDATE/DELETE do bazy
Rozwiazanie – wzorzec MVC src:wikipedia.org Wydzielenie 3 składowych: Model – przetwarzane dane View – prezentacja danych Controller – sterowanie przepływem danych – logika aplikacji
MVC – zyski i straty Rozbicie monolitycznego kodu Czystszy kod Większa testowalność komponentów Więcej pisania kodu
Warianty wzorca i implementacji MVC Document-View | MFC Document={Model} | View={View+Controller} DataModel-View-ViewModel | WPF DataModel = {Model} | View = {View} ViewModel = {Model4UI+Controller} M PresentationModel Model tied to specific View V PassiveView Testability DeclarativeView WPF style with dedicated Binding solution NonInteractiveViews Report/Text/Image generation C PageController ASP.NET - out-of-box | + base Page class FrontController Custom IHttpHandler | Server.Transfer(...) SupervisingController DataBinding | View is declarative
DEMO – ewolucja prostej aplikacji
Zastosowanie Stosujemy nieświadomie - WinForms, ASP.NET Dedykowane frameworki: ASP.NET MVC, Web Client SF Spring MVC, Struts, Cocoon RoR Gdy potrzeba otwartej architektury Polepszenie testowalności Brak interakcji – może nie potrzeba?
Rozne uwagi CAB – Composite App Block WPF Composite Client SF – Software Factories Arek Waśniewski – niedługo Model-View-Presenter
Czas na pytania, dyskusję, ...