Progetto SOAP

 

 

 

Indice

 

 

*   Scopo del progetto

*   Introduzione al SOAP

*   Innovazioni di SOAP

*   Struttura di SOAP

*   Futuro di SOAP

*   SOAP e Visual Basic

*   Esempio di applicazione in Visual Basic 6

*   Come costruire un server SOAP

 

 

 

 

Scopo del progetto

 

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:

www.discuss.develop.com

www.microsoft.com

www.w3.org

www.soapclient.com

www.develop.com/soap

 

 

 

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.

 

 

 

Innovazioni di SOAP

 

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.

 

 

ANALISI DELLE PRESTAZIONI SOAP

 

 

*   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à.

 

 

Struttura di SOAP

 

 

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.

 

 

TRASPORTO MEDIANTE HTTP

 

 

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.

 

 

 

 

 

Futuro di 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. 

 

 

SOAP e Visual Basic

 

 

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

 

 

Come costruire un server SOAP

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Hosted by www.Geocities.ws

1