Zagadnienia projektowania aplikacji J2EE



Podobne dokumenty
Warstwa prezentacji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Wzorce projektowe Java EE

1 Wprowadzenie do J2EE

Szczególne problemy projektowania aplikacji internetowych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Zaawansowane aplikacje internetowe. Projektowanie. wykład prowadzi Mikołaj Morzy. Projektowanie

Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1

EJB 3.0 (Enterprise JavaBeans 3.0)

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Projektowanie Aplikacji Internetowych. Wzorce projektowe warstwy usług

Wybrane działy Informatyki Stosowanej

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Wykład 1 Inżynieria Oprogramowania

A Zasady współpracy. Ocena rozwiązań punktów punktów punktów punktów punktów

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Wzorce projektowe warstwy danych

Projektowanie obiektowe Wzorce projektowe. Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów)

Omówienie wzorców wykorzystywanych w Prism 5.0. Dominika Różycka

Obsługa transakcji rozproszonych Java. Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska

Wprowadzenie do J2EE. Maciej Zakrzewicz.

Web frameworks do budowy aplikacji zgodnych z J2EE. Jacek Panachida

Wybrane działy Informatyki Stosowanej

Modelowanie systemów w architekturze J2EE z wykorzystaniem notacji UML

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

Modelowanie i analiza. warstwy biznesowej aplikacji

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Projektowanie Aplikacji Internetowych Jarosław Kuchta. Wzorce projektowe warstwy biznesowej

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów dziennych studiów II stopnia)

Enterprise Java Beans wykład 7 i 8

Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

Analiza i projektowanie aplikacji Java

Projektowanie architektury systemu rozproszonego. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów niestacjonarnych studiów II stopnia)

Celem wykładu jest przedstawienie katalogu wzorców projektowych Java EE. W pierwszej części wykładu zaprezentowano pojęcie wzorca, kategoryzację

Wzorce prezentacji internetowych

Enterprise JavaBeans (EJB)

Bazy danych 2. Wykład 1

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Komunikacja i wymiana danych

Programowanie obiektowe

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Przesłanki powstania książki... xvi Dla kogo przeznaczona jest ta książka?... xvi Co znajdziemy wewnątrz książki?... xvii

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Projektowanie aplikacji JEE z użyciem wzorców projektowych i notacji UML

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Architektura aplikacji

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

Historia modeli programowania

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Wprowadzenie do programowania aplikacji mobilnych

Projektowanie Zorientowane na Dziedzinę. ang. Domain Driven Design

Enterprise JavaBeans

Wzorce logiki dziedziny

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Forum Client - Spring in Swing

Projektowanie Aplikacji Rozproszonych Jarosław Kuchta. Wzorce projektowe warstwy danych

Spring Framework - wprowadzenie i zagadnienia zaawansowane

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

Aplikacje Internetowe, Servlety, JSP i JDBC

TECHNOLOGIA JSP W TWORZENIU APLIKACJI ROZPROSZONYCH NA PRZYKŁADZIE SYSTEMU ZARZĄDZANIA NIERUCHOMOŚCIAMI W GMINIE

Wybrane działy Informatyki Stosowanej

Część I Rozpoczęcie pracy z usługami Reporting Services

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

Plan. Raport. Tworzenie raportu z kreatora (1/3)

Wypożyczalnia VIDEO. Technologie obiektowe

Java Server Faces narzędzie do implementacji w wy prezentacji

EXSO-CORE - specyfikacja

Generated by Foxit PDF Creator Foxit Software For evaluation only. System Szablonów

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC

Podstawowe informacje o technologii Java EE 7

Web frameworks do budowy aplikacji zgodnych z J2EE

Java Developers Day. Implementacja ESB przy użyciu Mule. ESB Mule Obsługa zamówień DEMO

Aplikacje WWW Wprowadzenie

Zdalna edycja i przeglądanie dokumentacji medycznej.

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Zaawansowane programowanie obiektowe - wykład 5

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów dziennych studiów II stopnia)

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Aplikacje internetowe i rozproszone - laboratorium

Projektowanie aplikacji J2EE w architekturze Model-View-Controller

Programowanie Komponentowe WebAPI

J2EE. Wzorce projektowe

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

Wzorce projektowe. dr inż. Marcin Pietroo

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

OpenLaszlo. OpenLaszlo

Automatyzacja procesów biznesowych Andrzej Sobecki. ESB Enterprise service bus

Enterprise JavaBeans. 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss.

Programowanie sieciowe Network programming PRZEWODNIK PO PRZEDMIOCIE

"Biznesowe" wzorce projektowe

Transkrypt:

211 Zagadnienia projektowania aplikacji J2EE Maciej Zakrzewicz Maciej.Zakrzewicz@cs.put.poznan.pl http://www.cs.put.poznan.pl/mzakrzewicz/

Plan rozdziału 212 Wstęp Techniki projektowe: Wprowadzenie modułu sterującego Wprowadzenie tokenu synchronizującego Podział logiki na niezależne fragmenty Ukrycie szczegółów warstwy prezentacji przed warstwą biznesową Usunięcie konwersji danych z komponentu prezentacyjnego Ukrywanie zasobów przed klientem Ukrycie encyjnych EJB za sesyjnymi EJB Wprowadzenie obiektów Business Delegate Łączenie sesyjnych EJB Przeniesienie logiki biznesowej do warstwy sesyjnych EJB Wydzielenie kodu dostępu do danych

Wstęp 213 Dobre techniki projektowania aplikacji J2EE służą: uproszczeniu pielęgnacji aplikacji poprawieniu modułowości aplikacji rozdzieleniu ról członków zespołu projektowo-programistycznego wielokrotnemu wykorzystywaniu komponentów poprawieniu bezpieczeństwa dostępu redukcji intensywności komunikacji sieciowej

Wprowadzenie modułu sterującego 214 sterowanie front controller sterowanie formatowanie application controller sterowanie formatowanie Należy wyodrębnić logikę sterującą w jednej lub kilku klasach sterujących, które służą jako początkowe miejsce obsługi żądań klienta. Dzięki temu upraszcza się pielęgnację aplikacji oraz poprawia jej modułowość.

215 Wprowadzenie tokenu synchronizującego powielone żądanie front controller powielone żądanie front controller token token brak odpowiedzi Należy stosować współdzielony token do monitorowania oraz sterowania przepływem żądań i dostępem klientów do poszczególnych zasobów. Dzięki temu unikamy dublowania działań w wyniku naciśnięcia przycisku Reload lub Wstecz w przeglądarce.

Podział logiki na niezależne fragmenty 216 logika biznesowa logika biznesowa formatowanie formatowanie logika biznesowa logika biznesowa Należy przenieść logikę biznesową obecną w aplikacji do jednej lub kilku klas pomocniczych, które są wykorzystywane przez aplikację lub przez moduł sterujący. Umożliwia to lepsze rozdzielenie ról poszczególnych programistów oraz polepszenie modułowości systemu.

217 Ukrycie szczegółów warstwy prezentacji przed warstwą biznesową HttpServletRequest komponent prezentacyjny HttpServletRequest komponent biznesowy HttpServletRequest komponent prezentacyjny Obiekt parametrów komponent biznesowy Z warstwy biznesowej należy usunąć wszystkie odwołania do struktur danych związanych z obsługą żądań i protokołami prezentacji. Dane pomiędzy warstwami należy przekazywać stosując struktury ogólne. Umożliwia to wykorzystywanie komponentów biznesowych przez innych klientów.

218 Usunięcie konwersji danych z komponentu prezentacyjnego formatowanie konwersja formatowanie konwersja Należy przenieść cały kod konwersji danych (np. transformacja rekordów do tabelki HTML) z aplikacji do jednej lub kilku klas pomocniczych. Dzięki temu te same mechanizmy konwersji danych mogą być wykorzystane w wielu aplikacjach.

Ukrywanie zasobów przed klientem 219 front controller Należy uniemożliwić bezpośredni dostęp klienta do wybranych zasobów, stosując odpowiednią konfigurację serwera aplikacji. Dzięki temu system autoryzacji użytkowników może być szczelny. front controller

Ukrycie encyjnych EJB za sesyjnymi EJB 220 klient logika biznesowa logika transakcyjna warstwa prezentacji lub klienta encyjny EJB encyjny EJB encyjny EJB warstwa biznesowa Należy korzystać z pośredniczącego sesyjnego EJB w celu dostępu do encyjnych EJB. Powoduje to uproszczenie kodu klienta oraz redukcję komunikacji sieciowej w przypadku, gdy wykorzystywane są zdalne komponenty EJB. Możliwe jest również zastosowanie transakcji zarządzanych przez kontener. klient warstwa prezentacji lub klienta Session Facade logika biznesowa logika transakcyjna encyjny EJB encyjny EJB encyjny EJB warstwa biznesowa

221 Wprowadzenie obiektów Business Delegate klient warstwa prezentacji lub klienta sesyjny EJB sesyjny EJB sesyjny EJB warstwa biznesowa Należy zastosować obiekty Business Delegate w celu rozdzielenia warstw i ukrycia szczegółów implementacyjnych komponentów EJB. Dzięki temu, aplikacja klienta nie jest wrażliwa na modyfikacje interfejsów komponentów EJB, nie angażuje się w JNDI, a ponadto nie musi obsługiwać wyjątków specyficznych dla EJB. klient Business Delegate Business Delegate Business Delegate sesyjny EJB sesyjny EJB sesyjny EJB warstwa prezentacji lub klienta warstwa biznesowa

Łączenie sesyjnych EJB 222 klient klient klient sesyjny EJB sesyjny EJB sesyjny EJB encyjny EJB encyjny EJB encyjny EJB Należy odwzorować usługi biznesowe na sesyjne EJB. Eliminuje się lub łączy sesyjne EJB działające jako pośrednicy encyjnych EJB w celu uzyskania komponentów reprezentujących konkretne usługi biznesowe. klient sesyjny EJB encyjny EJB klient sesyjny EJB encyjny EJB klient encyjny EJB

223 Przeniesienie logiki biznesowej do warstwy sesyjnych EJB klient encyjny EJB encyjny EJB logika biznesowa encyjny EJB Należy przenieść przepływ sterowania związany z relacjami pomiędzy encyjnymi EJB do sesyjnego EJB. W ten sposób unika się niepotrzebnego narzutu w modelu. klient Session Facade encyjny EJB logika biznesowa encyjny EJB encyjny EJB

Wydzielenie kodu dostępu do danych 224 klasa sterująca kod dostępu do danych Należy wyodrębnić kod dostępu do danych, umieszczając go w nowej klasie, a samą klasę umieszczając logicznie lub fizycznie bliżej źródła danych. Pozwala to zmniejszyć zależności pomiędzy komponentami systemu. klasa sterująca kod dostępu do danych

J2EE: wzorce projektowe 225

Wzorce projektowe 226 Wzorce projektowe (Design Patterns) to zidentyfikowane i opisane typowe schematy postępowania podczas rozwiązywania problemów powtarzalnych Najpopularniejsze wzorce projektowe J2EE są opracowywane przez Sun Services Java Center: Intercepting Filter, Front Controller, Context Object, Application Controller, View Helper, Composite View, Business Delegate, Service Locator, Session Facade, Application Service, Transfer Object, Value List Handler, Data Access Object, Service Activator, Web Service Broker, itd. Katalog wzorców J2EE ( Core J2EE Patterns, D.Alur, J.Crupi, D.Malks) zawiera modele klas i przykładowe kody źródłowe wykorzystywane podczas realizacji typowych komponentów aplikacji J2EE

Intercepting Filter 227 Przechwytuje i modyfikuje żądania HTTP przed i po właściwym przetwarzaniu w celu wykonania następujących działań: Sprawdzenie, czy z klientem związana jest poprawna sesja Sprawdzenie, czy obsługiwany jest dany rodzaj przeglądarki Sprawdzenie, jakiego kodowania używa klient do wysyłania danych oraz transkodowanie tych danych Deszyfrowanie lub dekompresja strumienia danych Filtry można dodawać i usuwać w dowolnym momencie, stosując różne ich kombinacje; po zakończeniu przetwarzania, ostatni filtr z grupy przekazuje sterowanie do właściwego obiektu docelowego (Front Controller) Typowa implementacja: klasa ServletFilter

Front Controller 228 Scentralizowany punkt dostępowy dla obsługi żądań w warstwie prezentacji Uniknięcie powielania logiki sterującej Wspólna logika dla wielu żądań Oddzielenie logiki przetwarzania od aplikacji Centralizacja i kontrola wszystkich punktów dostępu do systemu Typowa implementacja: serwlet Java, Struts ActionServlet

Context Object 229 Hermetyzuje stan aplikacji w sposób niezależny od protokołu komunikacji z klientem, aby mógł być bez przeszkód wymieniany pomiędzy różnymi elementami aplikacji Parametry wywołania aplikacji Dostęp do informacji systemowych Typowa implementacja: klasa Java, Struts ActionForm, Struts DynaActionForm

Application Controller 230 Centralizuje sterowanie, pobieranie i wywoływanie aplikacji oraz wykonywanie poleceń Najczęściej stosowany w warstwie prezentacji wraz z modułem Front Controller Oddzielenie sterowania aplikacją od przetwarzania protokołu komunikacji z klientem Typowe implementacje: klasa Java, Struts Action Intercepting Filter Front Controller Application Controller Context Object

View Helper 231 Logika przetwarzania prezentacji. Interfejs pomiędzy aplikacją a komponentami modelu Np. generowanie kodów tabelki HTML na podstawie rekordów bazy danych Typowe implementacje: XSLT,, klasa JavaBeans

Composite View 232 Konstruuje dokument WWW poprzez złożenie elementów składowych, np. na podstawie szablonu Układ dokumentu wynikowego może być konfigurowany niezależnie od zawartości Możliwość realizacji wspólnych nagłówków, stopek, paneli nawigacyjnych w wielu miejscach dowolnego z generowanych dokumentów Typowe implementacje:, biblioteki znaczników, klasa JavaBeans View Helper Composite View View Helper

Business Delegate 233 Stanowi punkt dostępu do zdalnych usług warstwy biznesowej Zmniejsza zależności między oddzielonymi warstwami Ukrywa szczegóły implementacji usług biznesowych, a także mechanizmy ich wyszukiwania i wywoływania Klienci nie komunikują się bezpośrednio z komponentami EJB lecz jedynie poprzez Business Delegate Typowe implementacje: klasa Java, biblioteka znaczników

Service Locator 234 Ukrywa szczegóły implementacji mechanizmów wyszukiwania komponentów biznesowych (JNDI) Uniezależnia kod klienta od konkretnego producenta oprogramowania JNDI i serwera aplikacji Może buforować odpowiedzi na często wykonywane operacje wyszukiwania Typowe implementacje: klasa Java

Session Facade 235 Udostępnia klientom usługi biznesowe, ukrywając złożoność ich implementacji Redukuje liczbę zależności i sieciowych interakcji pomiędzy klientem a encyjnymi komponentami EJB Klienci komunikują się z Session Facade zamiast bezpośrednio korzystać z encyjnych komponentów EJB Typowe implementacje: sesyjny EJB Encyjny EJB Business Delegate Session Facade Encyjny EJB Service Locator Encyjny EJB

Application Service 236 Centralizuje logikę biznesową wielu komponentów biznesowych Łączy funkcje aplikacji w celu zapewnienia jednolitej warstwy usług Stanowi back-end dla Session Facade, redukując ilość kodu wymaganego w Session Facade Typowe implementacje: sesyjny EJB

Business Object, Composite Entity 237 Umożliwia dostęp do danych biznesowych Skupienie logiki biznesowej i stanu biznesowego w jednym miejscu Hermetyzacja zarządzania operacjami i danymi biznesowymi oraz trwałością obiektów Typowe implementacje: encyjny EJB

Transfer Object 238 Grupuje jednostki danych, które są przenoszone pomiędzy warstwami systemu Umożliwia przesył wszystkich potrzebnych danych złożonych w ramach jednego przesłania sieciowego Typowe implementacje: klasa Java

Value List Handler 239 Odpowiada za dostęp do elementów dużej kolekcji znajdującej się po stronie innego komponentu (iterator) Nie wymaga transmisji kompletnej kolekcji Typowe implementacje: klasa JavaBeans

Data Access Object 240 Odpowiada za komunikację z bazą danych, dzięki czemu pozostałe komponenty nie muszą zawierać kodu JDBC specyficznego dla serwera bazy danych Ukrywa całą logikę dostępu do danych związaną z tworzeniem, pobieraniem, usuwaniem i aktualizacją danych z trwałego zbiornika danych Typowe implementacje: klasa Java

Service Activator 241 Odbiera żądania asynchronicznego wywoływania jednej lub więcej usług biznesowych Zaimplementowany jako obiekt nasłuchu JMS Typowe implementacje: komunikatowy EJB

Web Service Broker 242 Udostępnia jedną lub kilka usług aplikacji zewnętrznym klientom jak usługi WebServices Posługuje się otwartymi standardami dostępu: HTTP, XML Typowe implementacje: SOAP Servlet