Framework Impianti Informatici Web application - tecnologie 2 Web Application: tecnologie Java-based (J2EE) Sviluppata inizialmente da Sun Cross-platform e open source • Gestire direttamente le funzionalità dell’applicazione • Benefici della comunità di utenti Microsoft-based (.Net) Componenti proprietarie Tecnologia limitata alle piattaforme Microsoft Teoricamente accetta molteplici linguaggi di programmazione Impianti Informatici 3 Linguaggio: J2EE Codice scritto in Java Codice Java compilato nel bytecode Un intermediario cross-platform Mix tra codice sorgente e linguaggio macchina A run-time, JRE (Java Runtime Environment) interpreta il bytecode Esegue l’applicazione Source Code (Java) ByteCode Impianti Informatici JRE 4 Linguaggio: .NET Codice scritto in uno (o più) dei linguaggi supportati VB.NET, C#,… Il codice viene traslato nel (Microsoft) Intermediate Language (IL) Linguaggio cross-platform (simile al bytecode) A run-time, CLR (Common Language Runtime) interpreta il codice IL Esegue l’applicazione SourceCode (VB.NET) SourceCode (C#) IL Impianti Informatici CLR 5 Tecnologia .Net Impianti Informatici 6 J2EE (Java 2 Platform Enterprise Edition) Suite di servizi middleware a disposizione degli sviluppatori di applicazioni (server-side) sità Neces ve a ti inform Lo com gica ple ssa Sistemi eterogenei n e co n o i graz nti Inte . esiste S.I Velocità di sviluppo Sca l abi lità Affidabilità Sicurezza Impianti Informatici 7 J2EE Servizi disponibili Servlet/JSP EJB JDBC JMS Web Services RMI, RMI-IIOP JNDI JTA JAXP Impianti Informatici 8 Middleware ad oggetti Comunicazione tra oggetti distribuiti Remote Procedure Call (RPC) Oggetti remoti Difficoltà nell’invocazione remota: Passaggio di parametri • Marshalling/Unmarshalling • Streaming • Modalità di passaggio – By value – By reference Instabilità del sistema • Macchine • Rete Impianti Informatici BLA BLA BLA BLA 9 RMI (RMI-IIOP) e CORBA Remote Method Invocation Middleware nativo per il mondo JAVA RMI-IIOP (Internet-Inter-ORB-Protocol) Compatibilità con CORBA CORBA (Common Object Request Broker Architecture) IDL (Interface Definition Language) Impianti Informatici 10 Message Oriented Middleware (MOM) Coordinano elementi della logica applicativa Messaggio: richiesta asincrona generata da un applicativo Informazioni formattate Coordinano i sistemi Messaging Agent Creazione, invio, ricezione messaggi Indirizzamento messaggi Servizi sui singoli messaggi QoS Client Impianti Informatici Agent Client 11 MOM: Point-To-Point vs Publish-And-Subscribe Point-To-Point (PTP) Funzionamento a code • Un client invia un messaggio verso una coda specifica Simile a mailbox • Unica coda per tutti i messaggi Publish-And-Subscribe (Pub/Sub) Topic: è un message broker • I client pubblicano i messaggi • I client si sottoscrivono ai messaggi Simile a newsgroup Impianti Informatici 12 Java Messages Service (JMS) Message Oriented Middleware Interfacce e semantica associata Sia PTP che Pub/Sub Applicazione JMS: JMS client Non-JMS client Messaggi JMS provider Oggetti amministrati Limitazioni: Security Load-balancing/fault tolerance Triggering client Message type repository Impianti Informatici 13 Servlet Applicazioni lato server basate su Java Richiedono un particolare componente un servlet-container (o servletengine) Appartiene ad un application server Funzionalità a disposizione dell’applicazione Ciclo di vita Temporanee: vengono instanziate nel momento della richiesta e distrutte al temine della richiesta Permanenti: instanziate all’avvio del server e distrutte solo quando viene spento Impianti Informatici 14 Servlet vs CGI Servlet CGI JVM sempre attiva Un thread per ogni richiesta Singola copia del codice Servlet in esecuzione Migliori prestazioni Platform-indipendent Librerie Java a disposizione Applet Database Rmi … Impianti Informatici Un processo per ogni richiesta Multiple istanze Difficile operazioni su persistenza dati 15 Servlet: funzioni tipiche Gestire oggetto di sessione Verifica autorizzazioni Prelevare i dati inviati dal browser Interazione con Database Inviare pagine al browser codice della servlet browser HttpServeltRequest doGet(...) doPost(...) browser Servlet Servlet HttpServeltResponse web server classe generica per le servlet classe specifica per il protocollo http mia_servlet_ mia_servlet_ generica generica HttpServlet HttpServlet mia_servlet_http mia_servlet_http init() Servlet Servlet Servlet Servlet Servlet chain destroy() doGet() doPost() Impianti Informatici Servlet Servlet 16 JSP (Java Server Pages) Interfaccia utente Necessitano di un servlet-container Compilate in servlet Eseguite come codice Java Stile di programmazione incentrato sul look-and-feel Servlet-container JSP Servlet Impianti Informatici JVM 17 JavaBean “Write once, run anywhere, reuse everywhere “ (JavaSoft) • Aggiungere funzionalità senza riscrivere il codice da capo • Retrocompatibilità con le versioni precedenti • Riusabile in applicazioni e ambienti di sviluppo differenti • Cross-platform • Java-based • Sistemi distribuiti Impianti Informatici 18 JavaBean Property Comportamento, caratteristiche bean Customization Event Comunicazione con altri bean Persistence Serializable (java.io.serializable) Method Tutti i metodi pubblici sono esportati Introspezione Design pattern (reflection) BeanInfo interface Impianti Informatici 19 EJB (Enterprise Java Bean) Un Enterprise Bean è un componente software server-side. Può essere composto di uno o più oggetti, a fronte di un’unica interfaccia con cui il client può interagire. Catena di EJB Necessitano di un apposito container, e quindi di un application server EJB-compliant Ambiente per EJB Persistenza, transazioni, sicurezza, connessioni Accesso alle risorse esterne (DB,..) EJB EJB EJB EJB EJB chain Impianti Informatici EJB EJB 20 EJB: middleware implicito EJB Container Impianti Informatici 21 EJB: Session Bean Modellano un processo, un’azione Accedere ad un DB Collegarsi ad un legacy system Chiamare altri EJB. Solitamente non persistente Impianti Informatici 22 EJB: Entity Bean Modellano i dati Fungono da contenitore per le informazioni di un database Un prodotto Un ordine Un operaio Una carta di credito Sono usati dai session bean Gestiscono la persistenza Impianti Informatici 23 EJB: Message-Driven Bean Modellano le azioni Comunicano tramite messaggi JMS Esecuzione del processo asincrona e separata dalla chiamata. Client Agent Impianti Informatici Client 24 Message-Driven Bean: caratteristiche Non hanno interfaccia locale o remota Comunicano solo con messaggi Qualsiasi clienti che implementi JMS può usarli OnMessage() Analisi a run-time del messaggio Nessun valore di ritorno Nessuna eccezione verso il client Il container cattura eccezioni di sistema Stateless Conservazione dei messaggi per destinatari non pronti Impianti Informatici MVC e Web Services Impianti Informatici Web application - tecnologie 26 Model 1 Ja v a-e e t a l i na b Comp led Write-o n ce R un an y where Impianti Informatici 27 Model 1: problematiche Accoppiamento dati-pagine Accoppi amento JAVA-H TML Difficoltà di d eb u g Flusso logic o integrato Impianti Informatici i p t vs r c S a v Ja Java 28 Model-View-Controller (Model 2) Impianti Informatici 29 MVC: Model Business Logic Indipendente da view e controller Viene realizzato mediante i JavaBean contengono la maggior parte della logica dell’applicazione Incapsula lo stato dell’applicazione Notifica i cambiamenti alle view V C Notifica cambiamenti M Impianti Informatici 30 MVC: View Visualizza le informazioni all’utente Pagina di risposta alla richiesta dell’utente Corrisponde alle JSP Rendering del modello Richiede i dati aggiornati al model Invia le azioni dell’utente al controller Azioni utente V C Richiede dati Notifica cambiamenti M Impianti Informatici 31 MVC: Controller Gestisce l’input dell’utente Intercetta richieste HTTP Implementato con Servlet Comportamento dell’applicazione Modifica il model Seleziona la view successiva Seleziona Azioni utente C V Cambiamenti Impianti Informatici Richiede dati Notifica cambiamenti M 32 MVC: vantaggi Facilità sviluppo e gestione applicazioni Netta separazione tra business logic, presentation e request processing Unico punto di ingresso: il controller Le applicazioni sono generalmente più semplici da mantenere e più facilmente estendibili Sicurezza, validazione dell’input, internazionalizzazione Impianti Informatici 33 Web Services Servizi offerti via Web Applicazioni B2B Sono una nuova tecnologia di middleware distribuito basata su XML (Extensible Markup Language) Opportunità di integrazione tra le applicazioni business Web Services Business application RETE Impianti Informatici Business application 34 Web Services: opportunità Web Services Business application RETE Service description Business application Service research Registro A Registro B Registro C Impianti Informatici 35 Web Services: stack protocollare Impianti Informatici 36 SOAP (Simple Object Access Protocol) Lightweight protocol Modalità di passaggio di dati in XML Interfaccia con HTTP Indipendenti da sistema operativo protocollo di comunicazione linguaggio di programmazione Impianti Informatici 37 WSDL (Web Services Definition Language) Interfaccia servizi Modalità e protocolli di accesso Parametri in ingresso Impianti Informatici 38 UDDI (Universal Description Discovery and Integration) Sistema di directory distribuito Registri pubblici Registri privati Tipi di registri White pages • Informazioni sul provider Yellow pages • Tassonomia standard dei servizi e delle organizzazioni registrate Green pages • Informazioni tecniche sui servizi Impianti Informatici 39 Web Services: data flow WSDL Client WSDL compiler Client Stub Server Service Skeleton SOAP HTTP TCP/IP Impianti Informatici 40 Web Services: pro i Operazion asincrone Interfaccia con Business logic P ro t o c o lli standar d Applicazioni disaccoppiate Modularità Impianti Informatici Supporto al codice 41 Web Services come middleware Impianti Informatici