Praktyczne wykorzystanie wzorców projektowych MVC oraz IoC.

Slides:



Advertisements
Podobne prezentacje
Java Enterprise Ed. vs Spring Framework
Advertisements

Programowanie obiektowe
Programowanie w Środowiskach Zintegrowanych
Wzorce.
Decyzje projektowe w .NET Framework
WEB SERVICE Stefan Rutkowski.
CORBA Łukasz Wnęk.
ADAM Active Directory w trybie aplikacyjnym
Uwierzytelnianie i autoryzacja dostępu do portali
Artur Jonak empolis Polska Sp. z o.o.
Projektowanie Aplikacji Komputerowych
Architektura systemu Gra strategiczna „Strusia Jama”
Inteligentny System Aktualności
Model – View - Controler
Eclipse jako IDE III a.
Wykład 2. Wprowadzenie do architektur systemów rozproszonych
Platforma J2EE korporacyjny standard wytwarzania złożonych systemów informatycznych Autor: Jarosław Lis Warszawa, 2006r.
Enteprise Java Beans Emil Wcisło.
Wzorce projektowe w J2EE
Projektowanie i programowanie obiektowe II - Wykład IV
Język Java Wielowątkowość.
Projektowanie warstwy serwera Programowanie aspektowe.
Spring podstawy.
Technologia JSP.
Architektura systemów wykorzystujących bazy danych (systemów bazodanowych) Wykład S. Kozielski.
System katalogowania. Opis i architektura.
SZPIF – Harmonogram, Opis narzędzi, Schemat bazy danych
System katalogowania i zarządzania sprzętem na uczelni
Wstęp do kontenerów IoC
»Spring Framework i nie tylko
Rozwój aplikacji przy wykorzystaniu ASP.NET
Architektura Systemu MunSOL
Message-Driven Bean.
Instytut Tele- i Radiotechniczny WARSZAWA
Źródła: podręcznikopracował: A. Jędryczkowski.
Technologie tworzenia aplikacji internetowych Wykład 3
Promotor: dr.inż. Aleksandra Werner
Jakub Wołczko W obiektowym świecie… Jakub Wołczko
WPROWADZENIE W ŚWIAT OBIEKTÓW
Tworzenie aplikacji webowych w oparciu o framework ObjectLedge
Rational Unified Process Implementacja Aleksandra Reiman, gr. I-52.
Programowanie obiektowe 2013/2014
Zawansowane techniki programistyczne
Systemy zarządzania treścią Wykład 5
Programowanie w języku C++
PAT: Persistent Applications Toolkit Aplikacje bazodanowe bez bazy danych Tomasz Nazar.
Spring Framework, Spring Boot
Źródło problemu Plan prezentacji Technologia Java EE
Walidacja danych alina suchomska.
Technologie programowania systemów internetowych
SERWIS PORTALU ONTOLOGICZNEGO DEDYKOWANY DLA SYSTEMU OCS.
Hibernate Podstawy.
Odwzorowania relacyjno-obiektowe Hibernate Podstawy.
Wzorce Projektowe w JAVA
Łukasz Bieszczad Mateusz Gałązka Karol Włodarek
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
Temat: Porównanie technologii php,c# oraz javascript na przykładzie webaplikacji typu społecznościowy agregator treści Autor: Wojciech Ślawski.
Sławomir Staśkiewicz JBossAS i EJB 3.1 Sławomir Staśkiewicz
Języki i technologie wytwarzania stron WWW Autor: Michał Walkowski Referat.
T ESTY JEDNOSTKOWE W C# Alicja Majka, A GENDA Wprowadzenie do środowiska Czym są testy jednostkowe i po co je stosować? XUnit, NUnit Pokrycie.
Architektura Rafał Hryniów. Architektura Wizja projektu systemu, którą dzielą twórcy Struktura komponentów systemu, ich powiązań oraz zasad i reguł określających.
Politechnika Warszawska Wydział Elektryczny Kierunek: Informatyka stosowana Praca dyplomowa inżynierska Aplikacja do kontroli wydajności produkcji w.
 Podstawowy składnik.NET Framework  Technologia tworzenia w pełni dynamicznych stron internetowych działających po stronie serwera  Zorientowanie na.
Programowanie Obiektowe – Wykład 6
Wzorzec MVC na przykładzie CakePHP
Projekt modułu BANK INTERNETOWY Moduł funkcji banku
Windows Workflow Foundation
Aplikacje i usługi internetowe
JavaBeans by Paweł Wąsala
Zapis prezentacji:

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

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

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

Schemat przykładowej aplikacji w architekturze MVC

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

Wzorzec projektowy MVC – na przykładzie aplikacji JSF

Wzorzec projektowy MVC – na przykładzie aplikacji JSF 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

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

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

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

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

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ę.

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

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ą.

Wzorzec projektowy MVC – na przykładzie aplikacji JSF

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

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

Wzorzec projektowy Inversion of Controll – Inne cechy Lekki” „kontener 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 „Black Box” Zastosowanie kontenerów jako tzn. „black box” tj. odseparowanie warstwy biznesowej od warstwy prezentacji w obrębie jednej maszyny wirtualnej

Wzorzec projektowy Inversion of Controll – Inne cechy

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.

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.

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

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 AOP Możliwość pisania testów (Junit,TestNG) Wsparcie dla “annotations” Wsparcie dla modułów i hierarchia kontenerów Inne jęzki programowania i IoC

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.

Wzorzec projektowy Inversion of Controll – Spring Framework 6/7 Kontener Podstawowa część architektury, głównym składnikiem jest BeanFactory zapewniająca mechanizm IoC (Inversion of Control) Spring 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

Wzorzec projektowy Inversion of Controll – Spring Framework 7/7 Spring DAO Hierarchia wyjątków ujednolicająca kody błędów różnych baz danych Spring 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

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

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

Wzorzec projektowy IoC – przykłady implementacyjne

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

Wzorzec projektowy IoC – przykłady implementacyjne - Spring

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

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

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 adnotacje @Stateless. Dodatkowo jak widzimy musi implementować interfejs przedstawiony na poprzednim slajdzie.

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 adnotacje @Stateless. 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.

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 adnotacje @EJB 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.

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 Miejsce w strukturze wykonywania się aplikacji w którym powinna zostać zastosowana rada Punkt złączenia

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

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

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 = Logger.getLogger(TracingInterceptor.class.toString()); @AroundInvoke public Object trace(InvocationContext ctx) throws Exception { logger.info("Wykonuje metode biznesowa " + ctx.getTarget().getClass().getSimpleName() + "." + ctx.getMethod().getName()); return ctx.proceed(); } }

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; import pl.jaceklaskowski.ejbws.interceptors.TracingInterceptor; @Stateless @Interceptors(TracingInterceptor.class) public class MojPierwszyWsEJBBean implements MojPierwszyWsEJBLocal { Logger logger = Logger.getLogger(MojPierwszyWsEJBBean.class.toString()); public void metodaBiznesowa() { logger.info("Metoda biznesowa metodaBiznesowa wywolana poprawnie"); } } Wykonuje metode biznesow MojPierwszyWsEJBBean.metodaBiznesowa Metoda biznesowa metodaBiznesowa wywolana poprawnie

Dziękujemy za uwagę