Architetture a componenti Java
per la realizzazione di DSS distribuiti
Giordano Vicoli - ENEA 28 Ottobre 2003
Architetture a componenti Java per la realizzazione di DSS distribuiti
2Giordano Vicoli - ENEA
Sommario
Sistemi (Architetture) Distribuiti. DSS Distribuiti. Problematiche nello sviluppo dei Sistemi
Distribuiti. Java per lo sviluppo dei Sistemi Distribuiti. Dimostrazione
Architetture a componenti Java per la realizzazione di DSS distribuiti
3Giordano Vicoli - ENEA
Cosa sono i Sistemi Distribuiti
Sistemi nei quali le varie parti sono collocate su computer separati, eventualmente in luoghi diversi.
Componenti, oggetti, dati sono installati dove possono svolgere al meglio il loro lavoro.
Architetture a componenti Java per la realizzazione di DSS distribuiti
4Giordano Vicoli - ENEA
Caratteristiche dei Sistemi Distribuiti
Logica e dati di un sistema distribuito possono essere acceduti da un client remoto in ogni momento e da qualsiasi luogo.
Internet e il Web hanno dato un notevole impulso all’evoluzione dei Sistemi Distribuiti.
Architetture a componenti Java per la realizzazione di DSS distribuiti
5Giordano Vicoli - ENEA
Caratteristiche dei Sistemi Distribuiti
Internet e le tecnologie ad esso associate hanno imposto degli standard (Protocolli, modalità di interazione etc.).
La tecnologia ha dovuto adattarsi a questi standard e ha dovuto cercare soluzioni affidabili per la realizzazione dei Sistemi Distribuiti.
Architetture a componenti Java per la realizzazione di DSS distribuiti
6Giordano Vicoli - ENEA
Sistemi monolitici
Applicazioni e dati risiedono sullo stesso computer.
Applicazione
Architetture a componenti Java per la realizzazione di DSS distribuiti
7Giordano Vicoli - ENEA
Sistemi Client-Server (2-tiers)
I dati risiedono su un Server di rete. Sono acceduti da parte di più Client
contemporaneamente. Il Client contiene sia la logica di
visualizzazione e inserimento dati, sia la business logic.
Architettura a due livelli (2-tiers).
Architetture a componenti Java per la realizzazione di DSS distribuiti
8Giordano Vicoli - ENEA
Sistemi Client-Server (2-tiers)
Server
Client
Client
Client
Architetture a componenti Java per la realizzazione di DSS distribuiti
9Giordano Vicoli - ENEA
Difficile manutenzione del Client. Installazione dei Client più complessa e
costosa in termini di licenze. Condivisione dei dati difficile da gestire. Aumento dei Client difficile da gestire.
Sistemi Client-Server (2-tiers)
Architetture a componenti Java per la realizzazione di DSS distribuiti
10Giordano Vicoli - ENEA
Sistemi Client-Server (3-tiers)
La business logic viene spostata sul Server.
Il Client viene utilizzato solo per l’inserimento e la visualizzazione dei dati.
Viene introdotto un livello intermedio (Middleware).
Architettura a tre livelli (3-tiers).
Architetture a componenti Java per la realizzazione di DSS distribuiti
11Giordano Vicoli - ENEA
Sistemi Client-Server (3-tiers)
DBMS
Client
MiddlewareClient
Client
Server
Architetture a componenti Java per la realizzazione di DSS distribuiti
12Giordano Vicoli - ENEA
Sistemi Client-Server (3-tiers)
Miglioramenti e aggiornamenti sul Server non influiscono sull’applicazione Client.
Installazione Client semplificata (zero configuration client architecture) e più semplice da utilizzare.
Sistema più difficile da realizzare.
Architetture a componenti Java per la realizzazione di DSS distribuiti
13Giordano Vicoli - ENEA
Client
Il Client deve essere il più “leggero” possibile (Thin-Client).
Deve contenere la logica di visualizzazione dei dati, la logica di inserimento eventualmente la logica di validazione.
Internet Browser Applicazione dedicata comunque “leggera”.
Architetture a componenti Java per la realizzazione di DSS distribuiti
14Giordano Vicoli - ENEA
Server Il lato Server può essere ulteriormente
suddiviso in più livelli. Architettura multi-livello o n-tiers (n>2). Livelli logici e livelli fisici. Livello fisico -> numero di macchine Livello logico -> organizzazione del
sistema.
Architetture a componenti Java per la realizzazione di DSS distribuiti
15Giordano Vicoli - ENEA
Server Presentation tier (si occupa dell’interazione da
e verso il Client). Business tier (contiene la business logic del
sistema). Integration tier (si occupa dell’integrazione
degli oggetti con il sistema di persistenza o con altre risorse come i servizi di messaggistica).
Resource tier (Databases, FileSystem etc).
Architetture a componenti Java per la realizzazione di DSS distribuiti
16Giordano Vicoli - ENEA
Client Tier
Applicaz.Client
InternetBrowser
Presentation Tier
Business Tier
Integration Tier
MIDDLEWAREResource Tier
Architetture a componenti Java per la realizzazione di DSS distribuiti
17Giordano Vicoli - ENEA
Pattern MVC
Un pattern è una soluzione ad un certo tipo di problema.
Model – View – Controller Separare i dati e la business logic che
opera su di essi dalla loro visualizzazione e dalla modalità di interazione con essi.
Architetture a componenti Java per la realizzazione di DSS distribuiti
18Giordano Vicoli - ENEA
Pattern MVC
Controller
View Model
Architetture a componenti Java per la realizzazione di DSS distribuiti
19Giordano Vicoli - ENEA
Sommario
Sistemi (Architetture) Distribuiti. DSS Distribuiti. Problematiche nello sviluppo dei Sistemi
Distribuiti. Java per lo sviluppo dei Sistemi Distribuiti. Dimostrazione
Architetture a componenti Java per la realizzazione di DSS distribuiti
20Giordano Vicoli - ENEA
DSS Distribuiti
Hanno seguito la stessa evoluzione dei Sistemi distribuiti.
Non sono più pensati per il singolo operatore ma possono essere utilizzati in ambito aziendale, seppure a diversi livelli.
Possono anche essere realizzati per fornire servizi.
Architetture a componenti Java per la realizzazione di DSS distribuiti
21Giordano Vicoli - ENEA
Progetto MUSTER
Supervisore
Addestrando
Addestrando
Addestrando
Addestrando
Architetture a componenti Java per la realizzazione di DSS distribuiti
22Giordano Vicoli - ENEA
Progetto MUSTER
Supervisore
Addestrando
Addestrando
Addestrando
Addestrando
Server
Architetture a componenti Java per la realizzazione di DSS distribuiti
23Giordano Vicoli - ENEA
DFE-Design For Environment
Aiutare il progettista o il gestore dei processi produttivi nel miglioramento degli impianti e delle tecnologie impiegate nell’ottica di ridurre l’impatto ambientale del processo compatibilmente con i costi e gli investimenti necessari.
Architetture a componenti Java per la realizzazione di DSS distribuiti
24Giordano Vicoli - ENEA
DFE-Design For Environment
Processo verniciatura sedie Produzione del vetro artistico di Murano Fase di Configurazione del processo Fase di Analisi Fase di Ottimizzazione Due alternative nella fase di ottimizzazione Algoritmo Genetico con Foglio Excel
Architetture a componenti Java per la realizzazione di DSS distribuiti
25Giordano Vicoli - ENEA
DFE-Design For Environment
Versione Desktop Versione “Enterprise” Solo la fase di ottimizzazione Servizio verso gli utenti L’utente può accedere tramite browser e con
applicazione dedicata. L’utente si registra e “acquista” un certo tempo
di elaborazione per l’esecuzione degli algoritmi. Algoritmi implementati con Delphi.
Architetture a componenti Java per la realizzazione di DSS distribuiti
26Giordano Vicoli - ENEA
DFE-Design For Environment
Versione Desktop: più licenze, installazione più complessa, manutenzione difficile, maggior potenza elaborativa richiesta.
Versione Enterprise: nessuna licenza, interazione tramite internet, client leggero scaricabile da internet, manutenzione semplificata, minor potenza elaborativa, accesso da qualsiasi computer.
Architetture a componenti Java per la realizzazione di DSS distribuiti
27Giordano Vicoli - ENEA
Sommario
Sistemi (Architetture) Distribuiti. DSS Distribuiti. Problematiche nello sviluppo dei
Sistemi Distribuiti. Java per lo sviluppo dei Sistemi Distribuiti. Dimostrazione
Architetture a componenti Java per la realizzazione di DSS distribuiti
28Giordano Vicoli - ENEA
Problematiche
Quando si realizza un sistema distribuito entrano in gioco una serie di problematiche che non sono strettamente legate ai requisiti funzionali del sistema.
Non è sufficiente quindi implementare correttamente la business logic.
Architetture a componenti Java per la realizzazione di DSS distribuiti
29Giordano Vicoli - ENEA
Problematiche Scalabilità. Transazioni distribuite. Autenticazione e autorizzazione. Accesso concorrente ai dati.
Architetture a componenti Java per la realizzazione di DSS distribuiti
30Giordano Vicoli - ENEA
Transazioni
E’ l’esecuzione di una serie di attività (che sono viste come un’unica unità di lavoro) che accedono ad una o più risorse condivise.
Esse devono andare in esecuzione in maniera completa (commit) o non devono essere eseguite per niente (rollback).
Architetture a componenti Java per la realizzazione di DSS distribuiti
31Giordano Vicoli - ENEA
Transazioni
Se una transazione è eseguita da componenti diversi eventualmente allocati su elaboratori diversi siamo in presenza di una transazione distribuita.
In questo caso si identifica un Transaction Manager che supervisiona la transazione mediante il protocollo di commit a due fasi (2PC - 2 Phase Commit).
Architetture a componenti Java per la realizzazione di DSS distribuiti
32Giordano Vicoli - ENEA
Transazioni
Prenotazione e pagamento.
Applicazione
Prenotazione
Pagamento
Biglietto
Architetture a componenti Java per la realizzazione di DSS distribuiti
33Giordano Vicoli - ENEA
Transazioni Sportello bancario automatico. Gestione dati di importante rilevanza.
Banca con 100 sportelli, 300 transazioni al giorno, 100€ per transazione.
Più di 1.000.000.000,00 €/anno 99,99% Perdita più di 100.000,00 €/anno
Architetture a componenti Java per la realizzazione di DSS distribuiti
34Giordano Vicoli - ENEA
Transazioni
ACID Atomica Consistente Isolata Duratura
Architetture a componenti Java per la realizzazione di DSS distribuiti
35Giordano Vicoli - ENEA
Sommario
Sistemi (Architetture) Distribuiti. DSS Distribuiti. Problematiche nello sviluppo dei Sistemi
Distribuiti. Java per lo sviluppo dei Sistemi
Distribuiti. Dimostrazione
Architetture a componenti Java per la realizzazione di DSS distribuiti
36Giordano Vicoli - ENEA
JAVA Negli ultimi anni Java si è principalmente
orientato con grande successo allo sviluppo di una piattaforma per la realizzazione di applicazioni distribuite.
Le API Java sono state organizzate in tre distribuzioni: J2SE, J2ME e J2EE.
Architetture a componenti Java per la realizzazione di DSS distribuiti
37Giordano Vicoli - ENEA
JAVA J2SE:contiene tutte le classi e librerie per
lo sviluppo di applicazioni stand-alone (Applet etc.).
J2ME:contiene classi e librerie per lo sviluppo di applicazioni destinate a dispositivi come i cellulari, palmari etc.
Architetture a componenti Java per la realizzazione di DSS distribuiti
38Giordano Vicoli - ENEA
J2EE (Java 2 Enterprise Edition)
Contiene classi e librerie per lo sviluppo di applicazioni distribuite.
In particolare si trovano tutte quelle tecnologie che ci permettono di realizzare lo strato MIDDLEWARE di un sistema distribuito e tutti i livelli in cui esso è logicamente suddiviso.
Architetture a componenti Java per la realizzazione di DSS distribuiti
39Giordano Vicoli - ENEA
J2EE (Java 2 Enterprise Edition) Programmazione per Componenti. Un componente è un insieme di classi
Java e di altri file accessori. Un componente fornisce dei servizi
all’esterno e, per farlo, deve vivere all’interno di un contenitore (Container).
Il Container fornisce tutta una serie di servizi al componente.
Architetture a componenti Java per la realizzazione di DSS distribuiti
40Giordano Vicoli - ENEA
J2EE (Enterprise Java Beans)
Componenti Enterprise Java Beans (EJB) EJB Container Rappresentano il Business Tier del Sistema. Gli EJB contengono la business logic del
sistema. L’EJB Container fornisce una serie di servizi ai
Componenti EJB.
Architetture a componenti Java per la realizzazione di DSS distribuiti
41Giordano Vicoli - ENEA
J2EE (Java 2 Enterprise Edition)
Ciclo di vita dei componenti. Accesso concorrente ai dati. Persistenza dei dati. Autenticazione e autorizzazione di un
Client. Gestione delle Transazioni distribuite.
Architetture a componenti Java per la realizzazione di DSS distribuiti
42Giordano Vicoli - ENEA
J2EE (Java 2 Enterprise Edition)
Lo sviluppatore deve solo preoccuparsi di implementare correttamente la business logic del Sistema.
Alcuni servizi come le Transazioni e le Autorizzazioni possono essere impostati e/o modificati in maniera dichiarativa senza dover intervenire sul codice.
Architetture a componenti Java per la realizzazione di DSS distribuiti
43Giordano Vicoli - ENEA
J2EE (Web Component)
Web Component – Web Container Rappresentano il Presentation Tier del
Sistema. Servlet e JSP realizzano un Web
Component. Gestiscono quindi le operazioni da e verso
il Client.
Architetture a componenti Java per la realizzazione di DSS distribuiti
44Giordano Vicoli - ENEA
Firewall
HTMLClient
C++Client
HTMLClient
J2EE Application Server
Web Container
Servlet, JSP
EJB ContainerEnterprise
BeanEnterprise
Bean
Business Components
JNDIJMS
CORBAXML
CORBA/IIOP
Java App.Java Applet RMI-IIOP
RMI-IIOPSOAP-WSDL
HTTP
HTTP
CLIENT
ClientJava, C++, C#
Algoritmi+
ExcelSOAP
Architetture a componenti Java per la realizzazione di DSS distribuiti
45Giordano Vicoli - ENEA
Sommario
Sistemi (Architetture) Distribuiti. DSS Distribuiti. Problematiche nello sviluppo dei Sistemi
Distribuiti. Java per lo sviluppo dei Sistemi Distribuiti. Dimostrazione