Progetto realizzato da:Progetto realizzato da:
Francesco Seccia Matr. 666784Francesco Seccia Matr. 666784
Marco Spinelli Matr. 667109Marco Spinelli Matr. 667109
2
Motivazioni alla base dell’asincronismoMotivazioni alla base dell’asincronismo
Web Services asincroniWeb Services asincroni
Metodi di correlazione asincronaMetodi di correlazione asincrona
Pattern asincroni sempliciPattern asincroni semplici
Pattern asincroni complessiPattern asincroni complessi
Implementazione dei pattern asincroniImplementazione dei pattern asincroni
ConclusioniConclusioni
3
Necessità di latenza temporaleNecessità di latenza temporale
Funzioni complesse non sempre garantiscono risposte istantanee (Sincrone)
Privatezza della logica interna di businessPrivatezza della logica interna di business
Disaccoppiamento dell’interazione non solo temporale ma anche funzionale
Costi ed efficienzaCosti ed efficienza
Maggiore scalabilità (il sistema può essere progettato in funzione del carico medio e non di quello di picco)
Maggiore affidabilità (Es. E-Mail)
AccessibilitàAccessibilità
Si risolve il problema della caduta di connettività
Si consente un accesso affidabile anche a dispositivi che non presentano una connessione “always on” (Es. dispositivi Wireless)
4
Sistemi software progettati per supportare interazioni di Sistemi software progettati per supportare interazioni di interoperabilità asincrone macchina-macchina su una reteinteroperabilità asincrone macchina-macchina su una rete
Problemi da affrontareProblemi da affrontare
Lunga persistenza delle informazioni inerenti allo stato della chiamata
Correlazione tra richieste e risposte
5
Correlazione a livello di trasportoCorrelazione a livello di trasporto
Esistono protocolli di trasporto che supportano nativamente l’asincronismo (a differenza di HTTP)
Mette a disposizione meccanismi per recuperare lo stato e i messaggi di risposta
Implementazione di client e server più semplici
Problemi:Problemi:
Non esiste un protocollo standard
Relega l’utilizzo dei WS a un ambito chiuso (Scarsa interoperabilità)
Correlazione tramite semantica applicativaCorrelazione tramite semantica applicativa
Correlazione implicita all’interno dei dati applicativi
Problemi:Problemi:
La struttura dei dati applicativi deve essere condivisa tra cliente e fornitore
I formati dei codici potrebbero non essere adatti per l’implementazione
Non esiste separazione tra dati applicativi e problemi di implementazione
6
Correlazione tramite meta-dati di conversazioneCorrelazione tramite meta-dati di conversazione
I meta-dati sono dati “ausiliari” di supporto al workframe, utilizzati per effettuare la correlazione
Obiettivi:Obiettivi:
Gestione della conversazione tramite info che descrivono i servizi da chiamare e l’ordine di tali chiamate
Memorizzazione e data warehousing di messaggi, operazioni e conversazioni tra WS
Problema:Problema:
Mancanza di standardizzazione
7
Correlazione tramite meta-dati di conversazioneCorrelazione tramite meta-dati di conversazione
Tramite il “Contesto di conversazione”“Contesto di conversazione”
Facile estrapolazione dei Facile estrapolazione dei dati applicatividati applicativi
Solo ConversationID per la Solo ConversationID per la correlazionecorrelazione
Basso Overhead dovuto ai Basso Overhead dovuto ai meta-datimeta-dati
Possibile mismatch delle Possibile mismatch delle risposterisposte
8
Correlazione tramite meta-dati di conversazioneCorrelazione tramite meta-dati di conversazione
Tramite il “Contesto dell’operazione”“Contesto dell’operazione”
Tramite “Tutti i meta-dati di conversazione”“Tutti i meta-dati di conversazione”
Si implementa l’intera struttura di meta-dati
Ha lo stesso potere espressivo della tipologia precedente
Aggiunge Overhead senza un beneficio reale
Massimo potere espressivoMassimo potere espressivo
Risolve il problema del Risolve il problema del mismatchmismatch
Carico maggiore per il Carico maggiore per il sistemasistema
9
““Polling” patternPolling” pattern
Request-response di invio della richiesta
Request-response per sollecitare la risposta
Estrema semplicità (Thin client)Estrema semplicità (Thin client)
Basato su tecnologie e Modus Basato su tecnologie e Modus Operandi collaudateOperandi collaudate
Bassa efficienzaBassa efficienza
Ritardo della notificaRitardo della notifica
10
““Callback” patternCallback” pattern
Richiesta con identificativo e indirizzo di ritorno
Risposta inviata all’indirizzo di ritorno
Alta efficienzaAlta efficienza
Possibilità di “P2P”Possibilità di “P2P”
Possibilità di specificare Possibilità di specificare l’indirizzo di ritornol’indirizzo di ritorno
Il client deve pubblicare un Il client deve pubblicare un servizio che accetta chiamateservizio che accetta chiamate
Standard non ancora consolidatiStandard non ancora consolidati
11
““Callback” pattern con AcknowledgementCallback” pattern con Acknowledgement
Ogni operazione coinvolta è bidirezionale
Vantaggi del “Callback” Vantaggi del “Callback” tradizionaletradizionale
Consente la notifica di Consente la notifica di ricezione, rendendo possibile la ricezione, rendendo possibile la verifica di non-ripudiazione verifica di non-ripudiazione ((Fondamentale nel B2BFondamentale nel B2B))
Svantaggi del “Callback” Svantaggi del “Callback” tradizionaletradizionale
Duplicazione del n° di messaggiDuplicazione del n° di messaggi
12
““Publish-Subscribe” patternPublish-Subscribe” pattern
Il cliente riceve più di una risposta
Può essere esteso con un meccanismo di Acknowledgement
Vantaggi del “Callback” Vantaggi del “Callback” tradizionaletradizionale
Svantaggi del “Callback” Svantaggi del “Callback” tradizionaletradizionale
13
Pattern “Multi-Attore” Pattern “Multi-Attore” (caso “Callback”)(caso “Callback”)
Interazione contemporanea tra più attori
Anche gli altri pattern possono essere estesi in maniera simile
14
OASIS ASAP Standard ProposalOASIS ASAP Standard Proposal
Il servizio cliente “Observer” invia una richiesta SOAP al servizio “Factory”
Il servizio “Factory” genera una istanza di servizio di cui si rende noto l’URI
L’istanza del servizio può essere utilizzata o modificata dal client attraverso messaggi SOAP
15
Utilizzo dei bufferUtilizzo dei buffer
I buffer dei clienti accumulano le richieste di servizio in uscita e le inoltrano secondo una politica FIFO
Il buffer del WS accumulano i Job in ingresso e li mandano in esecuzione secondo una politica FIFO
Risolve problemi di reteRisolve problemi di rete
Risolve problemi di “Busy” Risolve problemi di “Busy” del WSdel WS
Capacità del buffer limitataCapacità del buffer limitata
Costi aggiuntiviCosti aggiuntivi
16
““Callback” patternCallback” pattern
Pubblica un servizio One-way Pubblica un servizio One-way per ricevere le richiesteper ricevere le richieste
Quando la risposta è pronta Quando la risposta è pronta viene spedita tramite un altro viene spedita tramite un altro servizio One-wayservizio One-way
Invia la richiesta tramite un Invia la richiesta tramite un servizio One-wayservizio One-way
Pubblica un altro servizio Pubblica un altro servizio One-way per ricevere la One-way per ricevere la rispostarisposta
INPUT:• Parametri espliciti• XML Document
Invio OKInvio OK
Errore di trasportoErrore di trasporto
INPUT:• Parametri espliciti• XML Document
INPUT:• Parametri espliciti• XML Document
Link da applicazioneCoupling risposta
Invio OKInvio OK
Errore di trasportoErrore di trasporto
17
““Publish-Subscribe” patternPublish-Subscribe” pattern
Pubblica un servizio One-Pubblica un servizio One-way per ricevere le way per ricevere le richiesterichieste
Ogni volta che l’informazione Ogni volta che l’informazione è disponibile viene spedita è disponibile viene spedita tramite un altro servizio One-tramite un altro servizio One-wayway
Invia la richiesta tramite un Invia la richiesta tramite un servizio One-wayservizio One-way
Pubblica un altro servizio Pubblica un altro servizio One-way per ricevere le One-way per ricevere le risposte che via via saranno risposte che via via saranno inviateinviate
INPUT:• Parametri espliciti• XML Document
Link da applicazioneCoupling risposta
Invio OKInvio OK
Errore di trasportoErrore di trasporto
Invio OKInvio OK
Errore di trasportoErrore di trasportoINPUT:• Parametri espliciti• XML Document
INPUT:• Parametri espliciti• XML Document
18
““Polling” patternPolling” pattern
Pubblica un servizio Pubblica un servizio Request-response per Request-response per ricevere le richieste e ricevere le richieste e inviare un msg di inviare un msg di
avvenuta ricezioneavvenuta ricezione
Quando la risposta è pronta Quando la risposta è pronta viene spedita tramite un viene spedita tramite un altro servizio Request-altro servizio Request-response che si occupa response che si occupa anche della confermaanche della conferma
Invia la richiesta e riceve la Invia la richiesta e riceve la conferma tramite un conferma tramite un
servizio Request-responseservizio Request-response
Pubblica un altro servizio Pubblica un altro servizio Request-response per Request-response per ricevere la risposta e dare la ricevere la risposta e dare la confermaconferma
INPUT:• Parametri espliciti• XML Document
INPUT:• CID
INPUT:• Parametri espliciti• XML Document
INPUT:• CID
19
Mancanza di uno standard universalmente riconosciutoMancanza di uno standard universalmente riconosciuto
Mosaico di proposte indipendenti
Tra le proposte individuate si evidenziano alcune idee chiaveTra le proposte individuate si evidenziano alcune idee chiave
Esistenza di due livelli di asincronismo
A livello di singola chiamata (Asincronismo “in the small”)
A livello del contesto di conversazione (Asincronismo “in the large”)
Le “unit” WebML introdotte coprono ogni possibile tipologia di Le “unit” WebML introdotte coprono ogni possibile tipologia di chiamata asincrona a WSchiamata asincrona a WS
Sviluppi futuri:Sviluppi futuri:
Gestione delle eccezioni e impatto sulle comunicazioni asincrone
20
Francesco Seccia Matr. 666784Francesco Seccia Matr. 666784
Marco Spinelli Matr. 667109Marco Spinelli Matr. 667109
Top Related