Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

-Praktyczne wykorzystanie wzorców projektowych MVC oraz IoC. -Podejście AOP (Aspect-Oriented Programing) Tomasz Dalemba Maciej Święcicki.

Podobne prezentacje


Prezentacja na temat: "-Praktyczne wykorzystanie wzorców projektowych MVC oraz IoC. -Podejście AOP (Aspect-Oriented Programing) Tomasz Dalemba Maciej Święcicki."— Zapis prezentacji:

1 -Praktyczne wykorzystanie wzorców projektowych MVC oraz IoC. -Podejście AOP (Aspect-Oriented Programing) Tomasz Dalemba Maciej Święcicki

2 Plan wykładu: Wzorzec MVC - wprowadzenie - przykład Wzorzec IoC - wprowadzenie - Spring Framework - przykłady AOP (Aspect–Oriented Programming) - wprowadzenie - przykład Podsumowanie

3 Wzorzec projektowy MVC - Wprowadzanie Model danych - opis struktur danych i powiązań Controller Logika działania - powiązania między zachodzącymi zdarzeniami Interfejs, czyli to co widzi użytkownik View Model

4 Schemat przykładowej aplikacji w architekturze MVC

5 Wzorzec projektowy MVC –Wady i zalety Łatwa zmiana interfejsu użytkownika w istniejącej aplikacji Zmiany w interfejsach funkcyjnych modelu pociągają za sobą zmiany w View i Controller Większa złożoność projektu Wady Zalety Łatwość testowania logiki biznesowej Mnogość implementacji

6 Wzorzec projektowy MVC – na przykładzie aplikacji JSF

7 Aplikacja będzie składać się z dwóch stron. Formularza logowania i strony umożliwiającej dodawanie bądź usuwanie książek z bazy danych. Strona posłuży do pobrania hasła i loginu

8 Wzorzec projektowy MVC – na przykładzie aplikacji JSF Strona dla Administratora - dodawanie książek - usuwanie książek

9 Wzorzec projektowy MVC – na przykładzie aplikacji JSF Strona dla Użytkownika - dodawanie książek

10 Wzorzec projektowy MVC – na przykładzie aplikacji JSF Kod strony widoku używający znaczników JSF. - Wiązanie zmiennych LOGIN i PASS oraz akcji CHECKING

11 Wzorzec projektowy MVC – na przykładzie aplikacji JSF Metoda CHECKING -Sprawdza czy użytkownik wprowadził poprawne dane. Jeśli tak zwracana jest ROLA

12 Wzorzec projektowy MVC – na przykładzie aplikacji JSF Kontroler - w zależności od zwróconej wcześniej wartości przez funkcję CHECKING przeniesie użytkownika na odpowiednią stronę.

13 Wzorzec projektowy MVC – na przykładzie aplikacji JSF Kontroler - Kod kontrolera zawierający przekierowania pokazane na poprzednim slajdzie. W przypadku framework’u JSF jest to plik XML

14 Wzorzec projektowy MVC – na przykładzie aplikacji JSF Kontroler - Wiązanie zmiennych #{bean.login}, #{bean.pass}, #{bean.chcecking} Zadaniem kontrolera jest powiązanie klasy Bean z pakietu jsf ze wskazanym kodem. login i pass są polami we wspomnianej klasie, natomiast checking jest wspomniana wcześniej metodą.

15 Wzorzec projektowy MVC – na przykładzie aplikacji JSF

16 Wzorzec projektowy Inversion of Controll - Wprowadzanie Przeniesienie na zewnątrz komponentu np. obiektu odpowiedzialności za kontrolę wybranych czynności Zasada Hollywood - „to nie Państwo dzwonią do nas lecz my dzwonimy do Państwa!” Termin często utożsamiany z wstrzykiwaniem zależności (ang. Dependency Injection, DI)

17 Wzorzec projektowy Inversion of Controll – Metody implementacji Typ 1. Obiekty implementują specjalny interfejs do wyszukiwania obiektów zależnych Typ 3. Zależności są ustawiane w obiektach za pomocą konstruktora Typ 2. Zależności są ustawiane w obiektach za pomocą metody setter

18 Wzorzec projektowy Inversion of Controll – Inne cechy Kontenery IoC często nazywane są „lekkimi” (ang. lightwight containers) z uwagi na ich rozmiar jak i narzut w czasie działania. Umożliwia uruchomienie kontener wewnątrz aplikacji lub innego kontenera Lekki” „kontener„Black Box” Zastosowanie kontenerów jako tzn. „black box” tj. odseparowanie warstwy biznesowej od warstwy prezentacji w obrębie jednej maszyny wirtualnej

19 Wzorzec projektowy Inversion of Controll – Inne cechy

20 Wzorzec projektowy Inversion of Controll – Spring Framework 1/7 Uproszczenie aplikacji J2EE – eliminacja "martwego kodu" sklejającego poszczególne komponenty, – dostarczenie wydajnych mechanizmów IoC i AOP. Luźne wiązanie aplikacji ze szkieletem – kod aplikacji praktycznie uniezależniony od Spring API, – promowanie dobrych praktyk programowania obiektowego, – przekazanie logiki do POJO.

21 Wzorzec projektowy Inversion of Controll – Spring Framework 2/7 „Święta wojna” z encyjnymi komponentami EJB - Odpowiedź na trudności w implementacji komponentów encyjnych EJB Ułatwienie procesu testowania aplikacji – tworzenie aplikacji w oparciu o testy (TDD, test-driven development), – umożliwienie testowania obiektów biznesowych poza kontenerem.

22 Wzorzec projektowy Inversion of Controll – Spring Framework 3/7 Schemat architektury SPRING

23 Wzorzec projektowy Inversion of Controll – Spring Framework 4/7 Wsparcie dla istniejących technologii (Hibernate,SOAP,JMX,JMS, języki skryptowe,JSP/Servlet) Wsparcie dla AOPMożliwość pisania testów (Junit,TestNG)Wsparcie dla “annotations”Wsparcie dla modułów i hierarchia kontenerówInne jęzki programowania i IoC

24 Wzorzec projektowy Inversion of Controll – Spring Framework 5/7 Wielowarstwowy szkielet aplikacji Java/J2EE zawierający: – lekki kontener umożliwiający scentralizowane zarządzanie i łączenie komponentów JavaBean i POJO, – warstwę zarządzania transakcjami, – warstwę obsługi JDBC wraz z hierarchią wyjątków, – moduły umożliwiające integrację z Toplink, Hibernate, JDO i iBATIS SQL Maps za pomocą standardowych DAO, – pełnowartościowe środowisko obsługujące paradygmat programowania aspektowego AOP, – elastyczne środowisko do tworzenia aplikacji internetowych zgodnie z modelem MVC umożliwiające integrację ze Struts, WebWork, Tapestry; Spring MVC wspiera także wiele technologii implementowania warstwy widoku, np. JSP, Velocity, Tiles.

25 Wzorzec projektowy Inversion of Controll – Spring Framework 6/7 Podstawowa część architektury, głównym składnikiem jest BeanFactory zapewniająca mechanizm IoC (Inversion of Control) KontenerSpring context Plik konfiguracyjny dostarczający opis środowiska: JNDI, EJB,wielojęzyczność, walidacja, itp. Spring AOP Moduł implementujący mechanizm AOP (Aspect- Oriented Programming) i zapewniający transakcyjność przetwarzania

26 Wzorzec projektowy Inversion of Controll – Spring Framework 7/7 Hierarchia wyjątków ujednolicająca kody błędów różnych baz danych Spring DAOSpring ORM Szablony ułatwiające korzystanie z narzędzi ORM Spring Web Integracja z Jakarta Struts i dostarczanie kontekstu aplikacjom webowym Spring Web Implementacja MVC obsługująca szeroką gamę technologii

27 Wzorzec projektowy Inversion of Controll – Przykład 1/2

28 Wzorzec projektowy Inversion of Controll – Przykład 2/2

29 Wzorzec projektowy IoC – przykłady implementacyjne

30 Wzorzec projektowy IoC – przykłady implementacyjne - Spring Wykorzystanie Spring - Kod na kolejnym slajdzie prezentuje wykorzystanie wzorca IoC poprzez Spring IoC - Spring nie ogranicza się jednak tylko do IoC. Służy również często jako integrator wielu różnych bibliotek. Mamy tutaj pokazaną konfigurację źródła danych. - Źródło to jest następnie przekazywane do „integratora” napisanego dla biblioteki iBatis zajmującej się mapowaniem wyników zwróconych z bazy danych na klasy Javy. Na koniec integrator zostaje przekazany do fasady (ang. Facade), która będzie udostępniać odpowiednie metody biznesowe operujące na bazie danych

31 Wzorzec projektowy IoC – przykłady implementacyjne - Spring

32 Wzorzec projektowy IoC – przykłady implementacyjne – Spring + JSF Integracja Spring IoC z kontrolerem JSF - #{facade}

33 Wzorzec projektowy IoC – przykłady implementacyjne - JEE Wykorzystanie IoC w JEE - Adnotacje (Java 5.0) zamiast plików XML - Wymagany serwer aplikacja wspierający JEE 5.0 z kontenerem wspierającym servlety w wersji nie niższej niż 2.5

34 Wzorzec projektowy IoC – przykłady implementacyjne - JEE Wykorzystanie IoC w JEE - Jest to zwykły bean Javy. Różni się od innych tym, że ma specjalne informacje dla serwera aplikacyjnego. Chodzi o Dodatkowo jak widzimy musi implementować interfejs przedstawiony na poprzednim slajdzie.

35 Wzorzec projektowy IoC – przykłady implementacyjne - JEE Wykorzystanie IoC w JEE - Jest to zwykły bean Javy. Różni się od innych tym, że ma specjalne informacje dla serwera aplikacyjnego. Chodzi o Dodatkowo jak widzimy musi implementować interfejs przedstawiony na poprzednim slajdzie. - Serwer zarejestruje sobie pod nazwą „Pierwszy” tą implementację, którą będzie udostępniał później innym obiektom Javy.

36 Wzorzec projektowy IoC – przykłady implementacyjne - JEE Wykorzystanie IoC w JEE - Tutaj mamy kod jaki należy dodać do np.: dowolnego „javovego” servletu lub beana JSF, aby móc korzystać ze zdefiniowanej przez nas fasady, która udostępnia metody operujące na bazie danych. - Serwer widząc szuka odpowiedniej implementacji interfejsu, bierze dodatkowo pod uwagę nazwę jaką wprowadziliśmy. W przypadku EJB 3.0 nie jest ona konieczna. Używa się jej tylko wówczas gdy mamy różne bean’y implementujące ten sam interfejs.

37 Podejście AOP (Aspect-Oriented Programing) Metoda programowania mająca na celu modularyzację kodu i likwidację nakładających się problemów przekrojowych Aspekt Nazwany problem przekrojowy Rada Dodatkowe zachowanie/czynność które zostaje zainicjowane w punkcie złączenia Punkt złączenia Miejsce w strukturze wykonywania się aplikacji w którym powinna zostać zastosowana rada

38 Podejście AOP (Aspect-Oriented Programing) – rodzaje rad Before advice przed punktem styku, brak blokowania przepływu kontroli Throws advice W momencie zgłoszenia wyjątku After advice Po poprawnym wykonaniu Przed i po punkcie styku, możliwość przerwania przepływu kontroli przez zwrócenie własnej wartości lub wyjątku Around advice

39 Podejście AOP (Aspect-Oriented Programing) – schemat Programowanie aspektowe

40 Podejście AOP (Aspect-Oriented Programing) – Przykład EJB 3.0 1/2 import java.util.logging.Logger; import javax.interceptor.AroundInvoke; import javax.interceptor.InvocationContext; public class TracingInterceptor { Logger logger = public Object trace(InvocationContext ctx) throws Exception { logger.info("Wykonuje metode biznesowa " + ctx.getTarget().getClass().getSimpleName() + "." + ctx.getMethod().getName()); return ctx.proceed(); } }

41 Podejście AOP (Aspect-Oriented Programing) – Przykład EJB 3.0 2/2 import java.util.logging.Logger; import javax.ejb.Stateless; import javax.interceptor.Interceptors; public class MojPierwszyWsEJBBean implements MojPierwszyWsEJBLocal { Logger logger = Logger.getLogger(MojPierwszyWsEJBBean.class.toString()); public void metodaBiznesowa() { logger.info("Metoda biznesowa metodaBiznesowa wywolana poprawnie"); } } 1.Wykonuje metode biznesow MojPierwszyWsEJBBean.metodaBiznesowa 2.Metoda biznesowa metodaBiznesowa wywolana poprawnie

42 Dziękujemy za uwagę


Pobierz ppt "-Praktyczne wykorzystanie wzorców projektowych MVC oraz IoC. -Podejście AOP (Aspect-Oriented Programing) Tomasz Dalemba Maciej Święcicki."

Podobne prezentacje


Reklamy Google