1 Remote Procedure Call Corso di Sistemi di Elaborazione delle Informazioni a.a 2007/2008 Autori: Alberto Colombo Fulvio Frati.

Slides:



Advertisements
Presentazioni simili
Amministrazione dei servizi di stampa. Sommario Introduzione ai servizi di stampa Introduzione ai servizi di stampa Terminologia della stampa Terminologia.
Advertisements

Corso di Fondamenti di Informatica
Architetture dei sistemi distribuiti Prof
Recupero debito quarto anno Primo incontro
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
PHP.
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
Web Services.
Massa Laura Mela Enrica
Passaggio dei parametri
Java2 Esercitazioni del corso di Sistemi Informativi Marina Mongiello
DLL: Dynamic Linking Library
Component Object Model (COM) & Distributed COM (DCOM) Appunti di Windows & Dynamic Data Exchange (DDE) (1987) Object Linking and Embedding 1 (OLE 1) &
1 Reti di Calcolatori Esercitazione 5 Implementazione del TFTP tramite RPC Copyright © by D. Romagnoli & C. Salati Alma Mater Studiorum - Universita'
1 System Call per Comunicazione tra Processi Pipe.
Come programmare servizi di rete?
1 Università della Tuscia - Facoltà di Scienze Politiche.Informatica 2 - a.a Prof. Francesco Donini Active Server Pages.
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
Funzioni definite dall’utente
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
Corso di Informatica (Programmazione)
Tecniche di automazione Corso: Tecniche di automazione – prof.ssa Laura ZUCCHI DDE Data Dynamic Exchange Appunti lezioni Classi 1C e 1H – gruppo A.
Introduzione agli stream e alle classi
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
Struttura dei sistemi operativi (panoramica)
I Thread.
Ingegneria del software I
Oggetti e dati primitivi Programmazione Corso di laurea in Informatica.
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
memoria gestita staticamente:
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
1 LINUX: struttura generale The layers of a UNIX system. User Interface.
Corso di PHP.
Fondamenti di informatica Linguaggio C Main Program: Architettura di un PC Diagrammi di flusso Linguaggio C.
1 L!ve T!tle: software per la consultazione degli andamenti dei titoli di borsa online Reti di Calcolatori LS Nuzzi Nicola Mat
Distributed File System Service Dario Agostinone.
Meteo Service Corso di Reti di Calcolatori LS Casarini Stefano matr
Corso di Informatica per Giurisprudenza Lezione 7
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
1 Installazione da rete Introduzione Configurazione del server NFS Cosa serve sul client Configurazione kickstart.
DDE Data Dynamic Exchange Appunti lezioni Classi 1C e 1H – gruppo A
Il modello di riferimento OSI
Configurazione in ambiente Windows Ing. A. Stile – Ing. L. Marchesano – 1/23.
Java Remote Method Invocation (RMI)
Threads.
Distributed System ( )7 TCP/IP four-layer model.
Programmazione Web PHP e MySQL 1. 2Programmazione Web - PHP e MySQL Esempio: un blog.
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Supporto per la replicazione attiva di servizi Progetto per il corso di Reti di Calcolatori LS Montanari Mirko Matr:
Sistema di replicazione master-multislave con server di backup per un servizio di chat di Marco Andolfo matr
Reti di calcolatori Modulo 2 -Protocolli di rete TCP/IP Unità didattica 2 – Il protocollo TCP/IP Ernesto Damiani Università degli Studi di Milano - SSRI.
Overlay network strutturate per applicazioni peer to peer Lorenzo Castelli.
Servizio di newsgroup con replicazione dei server Studente: Letizia Cheng Cheng Sun Matricola: Reti di Calcolatori LS – Prof. A. Corradi A.A. 2003/2004.
Sistemi di elaborazione dell’informazione Modulo 4 -Tecniche di programmazione distribuita Unità didattica 1 -Socket library Ernesto Damiani Lezione 1.
Concetti Fondamentali sulla Programmazione
Servizi Internet Claudia Raibulet
B IBLIO S ERVICE consultazione di articoli online Anna Riccioni Progetto per il corso di Reti di Calcolatori L-S Anno Accademico
Alex Marchetti Infrastruttura di supporto per l’accesso a un disco remoto Presentazione del progetto di: Reti di calcolatori L-S.
Mots, programmazione collaborativa di Ettore Ferranti.
Software di Packet-Filtering e Port-Filtering su reti TCP/IP Come filtrare il traffico di rete in transito sulle interfacce presenti, frapponendosi tra.
0 Laboratorio Informatica - SAS – Anno Accademico LIUC Alcune indicazioni Dettaglio lezioni: Prima : Michele Gnecchi – Introduzione a SAS Guide.
1 Metodo I metodi sono uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire che per permettere il.
Sistemi distribuiti Sistema distribuito indica una tipologia di sistema informatico costituito da un insieme di processi interconnessi tra loro in cui.
1 Il livello transport. Concetti fondamentali - Canale logico e canale fisico 2 Quando un segnale deve essere trasmesso, viene inviato su un Canale, cioè.
Gestire i dati: download e salvataggio. L’importanza dei dati La quasi totalità delle applicazioni hala necessità di gestire varie funzionalità relative.
Socket programming in Java La realizzazione di un server in Java consente di scrivere una sola versione eseguibile su diverse piattaforme. Il linguaggio.
Transcript della presentazione:

1 Remote Procedure Call Corso di Sistemi di Elaborazione delle Informazioni a.a 2007/2008 Autori: Alberto Colombo Fulvio Frati

2 Sommario Descrizione RPC File IDL e ACF Applicazione Client Applicazione Server Java RMI

3 Remote Procedure Call (1) Tecnologia (’80) che permette ad un programma di chiamare una funzione che si trova su un altro computer Trasparenza: la chiamata di procedura remota è eseguita in modo il più possibile analogo a una chiamata di procedura "locale“ Dettagli della comunicazione su rete sono "nascosti" all’utente

4 Remote Procedure Call (2)

5 Descrizione RPC shop.idl IDL-Compiler C-Compiler #include Linker shop_s.o shop_c.cshop_s.c shop_c.oshop.h shop_client.cppshop_server.cpp shop_client.oshop_server.o Client.exeServer.exe C-Compiler

6 File shop.IDL Interface Header Interface Body

7 File shop.IDL: Interface Header Contiene informazioni generali relative all’interfaccia Gli attributi definiti sono globali rispetto a tutta l’interfaccia UUID: assegna all’interfaccia un Universally Unique IDentifier che la identifica univocamente version: definisce la versione dell’interfaccia: è possibile avere più interfacce relative allo stesso servizio ognuna identificata da un numero di versione

8 File shop.IDL: UUID UUID: Universally Unique Identifier, identificativo standard utilizzato in informatica Esadecimale a 16 byte (o 128 bit) calcolato come la concatenazione fra numero casuale + MAC address della macchina + nanosecondi dall’adozione del calendario gregoriano Ci sono teoricamente or about 3.4 × Quindi è necessario generare UUID ogni nanosecondo di 10 9 anni per esaurire le possibili combinazioni Generabile attraverso librerie nei più comuni linguaggi o attraverso siti appositi (es. Unicità di UUID fondamentale se l’interfaccia utilizzata a livello internet, non necessaria se per servizio locale

9 File shop.IDL: Interface Body (1) Nome Interfaccia Definizione struttura Book Definizione struttura Receipt Definizione dei tipi di dato che saranno condivisi dalle due applicazioni Il servizio remoto può utilizzare tutti i tipi elementari + le strutture definite nel file IDL [string] indica di trattare il campo (unsigned char*) come un campo string

10 File shop.IDL: Interface Body (2) Definizione funzioni remote chiamate dal client ed esposte dal server L’attributo [in] indica che il parametro è passato dalla procedura chiamante alla procedura chiamata L’attributo [out] indica che il puntatore al parametro deve essere restituito dal server al client. Deve essere sempre seguito da una variabile puntatore E’ permesso indicarli contemporaneamente: [in,out] Se i dati scambiati sono tipi complessi (non definiti dal linguaggio) devono essere dichiarati all’interno del file IDL

11 File shop.ACF ACF: Application Configuration File Contiene configurazioni specifiche dell’implementazione locale e non l’interfaccia di rete Configurazione nell’esempio specifica di Visual Studio, per dettagli vedere MSDN MSDN

12 IDL Compiler Output I file ACF e IDL sono necessari al compilatore MIDL (Microsoft) per generare i proxy MIDL genera i file:  shop.h (o shop_h.h): header file da includere nei sorgenti del client e del server; contiene le signature (definizione) dei metodi remoti  shop_c.c: client proxy, implementa i metodi remoti indicati nell’IDL e richiamati dal client; gestisce la comunicazione con il server  shop_s.c: server proxy, gestisce la comunicazione con i client e l’esposizione dei metodi remoti  shop.h deve essere incluso nel codice del client e del server  shop_c.c e shop_s.c devono essere linkati, rispettivamente, con il client e il server in fase di compilazione

13 Descrizione RPC IDL-Compiler C-Compiler #include Linker shop_s.o shop.idl shop_c.cshop_s.c shop_c.oshop.h shop_client.cppshop_server.cpp shop_client.oshop_server.o Client.exeServer.exe C-Compiler

14 Applicazione Client (1) Contiene la signature (definizione) dei metodi remoti Il file shop.h creato da MIDL deve essere importato con il percorso corretto

15 Applicazione Client (2) status: stato attuale della connessione pszUuid: UUID (Universal Unique Identifier) dell’interfaccia connessa (NULL perchè unica, servizio locale) pszProtocolSequence: protocollo di rete utilizzato pszNetworkAddress: indirizzo di rete della macchina server (NULL per indirizzo locale)

16 Applicazione Client (2): Protocol Sequence Costants Identificano il protocollo di rete da utilizzare Sono specifici del sistema client e server attraverso cui avviene la comunicazione ncacn_np definisce un protocollo di comunicazione fra sistemi Windows attraverso named pipes named pipes: canali di comunicazioni utilizzati da Windows per le comunicazioni inter-processi Lista dei protocolli su sistemi Windows reperibile su MSDNMSDN

17 Applicazione Client (3) pszEndpoint: indica che canale utilizzare; la sintassi dipende dal protocollo specificato. Nel nostro caso utilizziamo la pipe con nome bookshop pszOptions: opzioni generali di rete pszStringBinding: stringa che rappresenta la connessione da stabilire (protocollo, indirizzo e endpoint) e valorizzata in seguito

18 Applicazione Client (4) RpcStringBindingCompose crea una stringa di connessione per la gestione della comunicazione Restituisce: RPC_S_INVALID_STRING_UUID se ci sono errori, RPC_S_OK (0) se tutto ok Valorizza la variabile pszStringBinding che contiene la stringa di connessione da utilizzare per stabilire la connessione e di cui è passato il puntatore

19 Applicazione Client (5) Stabilisce la connessione tra client e server a partire da pszStringBinding creata precedentemente Restituisce lo stato della connessione ed eventuali errori Valorizza server_Handle che contiene il descrittore (handle) della connessione stabilita e utilizzabile successivamente per riferirla

20 Applicazione Client (6)

21 Applicazione Client (7) Le macro RpcTryExcept e RpcExcept forniscono un meccanismo per la gestione delle eccezioni in sistemi RPC Se nel blocco RpcTryExcept si riscontra un’eccezione causata da una procedura remota, il controllo passa al blocco RpcExcept per la gestione della stessa RpcExceptionCode() restituisce il codice dell’eccezione, utilizzabile per eventuali messaggi d’errore RpcEndExcept chiude il blocco RpcTryExcept Utilizzabile solo sotto sistemi Microsoft, NON è standard ANSI C

22 Applicazione Client (8) Al termine della connessione, RpcBindingFree libera la memoria utilizzata da server_Handle Funzioni da implementare obbligatoriamente per permettere al sistema l’allocazione e la disallocazione della memoria

23 Descrizione RPC IDL-Compiler C-Compiler #include Linker shop_s.o shop.idl shop_c.cshop_s.c shop_c.oshop.h shop_client.cppshop_server.cpp shop_client.oshop_server.o Client.exeServer.exe C-Compiler

24 Applicazione Server (1) pszSecurity: parametro opzionale per la gestione della sicurezza, ignorato da quasi tutti i protocolli di rete; da impostare a NULL Protocol Sequence e Endpoint devono corrispondere tra client e server per poter stabilire un canale di comunicazione

25 Applicazione Server (2) cMinCalls: numero minimo di richieste di connessione da attendere prima di aprire i canali; RPC_C_LISTEN_MAX_CALLS_DEFAULT indica il valore imposto di default dal sistema cMaxCalls: numero massimo di connessioni gestite contemporaneamente; RPC_C_PROTSEQ_MAX_REQS_DEFAULT indica il valore imposto di default dal sistema fDontWait: = 0 (FALSE) il server attende la conclusione di una connessione per continuare (bloccante), <> 0 (TRUE) il server continua l’elaborazione anche durante una connessione (non bloccante)

26 Applicazione Server (3) RpcServerUseProtseqEp indica al sistema di utilizzare il protocollo specificato, combinato con l’entry point, per gestire l’invocazione di procedure remote, riferite a quel protocollo Restituisce lo stato della connessione ed eventuali errori Un’applicazione server può utilizzaree più protocolli per gestire diversi canali di comunicazione

27 Applicazione Server (4) RpcServerRegisterIf registra l’interfaccia nel sistema RPC; ogni richiesta verso quell’interfaccia sul protocollo di rete specificato sarà reindirizzata verso l’applicazione server Accetta come parametri l’interfaccia, l’UUID dell’interfaccia e un puntatore ad un vettore di entry point bookshop_v1_0_s_ifspec: oggetto creato dal compilatore MIDL che identifica l’interfaccia bookshop; MIDL utilizza la seguente sintassi per identificare le interfacce: _v _ _ _ifspec Restituisce lo stato della connessione

28 Applicazione Server (4): Port Mapper Le applicazioni sono associate alle relative porte attraverso il Port Mapper In sistemi Unix/Linux il Port Mapper è implementato dal demone portmap rpcinfo fornisce informazioni su porte e programmi associati $ rpcinfo -p program vers proto port tcp 111 portmapper udp 111 portmapper udp 2049 nfs udp 2049 nfs udp 2049 nfs udp status udp nlockmgr udp nlockmgr udp nlockmgr tcp status tcp nlockmgr tcp nlockmgr tcp nlockmgr udp 644 mountd tcp 645 mountd udp 644 mountd

29 Applicazione Server (5) RpcServerListen indica al sistema RPC di rimanere in attesa di chiamate a procedure remote Accetta come parametri il valore minimo e massimo di connessioni e se la comunicazione deve essere bloccante o non bloccante:  bloccante, il server attende la conclusione dell’elaborazione prima di accettare la successiva richiesta  non bloccante, più richieste in esecuzione in parallelo Restituisce lo stato della comunicazione dopo la chiamata a RpcServerListen RpcServerListen rimane in esecuzione fino a che il server non viene terminato

30 Applicazione Server (6) I metodi remoti vanno gestiti come funzioni normali, seguendo però la signature definita nel file IDL Le strutture definite nel file IDL sono visibili in tutta l’applicazione La gestione della comunicazione verso i client è a carico della classe shop_s.c generata dal compilatore MIDL, da linkare in fase di compilazione

31 Applicazione Server (7) Le funzioni per l’allocazione e la disallocazione della memoria devono essere codificate anche nel server

32 RPC e Java: RMI (cenni) RMI (Remote Method Invocation) applicazione di RPC in Java più comune Rappresentano un’evoluzione di RPC per la gestione di oggetti Permette il passaggio di tipi complessi

33 RMI: Protocollo di Comunicazione Comunicazione client/server in cui:  Il server: crea un certo numero di oggetti li rende accessibili da remoto attende le invocazioni dei client sugli oggetti  Il client: preleva la reference da uno o più oggetti distribuiti Invoca direttamente i loro metodi Nota: Nei sistemi peer to peer il ruolo di client e server può essere assunto da tutti i nodi; questi sono chiamati servant

34 RMI: Protocollo di Comunicazione Processo Client Processo Server Oggetto Server Oggetto Client SKELETON STUB RMI transport layer RMI REGISTER Lookup Register

35 RMI: Stub e Skeleton Il client invoca il metodo sullo stub non sull’oggetto. Lo stub “impacchetta” la richiesta in modo opportuno e la invia allo skeleton. Lo stub mantiene un reference dell’oggetto remoto Lo skeleton si comporta da proxy nei confronti delle richieste del client. Intercetta tali richieste e le elabora in modo che sia possibile chiamare il metodo dell’oggetto reale. Inoltre si occupa di “impacchettare” la risposta e di inviarla allo stub.

36 RMI: Comunicazione Il client ottiene un’istanza dello stub Viene chiamato il metodo sullo stub (non sull’oggetto remoto) Lo stub crea una connessione con lo skeleton sul server: esegue il marshall delle informazioni riguardanti il metodo (nome e parametri) invia le informazioni allo skeleton Lo skeleton esegue il demarshall dei dati ricevuti dal client esegue il metodo esegue il marshall del valore di ritorno del metodo invia le informazioni allo stub Lo stub esegue il demarshall dei dati ricevuti dal server e li ritorna al client

37 RMI: implementazione (cenni) 1. Definire un’interfaccia remota 2. Implementare l’interfaccia remota, definendo l’oggetto remoto 3. Sviluppare il server 4. Sviluppare il client

38 RMI: Definire un’interfaccia remota

39 RMI: implementazione (cenni) 1. Definire un’interfaccia remota 2. Implementare l’interfaccia remota, definendo l’oggetto remoto 3. Sviluppare il server 4. Sviluppare il client

40 RMI: Implementare l’interfaccia remota

41 RMI: implementazione (cenni) 1. Definire un’interfaccia remota 2. Implementare l’interfaccia remota, definendo l’oggetto remoto 3. Sviluppare il server 4. Sviluppare il client

42 Server

43 RMI: implementazione (cenni) 1. Definire un’interfaccia remota 2. Implementare l’interfaccia remota, definendo l’oggetto remoto 3. Sviluppare il server 4. Sviluppare il client

44 Client

45 Annotazioni finali  Le slide saranno pubblicate su  References: MSDN – Remote Procedure Call (RPC) Java - RMI