Progetto realizzato da: Francesco Seccia Matr. 666784 Marco Spinelli Matr. 667109 Motivazioni alla base dell’asincronismo Web Services asincroni Metodi di correlazione asincrona Pattern asincroni semplici Pattern asincroni complessi Implementazione dei pattern asincroni Conclusioni 2 Necessità di latenza temporale Funzioni complesse non sempre garantiscono risposte istantanee (Sincrone) Privatezza della logica interna di business Disaccoppiamento dell’interazione non solo temporale ma anche funzionale Costi 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à 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) 3 Sistemi software progettati per supportare interazioni di interoperabilità asincrone macchina-macchina su una rete Problemi da affrontare Lunga persistenza delle informazioni inerenti allo stato della chiamata Correlazione tra richieste e risposte 4 Correlazione 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: Non esiste un protocollo standard Relega l’utilizzo dei WS a un ambito chiuso (Scarsa interoperabilità) Correlazione tramite semantica applicativa Correlazione implicita all’interno dei dati applicativi 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 5 Correlazione tramite meta-dati di conversazione I meta-dati sono dati “ausiliari” di supporto al workframe, utilizzati per effettuare la correlazione 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: Mancanza di standardizzazione 6 Correlazione tramite meta-dati di conversazione Tramite il “Contesto di conversazione” Facile estrapolazione dei dati applicativi Solo ConversationID per la correlazione Basso Overhead dovuto ai meta-dati Possibile mismatch delle risposte 7 Correlazione tramite meta-dati di conversazione Tramite il “Contesto dell’operazione” Massimo potere espressivo Risolve il problema del mismatch Carico maggiore per il sistema Tramite “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 8 “Polling” pattern Estrema semplicità (Thin client) Basato su tecnologie e Modus Operandi collaudate Bassa efficienza Ritardo della notifica Request-response di invio della richiesta Request-response per sollecitare la risposta 9 “Callback” pattern Alta efficienza Possibilità di “P2P” Possibilità di specificare l’indirizzo di ritorno Il client deve pubblicare un servizio che accetta chiamate Standard non ancora consolidati Richiesta con identificativo e indirizzo di ritorno Risposta inviata all’indirizzo di ritorno 10 “Callback” pattern con Acknowledgement Vantaggi del “Callback” tradizionale Consente la notifica di ricezione, rendendo possibile la verifica di non-ripudiazione (Fondamentale nel B2B) Svantaggi del “Callback” tradizionale Duplicazione del n° di messaggi Ogni operazione coinvolta è bidirezionale 11 “Publish-Subscribe” pattern Vantaggi del “Callback” tradizionale Svantaggi del “Callback” tradizionale Il cliente riceve più di una risposta Può essere esteso con un meccanismo di Acknowledgement 12 Pattern “Multi-Attore” (caso “Callback”) Interazione contemporanea tra più attori Anche gli altri pattern possono essere estesi in maniera simile 13 OASIS 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 14 Utilizzo dei buffer Risolve problemi di rete Risolve problemi di “Busy” del WS Capacità del buffer limitata Costi aggiuntivi 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 15 “Callback” pattern Invio OK INPUT: • Parametri espliciti • XML Document Invia la richiesta tramite un Errore di trasporto servizio One-way Pubblica un altro servizio One-way per ricevere la risposta INPUT: • Parametri espliciti • XML Document Pubblica un servizio One-way INPUT: • Parametri espliciti • XML Document Link da applicazione Coupling risposta per ricevere le richieste Invio OK Quando la risposta è pronta viene spedita tramite un altro servizio One-way Errore di trasporto 16 “Publish-Subscribe” pattern Invio OK Invia la richiesta tramite un INPUT: • Parametri espliciti • XML Document servizio One-way Errore di trasporto Pubblica un altro servizio One-way per ricevere le risposte che via via saranno inviate INPUT: • Parametri espliciti • XML Document INPUT: • Parametri espliciti • XML Document Link da applicazione Coupling risposta Pubblica un servizio Oneway per ricevere le Invio OK richieste Ogni volta che l’informazione è disponibile viene spedita tramite un altro servizio Oneway Errore di trasporto 17 “Polling” pattern Invia la richiesta e riceve la INPUT: • Parametri espliciti • XML Document INPUT: • CID conferma tramite un servizio Request-response Pubblica un altro servizio Request-response per ricevere la risposta e dare la conferma Pubblica un servizio INPUT: • Parametri espliciti • XML Document INPUT: • CID Request-response per ricevere le richieste e inviare un msg di avvenuta ricezione Quando la risposta è pronta viene spedita tramite un altro servizio Requestresponse che si occupa anche della conferma 18 Mancanza di uno standard universalmente riconosciuto Mosaico di proposte indipendenti Tra 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 chiamata asincrona a WS Sviluppi futuri: Gestione delle eccezioni e impatto sulle comunicazioni asincrone 19 Francesco Seccia Matr. 666784 Marco Spinelli Matr. 667109 20