1.23k likes | 1.48k Views
Architetture parte II. a.a. 2004-2005 parte 2. Componenti. Possiedono interfacce standard (almeno un per l’introspezione) Applicazioni non complete Distribuibili separatamente Utilizzabili in combinazioni non predicibili Indipendenti dalle caratteristiche tecnologiche del sistema finale
E N D
Architettureparte II a.a. 2004-2005 parte 2 Tecnologie Web
Componenti • Possiedono interfacce standard (almeno un per l’introspezione) • Applicazioni non complete • Distribuibili separatamente • Utilizzabili in combinazioni non predicibili • Indipendenti dalle caratteristiche tecnologiche del sistema finale • Sono oggetti (nel senso canonico) Tecnologie Web
Componenti (2) • Gruppi di programmi gestiti come unità di codice eseguibile, connettibili dinamicamente e accedibili attraverso interfacce documentate che possono essere identificate a run-time Tecnologie Web
Come realizzare una componente Data Code Proxy / Wrapper Data Ext. method Ext. method …. Ext. method Data Code Int. Method ... Int. Method Traditional Obj. Obj. Obj. Obj. OO Tecnologie Web
Java Beans • Integrati nel layout grafico che li contiene • Generano eventi per il mondo esterno • Possiedono proprietà leggibili e modificabili • Supportano l’introspezione • Sono persistenti • Sono personalizzabili Tecnologie Web
OLE = COM COM e DCOM: le origini Microsoft ActiveX Pre 1996 Post 1996 COM DCOM (Distributed COM) OLE1 OLE2 OLE COM+ OLE = Object Linking and Embedding COM = Component Object Model COM+ = Estensione della tecnologia COM Tecnologie Web
COM e DCOM QueryInterface AddRef IUnknown Release Interfaccia 1 Oggetto COM Interfaccia n Tecnologie Web
COM e DCOM Oggetto Nello stesso processo Client Client Process Server Process Sulla stessa macchina Oggetto COM Client Tra due macchine (DCOM) Server Machine Client Machine Oggetto DCE RPC COM COM Client Tecnologie Web “Marshalling”
Ereditarietà in DCOM • Ereditarietà dell’interfaccia: SI • Ereditarieta dell’implementazione: NO • Polimorfismo degli oggetti DCOM: SI Tecnologie Web
Ereditarietà per Contenimento (o delegazione) Tecnologie Web
Ereditarietà per Aggregazione Tecnologie Web
Interfacce • In COM/DCOM le interfacce sono immutabili • Globally Unique IDentifiers (GUID) di 16 byte per definire univocamente e immutabilmente le interfacce • Le interfacce risolvono il problema del versioning Tecnologie Web
Esempio Visual Basic (VBA) Sub ControlloOrtografico() Dim Obj as Object Set Obj = CreateObject(“Excel.Application”) Parola = InputBox(“Scrivi una parola”) If Obj.CheckSpelling(Parola) then MsgBox(“Parola valida”) Else MsgBox(“Parola errata”) End if End Sub Tecnologie Web
Active Controls Active Scripting Visual Basic form-based application MFC/SDK application Logic and abstractions Durablestate Java applet or application Architettura Three-Tier (DNA) Tecnologie Web
Business Objects • Rappresentano oggetti dell’applicazione (cliente, conto corrente, fattura, automobile, …) • Realizzano le “business rules” • Saranno utilizzati in combinazioni non predicibili a priori (connessioni dinamiche ritardate) • Sono realizzati come componenti installate sul secondo livello di un’architettura three-tier Tecnologie Web
Object Request Broker Market Share Object Transaction Monitors (OTM) Ambiente di esecuzione evoluto Tecnologie Web
Microsoft COM+: costruire applicazioni scalabili Clients Network Receiver Queue Connections Context Security Management Configuration Thread Pool Service Logic Synchronisation Shared Data Server Tecnologie Web
Clients Network Receiver Queue Connections Context Security Management Configuration Thread Pool Service Logic Synchronisation Shared Data Windows NT Server 4.0 COM+: i servizi integrati nella piattaforma Tecnologie Web
Programmazione con MTS/COM+ Set ctxObject = GetObjectContext() YOUR CODE YOUR CODE Set objfoo = ctxObject.CreateInstance() YOUR CODE YOUR CODE ctxObject.SetComplete ctxObject.SetAbort An MTS Application “Voglio accedere al mio contesto” “Chiama un altro oggetto” No TX codeNo Thread code No Locking code Etc. “Bene: riusa, fà commit, fà pulizia” “Ci sono problemi: aiutami!” Tecnologie Web
La Piattaforma J2EE • J2SE: Java 2 Platform, Standard Edition. • Ambiente runtime per esecuzione di applicazioni Java e insieme di API (Application Programming Interface) per sviluppare applicazioni di vario tipo (applets, applicazioni stand-alone, …) • J2EE: Java 2 Platform, Enterprise Edition: • framework per lo sviluppo di applicazioni server-side complesse • J2ME: Java 2 Platform, Micro Edition: • framework per lo sviluppo di applicazioni su micro device (PDA, telefonini Java-enabled, etc.) Tecnologie Web
Proprietà • J2EE: adatta allo sviluppo di applicazioni Web-based a livello di impresa, e.g., per commercio elettronico • Il suo competitor è Microsoft .net • Impresa (enterprise): organizzazione di business • Enterprise software applications: applicazioni SW che facilitano la gestione delle attività di impresa • interagire con clienti e partners via Internet • facilitare l’interazione tra le varie parti di un’impresa, eventualmente distribuite geograficamente • gestione del business: resource planning, gestione inventari, ... Tecnologie Web
Caratteristiche di applicazioni “enterprise” • Necessità informative: spesso le stesse informazioni sono utilizzate sotto forma diversa dai consumatori attività di business diverse processano le stesse informazioni, ma utilizzando formati diversi • Complessità dei processi di business: necessità di raccogliere, gestire e condividere informazioni, basandosi su una logica complessa • Eterogeneità delle applicazioni: un’impresa utilizza molte applicazioni basate su architetture e tecnologie diverse (legacy software) Tecnologie Web
Requisiti di gestione del software d’impresa • Velocizzazione del processo di sviluppo delle applicazioni: cambiano gli standard, le tecnologie, le applicazioni devono entrare in uso velocemente • Affidabilità e disponibilità: il SW deve essere sempre accessibile (Web) ed essere affidabile (e.g., transazioni) • Sicurezza: protezione delle informazioni dell’azienda • Scalabilità: accesso efficiente a risorse, tolleranza al carico di milioni di utenti (Web) • Integrazione: le applicazioni vanno integrate nei sistemi informativi già esistenti Tecnologie Web
J2EE • Si sono sviluppate soluzioni diverse per affrontare i vari problemi • J2EE: permette di integrare tali soluzioni e facilita lo sviluppo del SW • Modello di programmazione con approccio alla costruzione di applicazioni basato su API • Infrastruttura che permette di eseguire le applicazioni in modo efficiente e scalabile • basato su Java portabile • basato sul concetto di Contenitore servizi di gestione di base (messaggi, transazioni, ciclo di vita delle componenti, …) forniti dall’infrastruttura • Modulare, componenti riusabili Tecnologie Web
Java 2 Enterprise Edition (1) • Standard Sun per le soluzioni “enterprise”, prevede le seguenti librerie: • Enterprise Java Beans (EJB): modello delle componenti sul lato server • Java Naming and Directory Interface (JNDI) • Remote Method Invocation (RMI): accesso distribuito in rete agli oggetti Java • Servlets: presentazione dinamica e gestione sessioni per i client web Tecnologie Web
Java 2 Enterprise Edition (2) • Java Server Pages (JSP): facilitano la creazione di pagine HTML, DHTML e XML • Java Messaging Service (JMS): comunicazione via message & queuing o publish & subscribe • Java Transaction Service (JTA): gestione delle transizioni distribuite (XA o CORBA OTS) • Java DataBase Connection (JDBC) accesso uniforme agli RDBMS • Java Autentication and Authorization Service • JavaMail: accesso ai server di posta elettronica • Costruiti “sopra” i servizi CORBA Tecnologie Web
Enterprise Java Beans • Entity EJB • supportano accessi condivisi • rappresentano dati persistenti su DB • identificati da una chiave univoca (primary key) • Session EJB • eseguono le richieste di un singolo client • vita per il tempo della connessione • implementano la logica di business • Message-Driven EJB (v. 2.0) • in ricezione di messaggi asincroni (JMS o altri) • vita breve per l’elaborazione di un singolo messaggio Tecnologie Web
Applicazioni J2EE Entity Bean DBMS Applet JSP Servlet Session Bean Message- Driven Bean Q Browser J2ME JCA Resource Manager ERP CICS Tecnologie Web Desktop Server
Home Object (Remote) Elementi di un ambiente EJB EJB Server EJB Container Crea, distrugge, cerca Sicurezza - accesso ai dati - transazioni, ... Tecnologie Web
EJB Server • Fornisce la Java Virtual Machine e le classi di supporto agli EJB • Fornisce le funzioni di base di ORB e TP monitor • Fornisce le funzioni di accesso ai DB • Realizza il bilanciamento del carico e l’alta disponibilità Tecnologie Web
EJB Container • fornisce l’ambiente in cui gli EJB di una classe vengono eseguiti • fornisce ai client l’accesso a EJB Home e Object • realizza, insieme all’EJB server, i servizi di base: sicurezza, transazioni, naming, persistenza (dello stato) • può gestire pool di oggetti della stessa classe Tecnologie Web
EJB Object (Remote) • Rappresenta l’interfaccia dell’EJB verso il mondo esterno • Filtra ed integra i messaggi verso le istanze di EJB • Coordina le transazioni • Nome: <classe> Tecnologie Web
EJB Home • Permette di creare istanze di oggetti di una classe e di cercarle • Nome: <classe>Home • Metodi: • create () • destroy () • interfaccia finder (solo per entity EJB) Tecnologie Web
Sviluppo di un EJB Tecnologie Web Si veda ...
Formati di deployment J2EE • Ogni prodotto richiede file “deployment descriptor” proprietari per descrivere le caratteristiche non standard (load balancing, gestione guasti, risorse…) Tecnologie Web
Dichiarazione di un’interfaccia remota (Object) import javax.ejb.EJBObject; import java.rmi.RemoteException; import java.math.*; public interface Converter extends EJBObject { public BigDecimal dollarToYen(BigDecimal dollars) throws RemoteException; public BigDecimal yenToEuro(BigDecimal yen) throws RemoteException; } Tecnologie Web
Esempio: creazione dell’interfaccia Home import java.io.Serializable; import java.rmi.RemoteException; import javax.ejb.CreateException; import javax.ejb.EJBHome; public interface ConverterHome extends EJBHome { Converter create() throws RemoteException, CreateException; } (si veda http://java.sun.com/j2ee/tutorial/1_3-fcs/ per l’esempio completo) Tecnologie Web
Esempio: implementazione dei metodi esposti import java.rmi.RemoteException; import javax.ejb.SessionBean; import javax.ejb.SessionContext; import java.math.*; public class ConverterBean implements SessionBean { public BigDecimal dollarToYen(BigDecimal dollars) { … implementazione ... } public BigDecimal yenToEuro(BigDecimal yen) { … implementazione ... } public ConverterBean() {} public void ejbCreate() {} public void ejbRemove() {} public void ejbActivate() {} public void ejbPassivate() {} public void setSessionContext(SessionContext sc) {} } Tecnologie Web
Esempio: il client import javax.naming.Context; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; import java.math.BigDecimal; public class ConverterClient { public static void main(String[] args) { try { Context initial = new InitialContext(); Object objref = initial.lookup ("java:comp/env/ejb/SimpleConverter"); ConverterHome home = (ConverterHome)PortableRemoteObject.narrow(objref, ConverterHome.class); Converter currencyConverter = home.create(); BigDecimal param = new BigDecimal ("100.00"); BigDecimal amount = currencyConverter.dollarToYen(param); System.exit(0); } catch (Exception ex) {System.err.println(”!!!"); ex.printStackTrace(); } } } Tecnologie Web
Interazioni fra le classi J2EE Tecnologie Web
EJB Objects Pool Deployment Descriptor lookup interfaccia home con JNDI EJB Jar ejbActivate(..) ejbPassivate(..) EJB Container findByPrimaryKey(..) EJB Home new o activate create(..) Istanza del bean Client isCallerInRole(..) Naming Service metodi del bean es. ejbRemove() metodi di business EJB Context EJB Object es. addPrestito(..) contesto di esecuzione fornito in automatico dal container ad ogni chiamata Architettura Enterprise JavaBeans Tecnologie Web
Persistenza ed EJB • Bean-managed persistence (BMP) • i dati sono acceduti direttamente dal codice attraverso librerie quali JDBC o SQLJ. • Container-managed persistence (CMP) • il container gestisce la persistenza in modo automatico. • Container-managed relationships (CMR) • EJB Query Language (EJB QL) Tecnologie Web
Mapping fra Entity Beans e DB Tecnologie Web
Dichiarazione di dati CMP • public class OrderBean implements EntityBean • { • public Integer orderId; • public String customerName; • public Address customerAddress; • // some code • } • <entity> • <description>CMP Entity Bean</description> • <display-name>Order</display-name> • <ejb-name>Order</ejb-name> • <home>order.OrderHome</home> • <remote>order.Order</remote> • <ejb-class>order.OrderBean</ejb-class> • <persistence-type>Container</persistence-type> • <primkey-field>orderId</primkey-field> • <prim-key-class>java.lang.Integer</prim-key-class> • <reentrant>False</reentrant> • <cmp-field> • <field-name>orderId</field-name> • </cmp-field> • <cmp-field> • <field-name>customerName</field-name> • </cmp-field> • <cmp-field> • <field-name>customerAddress</field-name> • </cmp-field> • </entity> deployment descriptor: Tecnologie Web
Service Oriented Architecture • Perché nasce la SOA • Web Services • .NET • Java Tecnologie Web
Esempio di E-business workflow I Prima: • Acme manufacturing utilizza software proprietario per organizzare prese della Federal Express Adesso • Acme utilizza il sito della Federal Express per seguire il percorso del pacco Tecnologie Web
Esempio di E-business workflow II Prima: • Acme manufacturing ordina un computer dalla Dell e ne segue il procedimento con telefonate Adesso • Acme utilizza il sito della Dell per seguire le fasi di processamento dell’ordine, preproduzione, produzione, preparazione alla consegna e spedizione Tecnologie Web
Service Oriented Architecture • Business to Business integration • Integrazione di applicazioni sviluppate su piattaforme eterogenee • Evoluzione middleware • E-business workflow Tecnologie Web
Service Oriented Architecture Utilità nel descrivere i processi aziendali in forma leggibile su Web dai clienti Utilità nel descrivere i processi aziendali in forma leggibile da macchine Tecnologie Web
Service-oriented or Event-driven Service-oriented Architecture Interaction • Uses interface metadata • One-to-one connections • Client directs flow • Linear path of execution • Closed to unforeseen input once a flow is started Client Server Interface proxy Interfacestub Event-driven Notification • Uses event descriptor metadata • Many-to-many connections • Sink (recipient) determines flow • Dynamic, parallel, asynchronous flows • Can react to new external input while process is in flight Event Source Sink Tecnologie Web