MVC4WPF
MVC4WPF dla oprogramowania komputerowego to otwarty, rozszerzalny, zautomatyzowany wzorzec kodu opracowany w Information Control Corporation dla rozwoju Windows Presentation Foundation (WPF) w oparciu o wzorce Model-View-Controller (MVC) i Presentation-Abstraction-Control (PAC). Został udostępniony ogółowi społeczeństwa jako projekt open source 23 lipca 2009 r. [ stały martwy link ] . To zależy od Microsoft .NET Framework 3.5 i Visual Studio 2008 dla funkcjonalności. Kod źródłowy MVC4WPF dla wersji beta 0.9 jest dostępny do pobrania na stronie CodePlex .
Opis wzoru
MVC4WPF nie jest nowym wzorcem architektonicznym , ale raczej hybrydą wywodzącą się z dwóch starszych wzorców wspieranych przez system automatyzacji i założenia programistyczne. Autorzy nazywają to zautomatyzowanym wzorcem kodu, a nie strukturą, ponieważ ramy projektowe tworzą logiczne środowisko, które musi być używane w precyzyjny sposób; mając na uwadze, że MVC4WPF promuje bardziej elastyczne środowisko, które ma być dostosowywane do rozwiązania bez ograniczeń. Jednak MVC4WPF obsługuje biblioteki kodu, fragmenty kodu i używa języka pomocniczego związanego z WPF ( XAML ), nadając mu wiele cech wzorca projektowego .
Twórcy Stephen Giffin i John Hannah stwierdzają w swojej trzyczęściowej audycji na Channel 9 (forum dyskusyjne), że MVC4WPF został zaprojektowany tak, aby wykorzystać elastyczność wzorca MVC w rozwiązywaniu problemów, podczas gdy wzorzec PAC zapewnia hierarchię poprzez interakcje kontrolera rodzic-dziecko. Wszystkimi interakcjami między warstwami zarządzają kontrakty, które dyktują warunki, na jakich warstwy nadrzędna i podrzędna wchodzą w interakcje. Dzięki tym kontraktom warstwy modelu, widoku i kontrolera mają dużą elastyczność w sposobie interakcji, obsługi danych lub konstrukcji. Wszystko, czego potrzeba, to spełnienie warunków umowy. Na przykład warstwa modelu (danych) może składać się z lokalnej bazy danych, kanałów sieciowych lub dowolnych innych informacji, pod warunkiem, że dany model spełnia wszystkie wymagania swojej umowy. To podejście skoncentrowane na kontrakcie zwiększa potencjalną elastyczność aplikacji, a także zabrania warunków testowania kodu (tj. umowy określają warunki testowania). Promuje również specjalizację programistyczną, ponieważ programiści muszą jedynie rozumieć swoją specjalizację i sposób spełnienia wymagań kontraktowych.
Hierarchiczny przepływ wzorca wynika z relacji rodzic-dziecko. Kontrolery zawsze utrzymują relacje rodzicielskie z widokami i modelami, podczas gdy kontrolery mogą być rodzicami lub dziećmi innych kontrolerów. W związku z tym warstwy kontrolera sterują dużą częścią wzorca i otrzymują informacje od dowolnego kontrolera, który jest jednym z jego dzieci. Ze względu na ten projekt i zdolność WPF do wewnętrznego propagowania informacji przekazywanie danych w górę iw dół relacji nadrzędny-podrzędny staje się bardzo wydajne i wymaga niewielkiej ilości kodu pomocniczego.
MVC4WPF jest przeznaczony przede wszystkim do tworzenia aplikacji korporacyjnych, w których zespoły specjalistów mogą wspólnie tworzyć określone obszary lub w aplikacjach wymagających dobrze zdefiniowanego hierarchicznego przepływu. Nie jest przeznaczony do bardzo małych projektów.
Wzór składa się z następujących elementów:
Model: zgodnie ze wzorcem MVC, Model reprezentuje warstwę danych aplikacji. W MVC4WPF zawsze jest to dziecko w relacji rodzic-dziecko z kontrolerem.
Widok: zgodnie ze wzorcem MVC widok reprezentuje interfejs użytkownika i bezpośredni kod. W MVC4WPF zawsze jest to dziecko w relacji rodzic-dziecko z kontrolerem. Widok może być jednym z trzech typów: strona, okno lub kontrola użytkownika.
Kontroler: zgodnie ze wzorcem MVC, kontroler reprezentuje logikę biznesową i funkcje sterujące wzorca. Kontroler kieruje wszystkimi operacjami. Kontrolery mają relacje rodzic-dziecko z innymi kontrolerami. Zawsze są rodzicami w relacjach z Modelkami i Poglądami.
Kontrakty: kontrakty to środki, za pomocą których elementy nadrzędne i podrzędne będą wchodzić w interakcje, niezależnie od tego, czy kontroler-widok, model kontrolera czy kontroler-kontroler. Rozwój w MVC4WPF jest w dużej mierze napędzany sposobem przypisywania kontraktów, więc kontrakty są zwykle omawiane i definiowane jako pierwsze. Relacje zdefiniowane w tych umowach pozwalają zespołom programistycznym i UX pracować niezależnie od siebie i nadal skutecznie integrować różne części aplikacji.
Zbiory właściwości: Zbiory właściwości to elementy kontraktów, które definiują właściwości wspólne dla funkcji nadrzędnej i podrzędnej. W razie potrzeby kontrolerzy mają powiązane z nimi torby własności.