MokaByte 54 - Luglio/Agosto  2001
Foto dell'autore non disponibile
di
Massimiliano Bigatti
Web Services 
III parte: La tecnologia UDDI
Dopo aver affrontato SOAP (Simple Object Access Protocol) e WSDL (Web Services Definition Language), completiamo la descrizione delle tecnologie di base che concorrono a formare la visione dei Web Services di IBM e Microsoft, affrontando la tecnologia UDDI.
Obiettivi
UDDI (Universal Description. Discovery and Integration) è un’iniziativa nata per creare un registro mondiale di società e servizi. Per servizi non si intendono solo Web Services (quindi SOAP e WSDL) ma anche attività diverse quali il Web design, il trasporto o lo sviluppo di software su commessa. Il raggio di azione di UDDI è quindi molto ampio e quindi non rivolto solo ai Web Services.
UDDI è gestito dal consorzio UDDI (http://www.uddi.org) che annovera tra i suoi membri, tra l’altro, IBM, Microsoft, Ariba ed anche SUN Microsystems (che però sponsorizza anche l’altro gruppo di lavoro con obiettivi simili, l’ebXML). Lo scopo di questo consorzio di aziende è quello di sviluppare un “framework aperto ed indipendente dalla piattaforma per descrivere servizi, individuare società e integrare servizi di business utilizzando Internet”. La tecnologia UDDI è quindi proprietaria di questo consorzio, ed anche se si basa su tecnologie aperte definite dal W3C (come XML, HTTP e DNS), è una tecnologia attualmente non “propriamente aperta”.
UDDI si posiziona dunque in un contesto meno tecnico ma più orientato alle problematiche commerciali delle società, anche se fornisce gli strumenti per catalogare servizi basati su SOAP e WSDL. Lo stack tecnologico diviene dunque quello presente in fiigura 1.
 


Figura 1 – Stack di tecnologie dei Web Services


L’obiettivo finale di UDDI è quello di integrare le competenze delle varie società di diversi settori e centralizzando queste informazioni in un registro condiviso tra più partner accessibile dal Web.
Il funzionamento di UDDI si può riassumere in cinque passaggi:

  1. Le società di software, le organizzazioni per gli standard ed i programmatori popolano il registro con le descrizioni dei differenti tipi di servizi (in questo caso Web Services);
  2. Le società che erogano servizi popolano il registro con le descrizioni dei servizi che propongono, facendo riferimento ai tipi di servizio precedentemente catalogati;
  3. Il registry assegna un indicativo univoco per ogni tipo di servizio e per ogni società registrata;
  4. I motori di ricerca, le applicazioni e simili interrogano il registro per scoprire i servizi delle società erogatrici;
  5. Le società fruitrici utilizzano queste informazioni per facilitare l’integrazione tra tutte le società tramite il Web.
Questo processo è riassunto in figura 2.
 
 


Figura 2 - Funzionamento UDDI


 



Un esempio di funzionamento di UDDI può essere il seguente:

  1. La società Harbour Metals crea un sito online con un fornitore di applicazioni locale;
  2. Il fornitore registra la Harbour Metals presso il registro UDDI;
  3. I motori di ricerca interrogano il registro, salvano le informazioni e si collegano ai servizi di Harbour;
  4. I clienti finali oppure altre società ottengono le informazioni dai motori di ricerca ed entrano in affari con la Harbour Metals.
In questo modo anche società piccole di importanza locale hanno modo di farsi conoscere su tutto il pianeta.
 
 
 

Implementazione
I tre elementi principali del framework UDDI si possono riassumere nei seguenti punti:

  • descrizione. La descrizione non si riferisce semplicemente alla definizione del servizio web, che ben può essere implementata da un documento WSDL, ma piuttosto a descrizione legate alle società erogatrici di Web Services, alla categorizzazione del servizio (in modo simile alle categorie di Yahoo!, ad esempio) ed alle informazioni tecniche del servizio. Queste ultime contengono informazioni di semantica e non di sintassi, come nel caso dei WSDL;
  • individuazione. Il framework di UDDI supporta la pubblicazione, l’individuazione ed il collegamento a servizi web. Queste caratteristiche sono implementate tramite un registry UDDI (vedi sotto) e possiamo immaginarli come i registry di RMI evoluti, anche se ricordano più i registry Jini. L’individuazione avviene a design-time;
  • integrazione. L’integrazione dei servizi web all’interno delle proprie applicazioni avviene tramite l’utilizzo di tModels. Questi sono metadati che definiscono la semantica dei servizi (parte della descrizione vista sopra) ottenuti con i servizi di identificazione.
Le informazioni fornite dai servizi UDDI possono essere catalogate in tre gruppi, che riflettono l’organizzazione vista sopra e con una nomenclatura che ricorda le più concrete e consolidate rubriche telefoniche, come le pagine gialle (anche se con un approccio all’americana).
UDDI definisce:
  • Pagine bianche. Contiene le informazioni relative al nome, indirizzo, numero telefonico ed altre informazioni sui contatti di una determinata azienda erogatrice di servizi Web. Queste informazioni vengono pubblicate sul registro tramite l’oggetto businessEntity che conterrà anche le informazioni a proposito dei servizi;
  • Pagine gialle. Descrive la categorizzazione delle società e dei servizi e permette di individuare un particolare servizio Web per la successiva invocazione. L’informazione è contenuta in un oggetto businessService.
  • Pagine verdi. Riporta informazioni tecniche a proposito dei Web Services forniti da una particolare società. Consente l’integrazione con i servizi esterni ed avviene tramite tModels e bindingTemplate. Alcune informazioni fornite sono gli URL, le informazioni sui nomi e gli argomenti dei metodi ed altre informazioni tecniche.


Registry UDDI
I registry UDDI sono il cuore della tecnologia UDDI l’implementazione reale delle API definite dal consorzio. Se siete familiari con la tecnologia CORBA, una parte di UDDI – quella relativa alle “yellow pages” precisamente – ricorda da vicino i servizi Trader CORBA. Il servizio Trader è una sorta di repository di tipi di servizio e consente, tramite la funzione di Register di pubblicare un servizio, e tramite quella di Lookup la sua ricerca.
Alcuni dei concetti di UDDI non sono quindi nuovi, ma rielaborazioni del passato (vedi CORBA e Jini), ricucinati in salsa Internet.
L’architettura di UDDI ha un approccio distribuito, in modo simile ai DNS di Internet, in questo modo ogni nodo è sempre aggiornato, ogni giorno, con tutte le informazioni del registro. Ad oggi nodi UDDI sono implementati da IBM, Ariba, Microsoft ed UDDI.org.
Le motivazioni che hanno portato alla creazione di un registro distribuito non sono solo tecniche (il risultato è una ampia disponibilità dell’infrastruttura), ma sono anche orientate a rafforzare la compatibilità tra i diversi produttori dimostrando un certo grado di apertura l’un con l’altro e per evitare di legare UDDI alla tecnologia specifica di un singolo produttore.
È chiaro come le informazioni relative alle società ed ai servizi siano dati preziosi (un po’ come i dati personali che raccolgono i vari siti web che erogano servizi) e prima o poi dovrà essere chiarito chi gestirà questo vasto patrimonio informativo.
Su Internet sono disponibili alcune implementazioni dei registry UDDI, in particolare segnaliamo:

  • jUDDI – www.juddi.org; Una implementazione open source che però attualmente è ancora in versione pre-alpha;
  • IBM UDDI4J - http://oss.software.ibm.com/developerworks/opensource/uddi4j/. Una implementazione Java di UDDI da parte di IBM, rilasciata come codice open source.
  • IBM Web Services Toolkit (vedi [7]); oltre a contenere un registro UDDI descritto sopra (UDDI4J), fornisce anche una implementazione di SOAP e WSDL più altre particolarità, tra cui un plug-in per browser per abilitarli alla navigazione del registro UDDI (una funzionalità simile verrà integrata da Microsoft in una prossima versione di Internet Explorer);
Tramite il toolkit IBM è possibile implementare un proprio registro UDDI, privato, per sperimentare la tecnologia senza dover accedere a registri esterni. Questo è importante soprattutto in fase di test [9], ma anche per implementare “Internal Enterprise Application Integration UDDI”, cioè registri interni all’azienda che consentono di coordinare i servizi erogati dai singoli dipartimenti per tutta la società. In alternativa, è possibile utilizzare i registry di test disponibili su http://www-3.ibm.com/services/uddi/.
 
 
 

API
Le API di UDDI sono un po’ particolari. Non sono classiche API Java che possiamo consultare con un browser nel classico formato Javadoc, sono piuttosto delle strutture XML che definiscono richieste e risposte per ciascuna funzione. La particolarità è che il dialogo è inserito all’interno di messaggi SOAP 1.1 che sono sempre di tipo sincrono (viene inviata una risposta per ogni richiesta).
Le due API principali riguardano l’interrogazione e la pubblicazione.
L’interrogazione (inquiry) fornisce due tipi di chiamate:

  • per una visione più ampia del registro, basata su più possibilità di ricerca, si utilizzano le chiamate del tipo find_xx;
  • per una chiamata più diretta, quando sia noto il contesto, si utilizzano le chiamate get_xx.
Le API per la pubblicazione consistono invece in:
  • quattro chiamate del tipo save_xx;
  • quattro chiamate del tipo delete_xx;
ciascuna chiamata opera sulle quattro entità presenti nel modello informativo di UDDI (Fig.2) – businessEntity, businessService, bindingTemplate, tModel.
 


Figura 3 – Modello informativo di UDDI


 
 

L’invocazione avviene tramite le informazioni contenute nell’oggetto bindingTemplate.

Conclusioni
La cosa positiva di UDDI è che funziona ed è attualmente in linea. Microsoft ed IBM forniscono online la possibilità di registrarsi e di cercare servizi presso il registry, e basta provare per verificare come (almeno la release 1.0) UDDI sia già in funzione.
Nonostante ciò, prima di vedere una vasta diffusione di UDDI potrebbe passare ancora qualche tempo. Per prima cosa, questo è uno standard proprietario, creato si da un vasto consorzio di aziende, ma non ratificato da un organismo indipendente, come ad esempio il W3C che proprio in questi tempi sta affrontando il problema degli standard per i Web Services con il su gruppo di lavoro XML Protocol. Anche se gli obiettivi che si propone di raggiungere UDDI non sono attualmente negli obiettivi del gruppo di lavoro del W3C, pressioni da parte di diverse società (quali IBM) potrebbero far estendere il contesto del progetto in modo da includere UDDI. Questo sarebbe un forte riconoscimento ed una spinta notevole all’adozione della tecnologia, anche se un organismo indipendente come il W3C non si esimerà di certo dal prendere in considerazione tecnologie concorrenti (come ad esempio ebXML) e produrre uno standard che prenda il meglio dai due mondi. Tra l’altro è previsto, proprio dal consorzio UDDI, il rilascio del controllo della tecnologia ad un organismo indipendente dopo la versione 3.0 delle specifiche.
In secondo luogo alcuni aspetti (come per il fatto che il collegamento ad un servizio deve essere eseguito in fase di progettazione e non può avvenire in fase di runtime) rendono la tecnologia forse un po’ limitata e dunque poco appetibile ad una immediata adozione che potrà essere rimandata ad una delle prossime release.
 
 

Riferimenti
[1] Andrea Giovannini - SOAP e Java Integrazione di applicazioni con Java e il nuovo protocollo SOAP - http://www.mokabyte.it/2001/01/soap.htm
[2] Specifiche WSDL - http:/www.w3c.org/TR/wsdl
[3] Massimiliano Bigatti – Web services: SOAP e d'intorni - http://www.mokabyte.it/2001/05/webservices.htm
[4] Massimiliano Bigatti – Web services II parte: capire i WSDL - http://www.mokabyte.it/2001/06/webservices.htm
[5] UDDI.org – www.uddi.org
[6] XML.com – A Web Services primer – http://www.xml.com/lpt/a/2001/04/04/webservices/index.html
[7] IBM alphaWorks – http://www.alphaworks.ibm.com
[8] IBM UDDI - http://www-3.ibm.com/services/uddi/index.html
[9] The role of private UDDI nodes in Web services, Part 1:  Six species of UDDI
IBM developerWorks - http://www-106.ibm.com/developerworks/webservices/library/ws-rpu1.html?dwzone=webservices
[10] UDDI Overview Presentation - http://www.uddi.org/pubs/UDDI_Overview_Presentation.ppt
 

Vai alla Home Page di MokaByte
Vai alla prima pagina di questo mese


MokaByte®  è un marchio registrato da MokaByte s.r.l.
Java®, Jini®  e tutti i nomi derivati sono marchi registrati da Sun Microsystems; tutti i diritti riservati
E' vietata la riproduzione anche parziale
Per comunicazioni inviare una mail a
mokainfo@mokabyte.it