1Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
Architettura Java/J2EE
Elaborazione di Franco Grivet Chin
2Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
Architettura logica J2EE
Enterprise: impresa o azienda
Applicazione enterprise: applicazione distribuita multilivello che coinvolgono varie parti dell’impresa
Genericamente molto complesse: vari componenti distribuiti ed eseguiti su hw diversi, scritte spesso con linguaggi di programmazione diversi e che devono colloquiareUtilizzo di framework basati su standard aperti e interoperabiliRequisiti principali di un’applicazione Enterprise
Architettura e sviluppo semplificatiScalabilitàIntegrazione con sistemi informativi preesistentiAmpia scelta di server, strumenti di sviluppo, componentiModello per la sicurezza flessibile
3Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
Architettura logica J2EE
4Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
Livelli logici
contiene applicazioni o applet per il client eseguite nel browser o sul client, fornisce tipicamente interfaccia datiLivello client
contiene applicazioni o applet per il client eseguite nel browser o sul client, fornisce tipicamente interfaccia datiLivello client
componenti web, servlet e JSP eseguiti nel server. Rispondono a richieste http e HTTPS restituendo HTML, XML,ecc. Applicazioni web(componenti Web+pagine HTML e XML)Supporta servizi di autenticazione basati sul Web
Livello web
componenti web, servlet e JSP eseguiti nel server. Rispondono a richieste http e HTTPS restituendo HTML, XML,ecc. Applicazioni web(componenti Web+pagine HTML e XML)Supporta servizi di autenticazione basati sul Web
Livello web
Componenti model (DAO o EJB) per la logica di business eseguiti nel server
Livello business
Componenti model (DAO o EJB) per la logica di business eseguiti nel server
Livello business
Database o sistemi preesistentiArchitettura connector: resource adapter forniti dai vendor, prodotti J2EE per inserirli nella piattaforma
Livello EIS
5Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
Livelli logici
CLIENT-TIER EIS-TIERMIDDLE-TIER
RMI IIOP
HTTP
ConnectionPooling
TransactionSupport
6Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
Livelli logici
Tomcat 4.0 JBoss 2.4.3
EJBDAOServlet
/JSPJava
BeansCustom Tag
7Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
Livello Client
Forniscono una GUI locale all’utente, anche se è possibile avere riga di comando
Ogni client deve usare standard Web (HTTP,S,HTML,XML)
Importante: il client dovrebbe comunicare solo con il livello Web
• Applicazioni desktop scritte in Java, pieno accesso a J2SE, interfaccia utente molto ricca (normalmente uso di Awt e Swing)
• Possono accedere alla logica di business direttamente anche se non opportuno
• Tecnologia Java Web Start per installere applicazioni complete nel desktop dal browser (installa JVM 1.4)http://java.sun.com/products/javawebstart/demos.html
Application client (thick client)
8Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
Livello client
• Interamente eseguiti nel browser web
• Pagine web costituite di vari linguaggi (HTML,XML) che realizzano l’interfaccia
• Tecnologie lato client: Javascript, AJAX
• Pagine web possono contenere Applet, eseguiti in un container nel browser
• Eventuale necessita di permessi per eseguire JavaBeans
• Problemi legati alla versione della JVM (plug in)
• Non sempre necessitano Browser (es Macintosh)
Web client (thin client)
Applet client
• Interamente eseguiti nel browser web
• Pagine web costituite di vari linguaggi (HTML,XML) che realizzano l’interfaccia
• Tecnologie lato client: Javascript, AJAXWeb client (thin client)
9Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
Design pattern
• Interamente eseguiti nel browser web
• Pagine web costituite di vari linguaggi (HTML,XML) che realizzano l’interfaccia
• Tecnologie lato client: Javascript, AJAX
• Model-View-Controller (abbreviato spesso in MVC), che consiste nel separare i componenti software che implementano il modello delle funzionalità di business (model), dai componenti che implementano la logica di presentazione (view) e da quelli di controllo che tali funzionalità utilizzano (controller).
Design pattern
Design pattern e algoritmo
• Nell'ingegneria del software, un design pattern (struttura di progettazione) può essere definito "una soluzione progettuale generale a un problema ricorrente". Esso non è una libreria o un componente di software riusabile, quanto una descrizione o un modello da applicare per risolvere un problema che può presentarsi in diverse situazioni durante la progettazione e lo sviluppo del software.
MVC
• La differenza tra un algoritmo e un design pattern è che il primo risolve problemi computazionali, mentre il secondo è legato agli aspetti progettuali del software.
10Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
– Design pattern MVC (Model View Controller)
Impone una netta separazione fra presentazione, dati e la logica di business
Modello-rappresenta i dati-logica di business- informa le view quando ci sono variazioni nello stato
Visualizzazione-Visualizza i dati del modello-gestisce interazione con utente-riceve aggiornamenti dal modello
Controller-seleziona la view-invia gli input dell’utente al modello- intermediario fra view e modello
Interroga stato del modello
Notifica cambiamenti di stato
Seleziona laview successiva
Passa input dell’utenteal controllore
Cambia stato del modello
11Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
2 MVC e Java Web
• Permettono allo sviluppatore di avere già delle funzionalità pronte ed utilizzabili
• Ogni richiesta non è un processo ma un thread poiché residenti in memoria
• Hanno “memoria”
• Veloci perché in memoria e multi-threaded
• Devo conoscere le API per poterle utilizzare e devo adattarmi
• Sono legato mani e piedi al produttore di API
• Le api non sono modificabili dall’utente
• Possibili bachi
View
Controller
• Permettono allo sviluppatore di avere già delle funzionalità pronte ed utilizzabili
• Ogni richiesta non è un processo ma un thread poiché residenti in memoria
• Hanno “memoria”
• Veloci perché in memoria e multi-threadedView
Controller
• Permettono allo sviluppatore di avere già delle funzionalità pronte ed utilizzabili
• Ogni richiesta non è un processo ma un thread poiché residenti in memoria
• Hanno “memoria”
• Veloci perché in memoria e multi-threadedView
• Devo conoscere le API per poterle utilizzare e devo adattarmi
• Sono legato mani e piedi al produttore di API
• Le api non sono modificabili dall’utente
• Possibili bachiController
• Permettono allo sviluppatore di avere già delle funzionalità pronte ed utilizzabili
• Ogni richiesta non è un processo ma un thread poiché residenti in memoria
• Hanno “memoria”
• Veloci perché in memoria e multi-threadedView
sono implementate con le JSP
View
sono implementati con delle Servlet
Controller
può essere realizzato in vari modi il più semplice dei qualiè di utilizzare una classe Java che contenga classi di modello con campi, metodi get e set e metodi di accesso alla base dati
Model
12Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
3 MVC e Java Web (Diagramma di sequenza UML)
Login.jsp LoginServlet Utente
Login=admin&password=pass
service
getUtenteByLoginPassword(login,password)
utente
D
A
T
A
B
A
S
E
Oggetto utente
Index.jsp
13Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
2 MVC e Java Web
Il MODEL può essere meglio rappresentato con:
• Data Transfer Object
• classe con campi e metodi get e set
• Spesso speculare a una tabella del database
• Data Access Object
• classe che contiene i metodi SCRUD (Search Create Read Update Delete)
• lavorare con la tabella sul database
• Implementato con codice Java standard o con altre scelte, ad esempio• IBATIS (query mapper)• HIBERNATE (Object Relational Mapping)
DTO
DAO
14Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
www.altran.it