Con i Web Services si supera definitivamente il modello client-server classico; i servizi sono visti come «mattoni» con cui costruire altri servizi, eventualmente più complessi e sofisticati.
Non è più importante conoscere quale sia il servente o fornitore e quale il cliente o fruitore di un servizio; il fruitore può a sua volta divenire fornitore aggregando servizi esistenti e creandone di nuovi.
Quindi, con i Web Services, l'architettura delle applicazioni non si basa più sui «ruoli» bensì sui servizi; ciascun componente «espone», i suoi rendendoli utilizzabili agli altri componenti grazie ad appositi «registri» che contengono le informazioni sui registri pubblicati. |
La definizione di Web Service fornita dal consorzio W3C è la seguente: «sistema software progettato per supportare l'interoperabilità tra diversi elaboratori su di una medesima rete».
Un'altra possibile definizione può essere: «servizio riutilizzabile che può essere richiamato con tecnologie Internet e che dialoga in XML».
Si può subito notare che non viene fatto alcun riferimento a tecnologie specifiche (ad esempio ai linguaggi da utilizzare) ma si pone l'accento sull'uso di XML e sugli strumenti di Internet; questo per due motivi fondamentali:
XML è un linguaggio di formattazione delle informazioni nato per essere multipiattaforma e quindi permette di definire flussi di dati fruibili in qualsiasi ambiente; inoltre, a differenza di quanto accade con i flussi di comunicazione degli altri sistemi per la programmazione distribuita, la formattazione avviene in «testo puro» e questo facilita la leggibilità dei dati e le eventuali attività di debug;
l'uso dei protocolli Internet (HTTP, SMTP, FTP ecc.) permette di superare con poco sforzo la barriera dei firewall perché essi sono solitamente configurati per lasciar transitare informazioni veicolate con tali strumenti; inoltre il supporto per i protocolli di Internet è ormai diffuso nella globalità dei sistemi esistenti e fa parte del software di base di qualsiasi piattaforma.
I motivi che stanno portando ad una grossa diffusione dei Web Services sono:
semplicità delle specifiche;
uso di tecnologie standard aperte (come XML e HTTP) già esistenti e diffuse;
uso concreto da parte di molte aziende;
disponibilità di numerosi strumenti per la loro realizzazione.
A fronte di questi vantaggi c'è però anche qualche punto a sfavore:
solitamente è richiesto un grosso volume di traffico di dati in rete;
il carico computazionale per la codifica e decodifica dei dati è elevato;
siccome è una tecnologia «di moda», qualche volta viene usata a sproposito, anche quando si ha il completo controllo su tutte le tecnologie coinvolte in una certa applicazione e quindi non ci sono grosse esigenze di interoperabilità.
A causa dei primi due svantaggi appena elencati c'è la tendenza ad usare strumenti di comunicazione maggiormante ottimizzati ma proprietari (ad esempio RMI nel mondo Java, .Net Remoting per .Net di Microsoft) con il rischio di compromettere l'essenza stessa dei Web Services cioè l'interoperabilità.
Dal punto di vista tecnologico i Web Services sono basati su:
protocollo di comunicazione: lo standard che si è affermato maggiormente è SOAP (Simple Object Access Protocol) basato su HTTP e XML;
strumenti per la descrizione dei servizi; in questo caso lo standard è costituito dal linguaggio formale WSDL (Web Services Definition Language);
strumenti per la catalogazione e la scoperta dei servizi: in questo caso si è affermato lo standard UDDI (Universal Description Discovery and Integration) che è un registry (archivio di registrazioni indicizzato) basato su XML e indipendente dalla piattaforma che permette la scoperta e l'interrogazione dei servizi offerti sul Web, delle aziende che li offrono e delle modalità di fruizione.
Lo schema della figura 11.1 riassume il ruolo dei componenti appena elencati.
|
(..... Da completare .......) Questo capitolo sarà completato in una delle prossime versioni di questa dispensa. |