In ogni grande azienda, quando si tratta di adottare una nuova tecnologia, ci si trova sempre frenati da qualcuno che pone la domanda “e con tutto il software sviluppato finora che facciamo?”.
In effetti è vero che non si può pretendere di fare il porting di tutto il codice già scritto ogni volta che viene scoperto un nuovo framework di programmazione.
La soluzione sono i Web Services, “un sistema software progettato per supportare l’interoperabilità tra diversi elaboratori su di una medesima rete” (fonte: Wikipedia).
Il Web Services Description Language (WSDL) è uno standard internazionale, promosso dal World Wide Web Consortium (W3C), che permette la descrizione delle caratteristiche di un Web Service attraverso uno schema XML/SOAP, il quale viene utilizzato come “strumento di sincronizzazione” tra il framework fornitore del servizio e quello che sarà l’utilizzatore (che, grazie a questa forma di comunicazione standard, potranno anche essere basati su linguaggi di programmazione eterogenei).
Grazie al WSDL è possibile, per esempio, utilizzare un’infrastruttura software progettata e sviluppata su un server Java (es. Tomcat), richiamandone i metodi da un server basato su Ruby on Rails (es. Mongrel).
In particolare, per quanto riguarda Ruby, si dovrebbe utilizzare la gemma SOAP4R, che però nelle ultime versioni è inclusa direttamente nel pacchetto ufficiale.
Un piccolo esempio di tutto ciò si può realizzare in pochi semplici passi, non c’è neanche bisogno di scrivere un vero tutorial.
- Creare una Web Application con un Web Service in Java e deployarla su Tomcat:
@WebService()
public class MyWebService {
@WebMethod(operationName = "sayHello")
public String sayHello(@WebParam(name = "firstName")
String firstName) {
return "Hello, " + firstName + "!";
}
}
- Creare un progetto in Rails e richiamare il Web Service remoto:
class MyController < ApplicationController
require 'soap/wsdlDriver'
def index
XSD::Charset.encoding = 'UTF8'
wsdl = "http://TOMCAT_SERVER:8080/MyWebApp/MyWebService?wsdl"
service = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
result = service.sayHello :firstName => 'Bruno'
render :text => result.return
end
end
Ovviamente i due componenti precedentemente descritti potranno anche stare sulla stessa macchina, comunicando tramite l’interfaccia di loopback.
C’è da ricordare che lo standard XML dei Web Services permette di ritornare come output soltanto i seguenti tipi di dato:
- Boolean
- Byte
- Double
- Datatype
- Decimal
- Enumeration
- Float
- Int
- Long
- Qname
- Short
- String
- TimeInstant
- UnsignedByte
- UnsignedInt
- UnsignedLong
- UnsignedShort
- Array dei suddetti tipi
quindi per passare tipi di dati complessi da un’applicazione all’altra sarà necessario implementare dei metodi di serializzazione/deserializzazione sugli oggetti.
PS: un motivo in più per utilizzare NetBeans, che dalla versione 6 supporta anche Ruby on Rails e PHP! :)










