La realizzazione di sistemi distribuiti su piattaforme eterogenee richiede l’utilizzo di middleware che forniscono i servizi atti a consentire la comunicazione fra componenti distribuiti.
Le Architetture Orientate ai Servizi (SOA) sono state proposte per consentire una sistematica interazione fra applicazioni (application-to-application). Svincolandosi dai limiti delle architetture a componenti basate su middleware.
In particolare:
Le Architetture Orientate ai Servizi (SOA) sono un modo di progettare sistemi distribuiti i cui componenti sono costituiti da servizi indipendenti.
I servizi sono componenti stand-alone, in grado di risolvere specifici problemi, che possono essere offerti da differenti fornitori ed essere eseguiti su computer diversi.
Per rendere possibili tali attività, devono essere adottati protocolli standard per supportare:
Obiettivi:
Requisiti:
I servizi possono essere sviluppati localmente, o essere prodotti da fornitori esterni.
Per accedere ai servizi è necessario conoscere unicamente la loro interfaccia. L’accesso ai servizi è possibile attraverso un linguaggio standard, indipendentemente dal linguaggio con cui i servizi sono stati implementati.
E’ possibile recuperare (tramite wrapper) funzionalità di sistemi esistenti (legacy systems).
Aziende o altre organizzazioni possono cooperare utilizzando funzioni di business altrui e avvalendosi di un meccanismo di scambio dati semplificato: supporto al Collaborative Computing.
SOAP
Protocollo per lo scambio di messaggio, tipicamente implementato su http o https.
WSDL (Web Service Definition Language)
Protocollo per lo scambio di informazioni descriventi l’interfaccia del Web Service e il collegamento con il servizio vero e proprio.
UDDI (Universal Description, Discovery, and Integration)
Definisce la semantica del servizio, in maniera tale da consentire la scoperta automatica dell’esistenza del servizio.
WS-BPEL
Permette di definire la modalità di composizione di servizi.
Definizione di servizio e di Web Service
Anche i servizi incapsulano funzionalità riusabili in diversi contesti.
Ma i servizi devono essere necessariamente indipendenti da altri servizi e debolmente accoppiati:
L’interazione con i servizi è basata unicamente sullo scambio di messaggi. Diversamente dalla comunicazione fra componenti che richiede l’invocazione di metodi (API).
La comunicazione fra componenti è basata sull’invocazione di metodi.
L’interazione con i servizi è basata unicamente sullo scambio di messaggi.
I servizi adottano un modello di comunicazione asincrona, mentre l’interazione fra componenti è più aderente ad un modello di interazione sincrona.
Le interfacce dei servizi sono espresse in linguaggio WSDL. Una specifica WSDL definisce
Consideriamo un semplice esempio di Web Service
Quest’esempio è fornito insieme all’interfaccia utente che si integra con NetBeans per la generazione e testing di Web Service.
Si vuole realizzare un semplice Web Service add che è in grado di restituire la somma di due numeri interi, avuti come parametri di ingresso.
Si tratta, evidentemente di un servizio che fornisce una interfaccia ma non ne richiede.
// Copyright (c) 2007, Sun Microsystems, Inc. All rights reserved.
package org.me.calculator;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService()
public class CalculatorWS {
/**
* Web service operation
*/
@WebMethod(operationName = "add")
public int add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) {
return i + j;
}
}
Con la @ sono indicati dei commenti.
La classe CalculatorWS in questo caso implementa un unico metodo add: sarà questo metodo ad essere esposto come Web Service.
2. Ciclo di Vita e Processi Software
3. Processi per lo sviluppo rapido del software
4. Sviluppo Agile del Software
5. Test Driven Development (TDD)
7. Component Based Software Engineering (CBSE): Generalità
8. Component Based Software Engineering (CBSE): Il processo di svi...
9. Ingegneria del Software orientato ai Servizi
10. Ingegnerizzazione dei Servizi
11. I Processi di Manutenzione del Software
12. Reengineering, Refactoring e Reverse Engineering del Software
13. Verifica e Convalida del Software. Richiami e concetti di base ...
14. Tecniche di Testing Dinamico
15. Testing di Sistemi Object Oriented
16. Automazione del testing e Analisi Mutazionale
17. Tecniche di Analisi Statica del codice e il Debugging
18. Stima dei costi nei progetti Software
19. Il Modello COCOMO per la stima dei costi Software – La gestio...
20. Gestione e Miglioramento dei Processi di Produzione del Softwar...
21. La Valutazione della Qualità dei Processi Software – Il Capa...
Sommerville, Ingegneria del Software, 8° edizione, capitolo 31
Sito del W3C per le specifiche degli standard per Web Services (Es. SOAP, XML, WSDL, …)
Unraveling the Web Services Web- An Introduction to SOAP, WSDL, and UDDI - Francisco Curbera, Matthew Duftler, Rania Khalaf,William Nagy,Nirmal Mukhi, and Sanjiva Weerawarana- IEEE INTERNET COMPUTING- Mar. Apr. 2002