Návrhové vzory pro J2EE

Podobné dokumenty
Návrhové vzory pro J2EE. Miroslav Beneš

Tvorba informačních systémů

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

(Enterprise) JavaBeans. Lekce 7

Architektury informačních systémů

Softwarové komponenty a Internet

Architektury informačních systémů

Databázové a informační systémy

Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování.

Tvorba informačních systémů

Tvorba informačních systémů

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

KIV/PIA 2013 Jan Tichava

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Tvorba informačních systémů

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Michal Krátký, Miroslav Beneš

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Design Patterns. Tomáš Herceg Microsoft MVP (ASP.NET)

Tvorba informačních systémů

TÉMATICKÝ OKRUH Softwarové inženýrství

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB)

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Vývoj informačních systémů. Přehled témat a úkolů

Tvorba informačních systémů

Principy OOP při tvorbě aplikací v JEE. Michal Čejchan

Elektronická podpora výuky předmětu Komprese dat

Tvorba informačních systémů na platformě J2EE Petr Hetmánek Masarykova Univerzita, Fakulta Informatiky, Botanická 68a, Brno

Vybrané partie z jazyka Java Spring a Enterprise JavaBeans (EJB)

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

UJO Framework. revoluční architektura beans. verze

Michal Krátký, Miroslav Beneš

Použití databází na Webu

Architektura aplikace

Návrhové vzory OMO, LS 2014/2015

Tvorba podnikových aplikací v jazyce JAVA. Josef Pavlíček KII PEF CZU

X33EJA Enterprise Java

Server-side technologie pro webové aplikace

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

PA165: Úvod do Java EE. Petr Adámek

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Úvod do Web Services

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek

Hiearchical MVC (Model-view-controller) vs. PAC (Presentation-abstraction-control)

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

Session Beans. Petr Aubrecht CA. Vtipy budou tentokrát o krizi:

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

MVVM pro desktop i web

Komponentově orientované webové frameworky. Jiří Stránský twitter.com/jistr

Návrh programu v Black Box Component Builderu s využitím architektury Model View Controller

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

Tvorba informačních systémů

Přístup do IS z mobilních zařízení

Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2009 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 25

Platformy / technologie. Jaroslav Žáček

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

Přizpůsobení JSTL pro Google App Engine Datastore

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Vývoj informačních systémů. Přehled témat a úkolů

O Apache Derby detailněji. Hynek Mlnařík

Architektura softwarových systémů

Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2008 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 24

Enterprise Java Beans 3.0

Business Intelligence

Common Object Request Broker Architecture

Aplikační rámce. Jakarta Struts Framework. Obsah přednášky. Aplikační rámce a knihovny. Co je to aplikační rámec? Enterprise Java Beans

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

1 Webový server, instalace PHP a MySQL 13

Abstraktní datové typy: zásobník

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

VZOROVÝ STIPENDIJNÍ TEST Z INFORMAČNÍCH TECHNOLOGIÍ

VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ DATABÁZOVÉ SYSTÉMY ARCHITEKTURA DATABÁZOVÝCH SYSTÉMŮ. Ing. Lukáš OTTE, Ph.D.

Převod 4GL aplikací do webového prostředí. Ing. Jan Musil, IBM ČR Community of Practice for

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

Formy komunikace s knihovnami

RESTful API TAMZ 1. Cvičení 11

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ

IS pro podporu BOZP na FIT ČVUT

ADMINISTRACE POČÍTAČOVÝCH SÍTÍ. OPC Server

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

Vzdělávací obsah vyučovacího předmětu

Systém elektronického rádce v životních situacích portálu

Databáze II. 1. přednáška. Helena Palovská

Spring framework 2.0. Roman Pichlík CZJUG

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

java remote method invocation Kateřina Fricková, Matouš Jandek

Požadavky pro výběrová řízení TerraBus ESB/G2x

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Tvorba informačních systémů

Transkript:

Návrhové vzory pro J2EE Miroslav Beneš Obsah přednášky Význam návrhových vzorů Klasické návrhové vzory GoF Návrh prezentační vrstvy Business vrstva Vzory pro práci s daty Příklady dalších vzorů Záporné vzory Návrhové vzory pro J2EE 2 Význam návrhových vzorů Stavební bloky pro konkrétní řešení. inspirace mimo počítačový průmysl Abstrakce technik řešení problémů, které se často opakují Zabraňují objevování již objeveného Zjednodušují komunikaci role jména návrhového vzoru Klasické návrhové vzory Gamma, Helm, Johnson, Vlissides: Design Patterns: Elements of Reusable Object Oriented Software, Addison-Wesley (Gang of Four, GoF) Factory Command Decorator Composite Façade Value Object - akce - filtry - UI - komponenty - Integer, Boolean, Návrhové vzory pro J2EE 3 Návrhové vzory pro J2EE 4 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 1

Návrh prezentační vrstvy Na straně klienta (X)HTML, CSS, JS Na straně serveru Požadavky reakce na časté změny v zadání rozšiřitelnost Model-View-Controller Model Stav aplikace View Interpretace dat z modelu a jejich prezentace uživateli Controller Zpracování vstupu od uživatele Aktualizace modelu Zobrazení nového pohledu na data Návrhové vzory pro J2EE 5 Návrhové vzory pro J2EE 6 Model-View-Controller klient HTTP request HTTP response <<servlet>> Controller choose forward() <<JSP page>> View locate update usebean <<JavaBean>> Model Front Controller Pattern MVC nepředepisuje, kolik má být řídicích objektů Jeden pro každou obrazovku Obtížné změny Zařazení společných funkcí (logging, bezpečnost, ) Jeden pro celou aplikaci Co se specifickými funkcemi? Řeší se kombinací vzorů Front Controller, Command a Decorator Návrhové vzory pro J2EE 7 Návrhové vzory pro J2EE 8 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 2

Front Controller Pattern Jediné místo v aplikaci, zapouzdřující zpracování požadavku Provedení společných úkolů Přenesení řízení na specifický controller pro konkrétní stránku Samostatné servlety Návrhový vzor Command (akce) Implementace musí být co nejvíce efektivní Decorator Pattern Kombinace více malých komponent do jednoho celku Třída obalující původní třídu a zachovávající její rozhraní Možnost řetězení dekorátorů Požadována nezávislost problémy se správným pořadím dekorátorů J2EE: filtry (preprocesing a postprocesing požadavků) Návrhové vzory pro J2EE 9 Návrhové vzory pro J2EE 10 Decorator Pattern Vzory zajišťující efektivitu Decorator1 Decorator2 FrontController uživatel Request preprocess() preprocess() dofilter() dofilter() postprocess() postprocess() Response Caching Asynchronous Page Pattern asynchronní načítání dat z externích zdrojů (např. RSS) Caching Filter Pattern Filtr zajišťující úschovu dynamicky generovaných stránek Pozor! Umístit až za filtr zajišťující bezpečnost (neautorizované čtení uschovaných stránek) Návrhové vzory pro J2EE 11 Návrhové vzory pro J2EE 12 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 3

Vzory zajišťující efektivitu Pooling Resource Pool Pattern Pool vytváří (přes Factory), spravuje a řídí přístup ke zdroji Resource řízený zdroj Příklad: DB spojení Jakarta DBCP Komponenty business vrstvy Strukturovaný model aplikačních dat Procedury pro přístup k aplikačně orientovaným činnostem Často komponenty sdílené více klienty Poskytují rámec pro transakce Poskytují mechanismus pro perzistenci aplikačních dat Návrhové vzory pro J2EE 13 Návrhové vzory pro J2EE 14 Domain Object Model Pattern Definice skutečných dat a procesů, které jsou spravovány a implementovány systémem Základní vzor většiny J2EE aplikací Odstranění závislosti prezentační vrstvy na konkrétním uložení dat Jiná možnost: práce přímo s databází Technologie POJO Plain Old Java Objects nevyžadují kontejner EJB Composite Entity Pattern Také Entity Façade Pattern Varianty: Mapování každé databázové tabulky na třídu Složitější komunikace, větší režie Jeden objekt reprezentuje data z více tabulek Příklad: Osoba kontakty Návrhové vzory pro J2EE 15 Návrhové vzory pro J2EE 16 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 4

Vzory pro práci s daty Příklad: Osoba a adresa Osoba s položkami popisujícími adresu Osoba s vazbou na objekt Adresa Základní problém: náklady na komunikaci Přenos dat po síti Serializace/deserializace dat Opakované vytváření a rušení instancí komponent Násobné dotazy do databáze Data Transfer Object Pattern Získání skupiny datových položek jedním voláním Naplnění a vrácení objektu přenášejícího data Rozhraní mezi prezentační a business vrstvou, resp. mezi různými komponentami business vrstvy Zvýšení efektivity snížením komunikačních nákladů Zlepšení čitelnosti a struktury aplikace Návrhové vzory pro J2EE 17 Návrhové vzory pro J2EE 18 Data Transfer Object (DTO) public class PatientDTO implements Serializable { public long pat_no = -1; public String fname = null; public String lname = null; public ArrayList addresses = new ArrayList(); } public PatientDTO getpatientdto() { PatientDTO pat = new PatientDTO(); pat.pat_no = pat_no.longvalue(); pat.fname = fname; pat.lname = lname; pat.addresses.add(home); pat.addresses.add(work); return pat; } Data Transfer Hash Pattern Často se měnící požadavky Svázání klienta a serveru stejnou verzí DTO Nutnost změny definice, chceme-li předávat více (či méně) dat Využití Hashtable/HashMap pro uložení dat Potlačení typové kontroly v době překladu Návrhové vzory pro J2EE 19 Návrhové vzory pro J2EE 20 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 5

Databáze a datové vzory Možnost práce s více mechanismy perzistence Relační databáze + JDBC, JDO Textové a binární formáty, XML Obecný pojem: datový zdroj Perzistence se nemá míchat s business logikou testování, závislost na konkrétních mechanismech perzistence, složitost Návrhové vzory pro J2EE 21 Data Access Object Pattern Oddělení kódu přistupujícího do databáze od zpracování dat Delegování zodpovědnosti za přístup do databáze na DAO, jenž pak komunikuje prostřednictvím DTO DAO je lokální objekt, neobsahuje žádnou logiku (jen metody get/set) Návrhové vzory pro J2EE 22 Data Access Object (DAO) Další vzory pro datovou vrstvu Business Object Presentation Object DAO creates/reads Data Object Persistence Mechanism Lazy Load načítání dat podle potřeby IsDirty pattern Ukládání dat podle potřeby Procedure Access Object Přístup k uloženým procedurám v SQL Vzory pro práci s primárními klíči Generátory primárních klíčů Vzory pro objektově relační mapování Návrhové vzory pro J2EE 23 Návrhové vzory pro J2EE 24 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 6

Vzory na rozhraní business vrstvy Dva typy rozhraní s tlustým klientem s prezentační vrstvou na straně serveru Často jde o rozhraní Javy a starších technologií (legacy world) možnost postupného vylepšování nebo nahrazování zastaralých komponent Business Delegate Pattern Definice klientského objektu zajišťujícího komunikaci s business objektem Plní roli modelu v MVC Zapouzdřuje znalosti o tom, jak najít business objekt, připojit se k němu a komunikovat s ním lokální/vzdálená EJB komponenta, CORBA, webová služba apod. Zpracovává různé zdroje výjimek a převádí je na sadu aplikačních výjimek Návrhové vzory pro J2EE 25 Návrhové vzory pro J2EE 26 Příklad public class PatientManagementDelegate { public static PatientDTO createnewpatient(patientdto patient) throws InvalidPatientException { if( patient==null patient.getfirstname()==null patient.getlastname()== null ) throw new InvalidPatientException( Full Name ); PatientDAO pdao = PatientDAOFactory.getPatientDAO(); PatientDTO newpat = pdao.createpatient(patient); return newpat; } Session Façade Pattern Situace: K provedení jedné operace je třeba přistoupit současně k více EJB Seskupení sady aktivit do session beanu, jehož voláním může klient zpracovat najednou celý případ Zapouzdřuje více session beanů, entity beanů a dalších služeb Zjednodušuje správu transakcí Návrhové vzory pro J2EE 27 Návrhové vzory pro J2EE 28 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 7

Další vzory Vzory pro zajištění souběžného přístupu Transakční zpracování Zamykání Vzory pro zasílání zpráv Point-to-Point Distribution Pattern Publish-Subscribe Pattern Vzory pro směrování zpráv J2EE Antipatterns Často se opakující chyby v návrhu Důvody jejich rozšíření: Malá zkušenost Nečitelný kód Cut-and-paste development Typy Architektura Návrhové vzory pro J2EE 29 Návrhové vzory pro J2EE 30 Architectural Antipatterns Příliš mnoho vrstev Např. úplné ukrytí SQL před dalšími vrstvami; drahé činnosti vypadají jako levné Leak Collection Zabránění úklidu dat tím, že data udržujeme ve vyrovnávací paměti Řešení: Soft reference Antivzory na prezentační vrstvě The Magic Servlet jeden servlet udělá vše např. čtení telefonních čísel z databáze a jejich formátování do HTML Monolitické JSP podobné, vše v jednom JSP Přeplněné session proměnné umisťování dočasných nebo komplexních dat do session Návrhové vzory pro J2EE 31 Návrhové vzory pro J2EE 32 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 8

Antivzory pro EJB Všechno je EJB EJB nejsou řešením všech problémů Poměr mezi cenou a získanými výhodami Round-Tripping Nastává při přenosu velkého množství dat Posílání balíku dat po malých částech Stateful When Stateless Will Do Ukládání nepotřebných informací Závěr Mnoho uvedených vzorů je obecných platí nejen pro J2EE, ale i pro.net Další diskuse o vzorech: www.theserverside.com www.theserverside.net Literatura: Crawford, W., Kaplan, J.: J2EE Design Patterns. O Reilly, 2003, ISBN 0-596-00427-3 Návrhové vzory pro J2EE 33 Návrhové vzory pro J2EE 34 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 9