Generazione di codice dinamico per la realizzazione di catene di servizi componibili Progetto di Reti di Calcolatori LS A.A. 2007/08 Studente: Silvia Cereda.

Slides:



Advertisements
Presentazioni simili
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA
Advertisements

Massa Laura Mela Enrica
IN QUESTA PRESENTAZIONE…
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
Architettura Java/J2EE
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
Elementi fondamentali dell’ Architettura di di un elaboratore elettronico.
La codifica di Huffman Un'implementazione in C++ (parte del materiale è opera di Mark Nelson, Dr. Dobb’s Journal, Gennaio 1996)‏
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica PROBLEMI E ALGORITMI LINGUAGGIO MACCHINA.
Studente Relatore Controrelatore Committente Sara Cervone
Chi siamo.
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
Analisi e miglioramento del processo di manutenzione elicotteri
Protocollo di trasmissione tramite tecnologia Barryvox
Piattaforma per industrie stampaggio
Java World Matrici.
Java World Introduzione.
Corso di Ingegneria del Web A A
Alessandro Leonardi, ETIFOR Srl
Gestione delle fasi del tirocinio attraverso un’ App Android e interfaccia Web e relativa gestione documentale della tesi Università degli Studi di Napoli.
RAPPORTO DI RIESAME REPORT 23/07/2015 Presidio della Qualità.
Cartesio – Back End Farine Antoine Giulietti Raffaello Libro Pietro
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
EasyGraph Dynamic web-based dashboard
Generazione di codice dinamico per la realizzazione di catene di servizi componibili Matteo Fazi – matr
Dati in rete Appunti.
Pre-processing e rendering di mappe GIS per IoT platforms
REX - Istruzioni tipo IKEA
Programmazione per la Musica | Adriano Baratè
PROGETTO DI RETI DI CALCOLATORI L-S
Studente/i Relatore Correlatore Committente Pagano Pedro Daniel
Sistema di Analisi e di Acquisizione
Controlli Automatici - A.A. 2003/2004
L’approccio EY per una sostenibilità a 360°
Analysis framework of distributed thread and malware data-sources
PROGETTO ATTI.CO.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Introduzione alle griglie computazionali
Oggetti della valutazione
I FILES AD ACCESSO SEQUENZIALE
Obiettivi del progetto
Sviluppo di server web e sistema di caching per contenuti dinamici
JAPS: una soluzione “Agile”
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Anno Accademico 2010 – 2011 Corso di Progettazione dei Sistemi di Controllo Prof. Luca Schenato Prof. Gianluigi Pillonetto Gottardo Giuseppe, matr
Sviluppo di un'applicazione web per l'utilizzo del framework SparkER
Corso Java Introduzione.
La trasformazione tecnologica 4.0
Controllo e microprogrammazione
Corso Java Esercizi.
Progetto di Tecnologie Web 2014/2015 THERMOWEB
Predisposizione e presentazione della domanda di nullaosta
OBJECT ORIENTED DATABASE
Programmare.
Emergency Department Wait Time Prediction
Esercitazioni di C++ 31 dicembre 2018 Claudio Rocchini IGMI.
Corso Java Matrici.
© 2007 SEI-Società Editrice Internazionale, Apogeo
APPUNTI SUL LINGUAGGIO C
Java Matrici.
Oggetti della valutazione
Curva S e Matrice dei Rischi
Predisposizione e presentazione della domanda di nullaosta
UNIVERSITÀ DI MODENA E REGGIO EMILIA
Strategie di progetto Si possono utilizzare le strategie tipiche dello sviluppo di un processo di ingegnerizzazione (es. ingegneria del software). Strategie.
Oggetti della valutazione
concetti ed applicazioni
Java Introduzione.
Studente/i Relatore Correlatore Committente Maria Caraccio
1Il processo produttivo
Transcript della presentazione:

Generazione di codice dinamico per la realizzazione di catene di servizi componibili Progetto di Reti di Calcolatori LS A.A. 2007/08 Studente: Silvia Cereda (matr )

Obiettivo Creazione di un ambiente di integrazione e composizione di servizi atomici dislocati su nodi diversi Contesto Java EE Servizi come metodi invocabili su EJB Utilizzo di un supporto per la generazione dinamica del bytecode Maggiore efficienza rispetto all'uso di un compilatore

Manipolazione del bytecode Manipolazione dinamica del codice come requisito fondamentale in sistemi aperti a variazioni Maggiore efficienza rispetto all'utilizzo di un compilatore Reflection utile ma poco adatta ad invocazioni frequenti Necessità di agire anche su codice preesistente

Framework considerati BCEL ( ) Implementazione ad “alto livello” Non vengono maneggiati i dettagli interni del formato delle classi Java Utilizzo di API per i vincoli statici delle classi Componenti binari, strutture dati delle specifiche JVM,... API per contenuto dinamico Creazione e trasformazione di metodi e attributi

Framework considerati Serp ( ) Obiettivo: massimizzare l'efficienza dei costi minimizzando i costi Facilità di utilizzo Possibilità di lavorare con metodi di “alto livello” potendo accedere anche ai dettagli di basso livello Lentezza nella generazione delle classi Dispendio di memoria per la generazione delle classi

Framework considerati ASM ( ) Elaborazione delle classi sequenziale basata sull'utilizzo di un Visitor Non mantiene strutture persistenti in memoria Elaborazione a catena delle classi ClassReader per il parsing del bytecode ClassAdapter per filtrare l'output ClassWriter per scrivere la classe

Confronto performance ASM è la soluzione più efficiente! A) Utilizzo di un classloader standard B) Serializzazione e deserializzazione di ogni classe prima della compilazione C) Ricomputazione, dopo l'esecuzione di B), della massima grandezza dello stack di ogni metodo Confronto tra le performance dei framework analizzati: misura del tempo di caricamento di un “gran numero di classi” da un.jar Fonte:

Architettura

Brick: contiene un servizio elementare Executor: accetta le richieste, ottiene la catena desiderata dal Coordinator, la esegue e restituisce il risultato all'utente Coordinator: interpella un ClassLoader per avere la catena esistente,se non esiste avverte all'ASMBlackSmith di crearla ASMBlackSmith: crea il bytecode delle catene

Richiesta catena - askChain()

ASMBlackSmith Riceve i Brick ordinati che formano la catena Invoca ArrayList build(ArrayList bricks) Delega all'ASMHammer la costruzione della catena Parte statica Inizializzazione del sistema, signature, costruttore Parte dinamica Per ogni Brick crea il bytecode relativo al servizio Restituisce il bytecode della catena formata dalla serie dei Brick

Chain Invocazione dal cliente per l'esecuzione della catena: Object execute(actualPar) actualPar: array di parametri d'invocazione ordinati Object per la generalizzazione dei parametri di ritorno Chain implementa l'interfaccia IChain e il suo metodo execute

Conclusioni E' stato realizzato un servizio di composizione di servizi elementari dislocati su nodi diversi E' stata realizzata un'interfaccia web per la registrazione e utilizzo di tali servizi e la composizione ed utilizzo di catene di servizi Alta efficienza data dall'utilizzo del framework ASM A regime In fase di compilazione delle cateen

Sviluppi futuri Aggiunta di controlli di sicurezza nelle fasi di utilizzo Sviluppo di un framework completo per la composizione di servizi Creazione ed utilizzo di un meta-linguaggio per la composizione di servizi