Architetture a componenti Java per la realizzazione di DSS distribuiti Giordano Vicoli - ENEA 28 Ottobre 2003 Sommario Sistemi (Architetture) Distribuiti. DSS Distribuiti. Problematiche nello sviluppo dei Sistemi Distribuiti. Java per lo sviluppo dei Sistemi Distribuiti. Dimostrazione Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 2 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. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 3 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. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 4 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. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 5 Sistemi monolitici Applicazioni e dati risiedono sullo stesso computer. Applicazione Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 6 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). Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 7 Sistemi Client-Server (2-tiers) Client Server Client Client Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 8 Sistemi Client-Server (2-tiers) 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. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 9 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). Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 10 Sistemi Client-Server (3-tiers) Client Client Server Middleware DBMS Client Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 11 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. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 12 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”. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 13 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. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 14 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). Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 15 Resource Tier Client Tier Applicaz. Client MIDDLEWARE Presentation Tier Business Tier Internet Browser Giordano Vicoli - ENEA Integration Tier Architetture a componenti Java per la realizzazione di DSS distribuiti 16 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. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 17 Pattern MVC Controller Model View Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 18 Sommario Sistemi (Architetture) Distribuiti. DSS Distribuiti. Problematiche nello sviluppo dei Sistemi Distribuiti. Java per lo sviluppo dei Sistemi Distribuiti. Dimostrazione Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 19 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. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 20 Progetto MUSTER Supervisore Addestrando Addestrando Addestrando Giordano Vicoli - ENEA Addestrando Architetture a componenti Java per la realizzazione di DSS distribuiti 21 Progetto MUSTER Supervisore Addestrando Server Addestrando Giordano Vicoli - ENEA Addestrando Addestrando Architetture a componenti Java per la realizzazione di DSS distribuiti 22 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. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 23 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 Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 24 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. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 25 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. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 26 Sommario Sistemi (Architetture) Distribuiti. DSS Distribuiti. Problematiche nello sviluppo dei Sistemi Distribuiti. Java per lo sviluppo dei Sistemi Distribuiti. Dimostrazione Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 27 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. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 28 Problematiche Scalabilità. Transazioni distribuite. Autenticazione e autorizzazione. Accesso concorrente ai dati. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 29 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). Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 30 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). Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 31 Transazioni Prenotazione e pagamento. Prenotazione Pagamento Applicazione Biglietto Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 32 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 Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 33 Transazioni ACID Atomica Consistente Isolata Duratura Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 34 Sommario Sistemi (Architetture) Distribuiti. DSS Distribuiti. Problematiche nello sviluppo dei Sistemi Distribuiti. Java per lo sviluppo dei Sistemi Distribuiti. Dimostrazione Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 35 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. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 36 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. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 37 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. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 38 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. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 39 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. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 40 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. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 41 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. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 42 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. Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 43 Firewall SOAP C++ Client Client Java, C++, C# CORBA/IIOP RMI-IIOP SOAP-WSDL HTML Client EJB Container Enterprise Bean Java App. Java Applet Servlet, JSP CLIENT Giordano Vicoli - ENEA HTTP Enterprise Bean Business Components RMI-IIOP HTTP HTML Client Algoritmi + Excel Web Container JNDI JMS CORBA XML J2EE Application Server Architetture a componenti Java per la realizzazione di DSS distribuiti 44 Sommario Sistemi (Architetture) Distribuiti. DSS Distribuiti. Problematiche nello sviluppo dei Sistemi Distribuiti. Java per lo sviluppo dei Sistemi Distribuiti. Dimostrazione Giordano Vicoli - ENEA Architetture a componenti Java per la realizzazione di DSS distribuiti 45