Ingegneria del software I

Slides:



Advertisements
Presentazioni simili
Architetture dei sistemi distribuiti Prof
Advertisements

Socket Java Alberto Ferrari.
Unified Modeling Language
Costruttori e Distruttori
Recupero debito quarto anno Primo incontro
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
26/10/2004Laboratorio di Programmazione - Luca Tesei1 Variabili e Oggetti Lo spazio di memoria di Java Le API di Java.
Java Enterprise Edition (JEE)
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
Massa Laura Mela Enrica
Passaggio dei parametri
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
1 Semantica Operazionale di un frammento di Java: lo stato.
LIP: 4 Aprile 2008 ECCEZIONI. Eccezioni Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Java2 Esercitazioni del corso di Sistemi Informativi Marina Mongiello
Fondamenti di Informatica
Distributed Object Computing
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
Fisica Computazionale I - 51 OPERAZIONI DI INPUT/OUTPUT Le operazioni di input/output sono estremamente complesse perche' implicano una sostanziale interazione.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Le stringhe di caratteri in Java Anno Accademico 2009/2010.
Introduzione al linguaggio Java
eliana minicozzi linguaggi1a.a lezione2
Overriding.
Soluzione Esercizio - Classe Vettore
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 1 Estensione di classi: il Contratto INTERFACCIA E REALIZZAZIONE Che cosa realizza una.
Oggetti e dati primitivi Programmazione Corso di laurea in Informatica.
Approfondimento delle classi
CAPITOLO 1 JAVA: UN TUFFO NEL LINGUAGGIO E NELL'AMBIENTE.
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
Programmazione con Interfacce
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Java base IV: Java e la programmazione O.O.
Argomenti della lezione
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori. Lapproccio classico consiste nellinse- rire controlli.
1 L!ve T!tle: software per la consultazione degli andamenti dei titoli di borsa online Reti di Calcolatori LS Nuzzi Nicola Mat
Meteo Service Corso di Reti di Calcolatori LS Casarini Stefano matr
Programmazione in Java
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Cosa è una applicazione distribuita?
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Unità Didattica 3 Linguaggio C
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
1 Applet ed HTML Fondamenti di Informatica Corso D.
I nomi in Java F. Bombi 18 novembre novembre 2003.
Astrazione procedurale ed eccezioni
Programmazione ad oggetti
CORBA-Master;1.ppt Introduzione a CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, Milano Tel. (02) FAX (02)
CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, Milano Tel. (02)
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
Programmazione in Java
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
30/10/01Array 1  Un array e’ una struttura dati che contiene piu’ valori del medesimo tipo.  La lunghezza di un array e’ stabilita quando l’array viene.
CORBA in MOMIS MOMIS: Mediator envirOnment for Multiple Information Sources.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

Ingegneria del software I Seminario1:CORBA

Introduzione CORBA (Common Object Request Broker Architecture) Definita da OMG (Object Management Group) Incapsulamento per la comunicazione tra applicazioni diverse

Architettura

Elementi IDL ORB GIOP (General Inter-ORB Protocol) Nasconde locazione fisica oggetti interagenti Permette: invocazione, attivazione, … Interfacce ORB: Object Adapter Dynamic Invocation Interface Repository GIOP (General Inter-ORB Protocol) Nasconde locazione fisica di oggetti in ORB diversi COS (CORBA Object Services) Naming services, Transaction services, …

Interface Definition Language Definisce operazioni utilizzabili su un oggetto. Ha proprio sistema di tipi Compilato verso linguaggi principali

Esempio Interfaccia oggetto conto corrente bancario Interface Conto { attribute string numeroConto; void deposito(int long ammontare); void prelievo(int long ammontare); long saldo(); };

Tipi Primitivi in IDL Interi Float Booleani Caratteri Stringhe Object Reference Any

(con lunghezze fisse o variabili) Tipi Costruiti in IDL Struct Union Array, Sequences (con lunghezze fisse o variabili) Enum

Compilazione IDL Compilatore riceve descrizione IDL e genera interfacce nel linguaggio di implementazione Specifiche Language Mapping (IDL-Linguaggio impl.) Genera: Stub (lato client) Skeleton (lato server)

Stub Stub Interfaccia del client per richiedere servizi Client invoca localmente lo Stub Lo Stub impacchetta (marshalling) i dati di invocazione del messaggio Il messaggio viene consegnato all’ORB L’ORB lo invia al server

Skeleton Implementazione oggetto lato server Scheletro dell’oggetto con sezioni parti da implementare Coopera con Object Adapter per attivazione dell’oggetto Riceve richiesta dall’Object Adapter, estrae i dati (unmarshalling) e li passa all’implementazione dell’oggetto

Comunicazione locale

Object Adapter Si occupa di attivare gli oggetti Il client mediante stub invoca metodo dell’ORB ORB notifica invocazione all’OA che attiva implementazione Implementazione si registra e si dichiara pronta OA passa invocazione allo skeleton che spacchetta i parametri e li fornisce all’Implementazione Implementazione esegue metodo, restituisce parametri al client mediante skeleton che gestisce anche eccezioni

Portable Object Adapter Gestisce le risorse lato server Stabilisce politiche di memorizzazione e attivazione degli oggetti Gestisce persistenza

Interazione

Esempio interazione client-server Scrittura interfaccia IDL Compilazione interfaccia Scrittura implementazione Scrittura del server Scrittura del client Classi lato Client Classi lato Server Classi di supporto _ContoStub.java ContoPOA.java ContoHelper.java Conto.java ContoPOATie.java Conto Holder.java ContoOperations.java

Classi Le classi lato client e lato server formano rispettivamente Stub e Skeleton Le classi di supporto vengono utilizzate sia dal client che dal server sono proprie del mapping idl2java in questo caso Helper: funzioni di utilità per le gestione oggetti Holder: gestione parametri in uscita, non presente in java

Implementazione oggetto Conto public class ContoImpl extends ContoPOA { private int _saldo; private String _numeroConto; public ContoImpl(String arg) _saldo = 0; _numeroConto = arg; } public void deposito(int amount) _saldo += amount; public int prelievo(int amount) _saldo -= amount; return _saldo; public int saldo() { return _saldo; } String numeroConto() return _numeroConto; void numeroConto(String arg) _numeroConto = arg;

Classe Server public class Server { public static void main( String[] args ) // Inizializzazione ORB org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null); try // Creazione riferimento al POA org.omg.PortableServer.POA poa = org.omg.PortableServer.POAHelper.narrow(orb.resolve_initial_references("RootPOA")); // Attivazione oggetto nel POA org.omg.CORBA.Object o = poa.servant_to_reference(new ContoImpl("0393")); poa.the_POAManager.activate(); // Pubblicazione OR in un file PrintWriter ps = new PrintWriter(new FileOutputStream(new File( args[0] ))); ps.println( orb.object_to_string( o ) ); ps.close(); } catch ( Exception e ) { e.printStackTrace(); // Attivazione ORB orb.run();

Classe Client public class Client { public static void main(String args[]) try // Inizializzazione dell’ORB org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args,null); // Dichiarazione della variabile per l’oggetto Conto contoBancario; // Reperimento dell’Object Reference da file BufferedReader in = new BufferedReader(new FileReader(args[0])); String IORString = in.readline(); // Creazione riferimento remoto all’oggetto contoBancario = ContoHelper.narrow(orb.string_to_object(IORString)); // Invocazione operazioni sull’oggetto contoBancario.deposito(2000); contoBancario.prelievo(200); System.out.println("Il saldo del conto" + contoBancario.numeroConto() + "è: " + contoBancario.saldo()); } catch (Exception e) { e.printStackTrace();

Dynamic Invocation Interface Nell'esempio: collegamento statico tra client e server, codice oggetto server conosciuto dal client a tempo di compilazione Per costruire collegamenti dinamici a oggetti non conosciuti a tempo di compilazione si usa DII QueryInterface

Dynamic Invocation Interface Codice interpretato per invocare operazioni su nuovi oggetti. Unica interfaccia per tutte le operazioni su tutte le istanze. Permette query asincrone.

Struttura dell'ORB

ORB interface Permette accesso ai servizi CORBA Accesso all'Interface Repository Costruzione di DII Operazioni su Object Reference Operazioni su politiche Costruzione di valuetype

Esempi di servizi Naming service Trading service Permette di mettere in relazione nomi e riferimenti ad oggetti Metodi per binding e resolve Trading service Permette di ritrovare oggetti con certe caratteristiche

Comunicazione remota

IIOP GIOP: astratto rispetto al livello di trasporto IIOP: mapping di GIOP su TCP/IP Specifica informazioni di indirizzamento dell’oggetto

IOR Object Reference remota IOR contiene indirizzo IP e numero di porta su cui è in ascolto il server Specifica IDL di uno IOR module IIOP { //PIDL struct Version { octet major; octet minor; }; struct ProfileBody_1_1 { Version iiop_version; string host; unsigned short port; sequence<octet> object_key; sequence<IOP::TaggedComponent> components;