

Indice
Esempio
di applicazione in Visual Basic 6
Illustrare le caratteristiche principali del protocollo SOAP attraverso una applicazione implementata in Visual Basic 6 che ne esemplifichi l’ utilizzo.
Nel fare ciò non ci si è soffermati su come opera SOAP, scendendo nei dettagli implementativi. Si è cercato, invece, di fornire una panoramica sulle potenzialità di questo prodotto, con particolare attenzione al rapporto con ambienti Microsoft.
Si è dunque sorvolato sul legame con XML, su come SOAP serializza i dati e su come tratta i diversi tipi di dati.
Si è preferito dare un’ idea su quali innovazioni ha apportato SOAP ed in particolare come SOAP viene utilizzato in Visual Basic 6, utilizzando il SOAP toolkit 1.1, disponibile in rete.
Bibliografia:
“ Understanding SOAP ” K.Scriber, M.C. Stiver
Link utili:
Introduzione al SOAP
SOAP nasce, nel Dicembre del 1999, da un gruppo di sviluppatori di diversi consorzi, fra cui Microsoft e IBM, come protocollo via cavo, basato sul linguaggio XML, con lo scopo di migliorare il trasporto di dati su un sistema remoto eliminando gli ostacoli che intralciano gli attuali pacchetti di sistemi distribuiti.
Nasce per serializzare i richiami ai metodi remoti, usando un protocollo di serializzazione leggibile e disponibile, su un livello di trasporto universale. Per fare ciò, nel SOAP, si sono implementati dei metodi che permettono di :
convertire la chiamata dal metodo in un
formato adatto alla trasmissione in rete;
trasferire i dati del metodo tra i
sistemi remoti, supportare l’ attivazione/ disattivazione o il rilevamento di
un oggetto;
proteggere il sistema remoto e il
sistema locale da eventuali intrusioni o accessi non autorizzati.
SOAP ha bisogno comunque di un protocollo di trasporto qualsiasi , anche se di solito, fino ad ora, si è preferito utilizzare il protocollo HTTP. SOAP è basato sulla nuova tecnologia XML e, nella sua prima versione, utilizza per il trasporto dei pacchetti di dati il linguaggio http standard, mentre nelle ultime versioni utilizza anche ftp ed altri standard.
Il SOAP nasce con lo scopo di fornire un semplice meccanismo per lo scambio di informazioni strutturate in un ambiente decentralizzato e distribuito, mediante XML.
Il SOAP è quindi in grado di
creare un protocollo flessibile ed un formato di payload in grado di evolversi.
E’ dotato di un meccanismo in
grado di prendere porzioni di dati e spostarle da qualche parte.
Vantaggi
presenta elevata scalabilità;
è piuttosto interattivo;
non presenta indicazioni sullo stato,
soprattutto se usa HTTP, che si basa su domanda/risposta;
presenta una relativa protezione .
Svantaggi
le prestazioni sono danneggiate dalla
necessità di estrarre il pacchetto SOAP dal pacchetto trasmesso e di elaborare
le informazioni XML;
in mancanza di processori XML a schema
completo, SOAP è costretto a deserializzare i dati in modo diverso, limitando
ancora le prestazioni;
occorre spendere più tempo per
elaborare un pacchetto SOAP, perché bisogna elaborare anche le informazioni XML
in esso contenute.
In conclusione, lo scopo di SOAP è quello di specificare un protocollo via cavo da usare per semplificare architetture ad elevata distribuzione trasportando da un sistema all’ altro dati relativi al metodo, che ne ha fatto richiesta, con codifica XML apportando miglioramenti riguardo prestazioni e scalabilità.
ORGANIZZAZIONE DEL PROTOCOLLO
Un messaggio SOAP è un documento XML che consiste di un messaggio protetto SOAP obbligatorio, un’intestazione SOAP opzionale e un corpo SOAP obbligatorio.
Un messaggio SOAP contiene:
Envelope
è l’elemento superiore del documento XML che rappresenta il messaggio.
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
Header è un meccanismo generico
per l’aggiunta di funzioni ad un messaggio SOAP in modo decentralizzato.
<SOAP-ENV:Header>
<t:Transaction
xmlns:t="some-URI" SOAP-ENV:mustUnderstand="1"> 5 </t:Transaction> </SOAP-ENV:Header>
Body
è un contenitore per informazioni obbligatorie definite per il destinatario
ultimo del messaggio.
<SOAP-ENV:Body>
<m:GetLastTradePriceResponse xmlns:m="Some-URI"> <Price>34.5</Price> </m:GetLastTradePriceResponse> </SOAP-ENV:Body>
I dati condivisi dall’oggetto
saranno memorizzati nell’envelope (messaggio protetto) SOAP, che
costituisce l’elemento del documento XML o il tag XML principale. Il messaggio
protetto conterrà due o più tag child, in modo da includere l’header
(intestazione,facoltativa) e il body (corpo,necessario), oltre agli
elementi aggiuntivi che sono stati progettati.
Le nuove versioni di SOAP hanno introdotto specifiche riguardanti l’uso di diversi protocolli per il trasporto dei dati.
Nonostante ciò, c’è ancora un grande interesse nell’utilizzo del protocollo di trasporto HTTP poiché su di esso è basata l’infrastruttura INTERNET.
Il modello, su cui si sono basati gli sviluppatori, è quello Client/Server : il client avanza una richiesta al server, collegandosi ad esso, ed il server risponde alla richiesta, scarta tutti gli stati che riguardano la transazione ed infine può chiudere o meno la connessione, per essere pronto a soddisfare le richieste di altri client.
Il protocollo HTTP e il protocollo SOAP si basano entrambi su questo modello.
Un client avanza una richiesta HTTP ai metodi SOAP, invece che direttamente all’ HTTP; il server risponde con esito positivo, se è in grado di soddisfare la richiesta, o con un errore, spiegando di quale tipo. Tutto ciò avviene tramite il protocollo SOAP che, usando i propri metodi, trasferisce il contenuto XML dal client al server e, attraverso HTTP, abilita i firewall e i proxy al monitoraggio del traffico SOAP.
Il futuro di SOAP dipende ovviamente dagli utenti e dai gruppi di lavoro che potranno utilizzare o meno questa tecnologia, decretandone eventualmente il successo sul mercato.
Tuttavia si possono fare varie considerazioni relative alle specifiche SOAP che faranno capire se e quale potrebbe essere il futuro di questo nuovo protocollo.
SOAP presenta, come tutte le strutture, limiti e vantaggi come meglio si vede dalla tabella delle prestazioni.
SOAP, come ormai noto, è stato progettato come protocollo di trasporto basato su RPC, non è basato sugli oggetti e questo, secondo alcuni, per ora costituisce un limite che, per essere ovviato, comporta un sovraccarico alla struttura stessa.
SOAP avrà quindi successo sul mercato se verrà considerato una tecnologia efficace, fortunatamente SOAP è una struttura semplice da utilizzare, e questo è un aspetto molto gradito agli utenti.
Inoltre non dipende da una esclusiva piattaforma o da un esclusivo linguaggio.
“Poiché il protocollo SOAP possa essere accettato dalla comunità degli sviluppatori” secondo K.Scriber e M.C.Stiver “è necessario che si verifichino i seguenti eventi”:
Standardizzazione
aperta: SOAP può essere utilizzato da qualsiasi piattaforma,come già visto. L’obiettivo
degli sviluppatori era, infatti,
quello di individuare uno standard che potesse migliorare l’interoperabilità
tra le diverse tecnologie. SOAP è
risultato, quindi, neutrale rispetto a diversi fornitori, a diversi produttori
Hardware ed è compatibile con un qualsiasi linguaggio.
Maggiore ricerca e sviluppo: gli
sviluppatori devono impegnarsi a continuare la ricerca per ottenere un
protocollo che sia capace di soddisfare le richieste della maggior parte degli
utenti e di fornire strumenti per permettere alla restante minoranza di creare
diverse versioni del protocollo.
Creazione di estensioni e
derivazioni: i principi base di SOAP potranno essere usati per la creazione
di nuovi protocolli con funzionalità diverse da quelle fornite dall’ http.
SoaP potrebbe essere
utilizzato anche con sistemi di messaggistica
che sono modelli diversi da quello richiesta/risposta(sono infatti
architetture che permettono al server di identificare il client e di accodare
messaggi in attesa della risposta).
Strumenti di sviluppo e
documentazione: SOAP potrebbe essere integrato nella struttura di alcuni
sistemi operativi, come sembrerebbe dall’entusiasmo verso il prodotto dimostrato
da Microsoft e IBM.
Sviluppo del prodotto:
sviluppare SOAP significa dotarlo di quei servizi che i sistemi distribuiti
hanno, ma che mancano, per il momento, in questo protocollo, come, per esempio,
la protezione o l’autenticazione.
In conclusione se e quando SOAP diventerà di uso comune, sarà possibile assistere all’introduzione di nuovi strumenti e di informazioni che forniranno nuovi approcci all’utilizzo di questa tecnologia.
L’approccio Microsoft al SOAP toolkit consiste nella creazione di strumenti che semplifichino lo sviluppo di servizi compatibili con SOAP sul web.
Nell’attesa dell’uscita di Visual Studio .net, il protocollo SOAP può essere integrato nel Visual Basic 6 grazie al SOAP toolkit scaricabile all’indirizzo:
http://msdn.microsoft/xml/general/toolkit
SDL (Service Description Language)
L’ SDL è un linguaggio utilizzato per descrivere i servizi accessibili attraverso il web, identificando i metodi utilizzabili da un web service anche in caso non se ne conoscano le proprietà.
SDL rappresenta uno schema che i servizi web utilizzano per esprimere le proprie capacità.
Il SOAP toolkit 1.1 è in grado di interrogare un oggetto COM o un file SDL per creare il listener(script di ascolto asp) che collega il servizio del web service al listener di SOAP.
SOAP TOOLKIT
Il SOAP toolkit serve a costruire ed usare una struttura client / server; essa include l’oggetto ROPE, service description, code generation wizard.
ROPE (Remote Object Proxy Engine) è una libreria dll che provvede a far funzionare il processo RPC nel modo più semplice possibile.
Service description e code generation wizard generano automaticamente tutto ciò di cui ha bisogno un server per funzionare, come verrà sviluppato nel paragrafo “come costruire un server SOAP”.
ROPE è stato creato per rendere più semplice il lavoro degli sviluppatori che utilizzano Visual Basic per programmare.
Esso si serve di tutti i dettagli relativi all’implementazione SOAP e consente agli sviluppatori di preoccuparsi solo della creazione degli oggetti, del richiamo dei metodi e dell’utilizzo dei risultati.
ROPE costituisce un potente componente COM, che fornisce alcuni oggetti distinti che possono essere usati dal client e dal server.
Due sono gli oggetti principali che lo compongono: Proxy e Soappackager.
L’oggetto Proxy permette al client di accedere al Web Service come se fosse un oggetto COM locale, come avviene per un qualsiasi linguaggio abilitato al COM che, grazie ad esso, ottiene un accesso semplice e rapido al Web Service.
Quando il Proxy è indirizzato ad un Web Service, attraverso il caricamento dei file forniti dal service description, tutti i metodi presenti nel Web Services vengono abilitati per soddisfare le richieste dell’applicazione client.
L’oggetto Soappackager è usato sia dal client sia dal server per accedere ai messaggi di tipo SOAP.
Soappackager fornisce un interfaccia sofisticata che consente di operare direttamente con il payload SOAP, gestendo anche i pacchetti SOAP di richiesta e risposta.
L’oggetto Soappackager estende il modello dell’ oggetto ROPE con altri quattro oggetti:
ServiceDescriptors: è una raccolta di
oggetti di metodo che permette l’accesso ai singoli elementi del service
description, tra cui i listener asp, i metodi implementati e i parametri dei
metodi.
SDEndPointInfo: è dotato dell’unica
proprietà di restituire l’ URI per l’ endpoint determinato.
SDMethodInfo: contiene le informazioni
relative ai metodi tra cui il nome del metodo, la struttura di input e output e
così via.
SDParameterInfo: descrive i
parametri per un oggetto SDMethodInfo,tra le informazioni sono comprese il
nome,il tipo e la direzione del
parametro. La direzione indica se il
parametro è in ingresso o in uscita.
L’oggetto ROPE è supportato dall’utility dell’oggetto WireTransfer che è un aiuto per inserire o recuperare i campi di intestazione nel pacchetto http o nel payload di SOAP.

La struttura dell’oggetto ROPE
Esempio di applicazione in VB6