Introduzione ai Web Services

Introduzione ai Web Services

L’area di sviluppo che ha fatto registrare il tasso di crescita più elevato è quella che ruota attorno al concetto di comunicazione B2B (Business to Business), ossia l’insieme di acquisti, vendite ed altre transazioni commerciali; in realtà i sistemi informatici B2B esistono da qualche decennio, e si occupano di far colloquiare tra loro i sistemi di gestione bancaria, i sistemi logistici, quelli aziendali, i servizi di credito, ecc.Il modello B2B è rappresentato, ad esempio, dalle aziende che acquistano prodotti dai loro fornitori (altre aziende). Gli sviluppatori che qualche anno fa se ne occupavano avevano il problema di convenire lo standard da utilizzarsi per i trasferimenti: è nato allora un vero e proprio conflitto ideologico per stabilire, ad esempio, quale fosse il linguaggio di programmazione più adatto allo scopo; alcuni hanno scelto Java, altri hanno prodotto applicazioni in Visual Basic di Microsoft, altri ancora hanno preferito svilupparle in C/C++.Quando però si erigono delle barriere che creano isolamenti, non solo tra due aziende ma anche tra diversi dipartimenti della stessa azienda, il mercato ci mostra che si danneggiano i settori dell’innovazione e della produttività. I servizi web si pongono allora l’obiettivo di trovare una soluzione ed un compromesso a questa situazione: così come Java rappresenta la neutralità per le piattaforme, allo stesso modo i servizi web vogliono esserlo nei confronti dei vari linguaggi, ponendosi nell’ottica di creare l’interoperabilità.

Reti Neurali
I motori di ricerca basati su Clustering
Il Web Service Definition Language (WSDL)

Il mondo del Web è in continua evoluzione e le persone sono in grado di comunicare tra loro con strumenti sempre più rapidi ed efficienti attraverso comunicazioni P2P (Peer to Peer), in un quadro generale dove Internet costituisce una componente essenziale della vita quotidiana.

L’area di sviluppo che ha fatto registrare il tasso di crescita più elevato è quella che ruota attorno al concetto di comunicazione B2B (Business to Business), ossia l’insieme di acquisti, vendite ed altre transazioni commerciali; in realtà i sistemi informatici B2B esistono da qualche decennio, e si occupano di far colloquiare tra loro i sistemi di gestione bancaria, i sistemi logistici, quelli aziendali, i servizi di credito, ecc.

Il modello B2B è rappresentato, ad esempio, dalle aziende che acquistano prodotti dai loro fornitori (altre aziende). Gli sviluppatori che qualche anno fa se ne occupavano avevano il problema di convenire lo standard da utilizzarsi per i trasferimenti: è nato allora un vero e proprio conflitto ideologico per stabilire, ad esempio, quale fosse il linguaggio di programmazione più adatto allo scopo; alcuni hanno scelto Java, altri hanno prodotto applicazioni in Visual Basic di Microsoft, altri ancora hanno preferito svilupparle in C/C++.

Quando però si erigono delle barriere che creano isolamenti, non solo tra due aziende ma anche tra diversi dipartimenti della stessa azienda, il mercato ci mostra che si danneggiano i settori dell’innovazione e della produttività. I servizi web si pongono allora l’obiettivo di trovare una soluzione ed un compromesso a questa situazione: così come Java rappresenta la neutralità per le piattaforme, allo stesso modo i servizi web vogliono esserlo nei confronti dei vari linguaggi, ponendosi nell’ottica di creare l’interoperabilità.

Una prima definizione dei servizi web è quella presente nel “Web Services Architecture a publication of W3C 14 May 2003” :

[Definition: A Web service is a software application identified by a URI, whose interfaces and binding are capable of being defined, described and discovered by XML artefacts and supports direct interactions with other software applications using XML based messages via internet-based protocols]

Non esiste una traduzione ufficiale, per cui viene presentata una traduzione più che possibile letterale:

[Definizione: Un Web Service è un applicativo software identificato da un URI, in cui l’interfacciamento e l’interazione sono definite, descritte e scoperte, tramite dialetti XML, e supporta direttamente l’interazione con altre applicazioni software utilizzando XML come linguaggio per i messaggi e i protocolli base di internet per la comunicazione].

Quindi un Web Service è un’applicazione software a tutti gli effetti, ma deve essere identificabile nella rete da un URI ( Uniform Reference Identificator); inoltre non esistono specifiche che dicano come deve essere l’applicativo o con quale tecnologia deve essere implementato. D’altronde nella logica dell’interoperabilità, l’unica cosa richiesta è l’utilizzo di dialetti XML per la auto-descrizione, per la ricerca e per lo scambio di dati, perché un Web Service deve fornire vari tipi di servizi a chiunque e a qualunque cosa.

L’Architettura

Il documento su citato definisce anche le caratteristiche fondamentali a cui ogni architettura di servizi web deve rispondere per essere conforme allo standard. Qui ne riportiamo un breve sunto:

Interoperabilità (Interoperability):

La Web Services Architecture deve prevedere una piattaforma di riferimento che sia interoperabile con la maggior parte degli ambienti esistenti, deve provvedere a un completo framework di riferimento che incoraggi lo sviluppo di software capace di interoperare con quest’ultimo, assicurare l’indipendenza della piattaforma e dei device;

Affidabilità (Reliability):

Un servizio Web deve essere affidabile e stabile nel tempo;

Web-Friendly:

Il servizio deve essere capace di adattarsi alle future esigenze del web, per cui l’architettura raccomanda di utilizzare il modo standard di identificare una risorsa (URI), di utilizzare HTTP over tcp/udp/ip e di utilizzare un sistema di codifica dei dati standard quale XML; nonché di seguire quei punti di forza che hanno fatto del web quello che è oggi: semplicità, decentralizzazione, scalabilità, come componenti di interazione, sicurezza e ricerca decentralizzata;

Sicurezza (Security)

I Web Services devono provvedere un ambiente sicuro per i processi on-line e alla privacy del consumatore che usufruisce del servizio;

Scalabilità ed Espandibilità (Scalability and Extensibility):

Un servizio web deve essere scalabile ed espandibile; ciò è ottenuto tramite una modularità del sistema, una chiarezza concettuale che permetta anche uno scambio di codice e idee tra gli sviluppatori, una riduzione della complessità tramite la decomposizione. Questo porta ad un supporto completo alla programmazione Object-Oriented, della quale sono caratteristiche fondamentali l’incapsulamento e l’information hiding.

Oltre a queste raccomandazioni possiamo aggiungerne altre che possono essere così riassunte: nei Web Services è importante separare i dati dalla logica del servizio, seguire e supportare le classiche funzioni di business, oltre al messaging, al routing e all’identificazione unica dei messaggi.

Questi sono i principi base che il Working Group del W3C ha fissato per definire l’architettura standard su cui basare i Web Services e a partire da questi è nata l’infrastruttura tecnica che ha permesso la creazione di protocolli e sistemi per i web services.

La struttura dei Web Services, chiaramente inspirata all’architettura SOA, ha tre soggetti che prendono parte al ciclo di vita di un servizio:

  • Il provider o fornitore del servizio;
  • Il registry o registro, archivio di ricerca dei servizi;
  • Il client che usufruisce dei servizi

E’ necessario comunque fare subito una precisazione in quanto i Web Services hanno superato l’idea che è alla base dell’architettura SOA. Infatti l’architettura SOA è ancora legata ad un concetto di architettura centralizzata (modello Client-Server), mentre i Web – Services possono avere una struttura decentralizzata, sul modello del peer-to-peer.

 

Gli standard su cui si basano i Web Services

 

Per ogni soggetto relativo ai Web Services è stato necessario definire una specifica che distingua bene i ruoli e le tecniche da utilizzare. Nei successivi articoli prenderemo in esame ognuno dei protocolli su cui si basano i Web Services.



COMMENTS

WORDPRESS: 0