close

WSDL

Vai alla navigazione Vai alla ricerca

WSDL , abbreviazione di Web Services Description Language , è un formato Extensible Markup Language ( XML ) utilizzato per descrivere i servizi Web (WS). La versione 1.0 è stata la prima raccomandazione del W3C e la versione 1.1 non ha mai raggiunto tale stato. La versione 2.0 è diventata l'attuale raccomandazione di tale entità.

WSDL descrive l'interfaccia pubblica per i servizi Web. Si basa su XML e descrive la forma di comunicazione, ovvero i requisiti del protocollo e i formati dei messaggi necessari per interagire con i servizi elencati nel suo catalogo. Le operazioni e i messaggi supportati sono descritti in astratto e quindi legati al protocollo di rete specifico e al formato del messaggio.

Pertanto WSDL viene spesso utilizzato in combinazione con SOAP e XML Schema . Un programma client che si connette a un servizio Web può leggere il WSDL per determinare quali funzioni sono disponibili sul server. Tipi di dati speciali sono inclusi nel file WSDL sotto forma di schema XML. Il client può utilizzare SOAP per effettuare la chiamata a una delle funzioni elencate nel WSDL.

Il WSDL ci permette di avere una descrizione di un servizio web. Specifica l'interfaccia astratta attraverso la quale un client può accedere al servizio e i dettagli su come dovrebbe essere utilizzato.

Struttura WSDL

La struttura WSDL ha i seguenti elementi:

Tipi di dati

<tipi>: questa sezione definisce i tipi di dati utilizzati nei messaggi. Vengono utilizzati i tipi definiti nella specifica dello schema XML.

Messaggi

<messaggio>: qui definiamo gli elementi del messaggio. Ogni messaggio può essere costituito da una serie di parti logiche. Le parti possono essere di qualsiasi tipo definito nella sezione precedente.

Tipi di porte

<portType>: Con questa sezione definiamo le operazioni consentite ei messaggi scambiati nel Servizio.

Attacchi

<binding>: specifichiamo i protocolli di comunicazione utilizzati.

Servizi

<servizio>: insieme di porte e relativo indirizzo. Quest'ultima parte fa riferimento a quanto previsto dai paragrafi precedenti.

Con questi elementi non sappiamo cosa fa un servizio, ma abbiamo le informazioni necessarie per interagire con esso (funzioni, messaggi di input/output, protocolli...)

Esempi

Di seguito è riportato un esempio di un documento WSDL e delle sue diverse sezioni. In questo esempio specifico, viene implementato un servizio che mostra il suo valore di mercato attuale in base al nome di un valore di borsa.

 <definitions  name= "StockQuote"  
          targetNamespace= "http://example.com/stockquote.wsdl" 
          xmlns:tns= "http://example.com/stockquote.wsdl" 
          xmlns:xsd1= "http://example. com/stockquote.xsd" 
          xmlns:soap= "http://schemas.xmlsoap.org/wsdl/soap/" 
          xmlns= "http://schemas.xmlsoap.org/wsdl/" >
 
    <tipi> 
       <schema  targetNamespace= "http://example.com/stockquote.xsd" 
              xmlns= "http://www.w3.org/2000/10/XMLSchema" > 
           <nome elemento  = "TradePriceRequest" > 
              <complexType > 
                  <all> 
                      <element  name= "tickerSymbol"  type= "string" /> 
                  </all> 
              </complexType> 
           </element> 
           <element  name= "TradePrice" > 
              <complexType> 
                  <all> 
                      <element  name= "prezzo "  type= "float" /> 
                  </all> 
              </complexType> 
           </element> 
       </schema> 
    </types>
 
    <  nome messaggio= "GetLastTradePriceInput" > 
        <  nome parte= "body"  element= "xsd1:TradePriceRequest" /> 
    </message>
 
    <  nome messaggio= "GetLastTradePriceOutput" > 
        <  nome parte= "body"  element= "xsd1:TradePrice" /> 
    </message>
 
    <portType  name= "StockQuotePortType" > 
        <  nome operazione= "GetLastTradePrice" > 
           <input  message= "tns:GetLastTradePriceInput" /> 
           <output  message= "tns:GetLastTradePriceOutput" /> 
        </operation> 
    </portType>
 
    <binding  name= "StockQuoteSoapBinding"  type= "tns:StockQuotePortType" > 
        <soap:binding  style= "document"  transport= "http://schemas.xmlsoap.org/soap/http" /> 
        <  nome operazione= "GetLastTradePrice" > 
           <soap:operazione  soapAction= "http://example.com/GetLastTradePrice" /> 
           <input> 
               <soap:body  use= "literal" /> 
           </input> 
           <output> 
               <soap:body  use= "literal" /> 
           </output> 
        </operazione> 
    </binding>
 
    <service  name= "StockQuoteService" > 
        <documentation> Il mio primo servizio </documentation> 
        <port  name= "StockQuotePort"  binding= "tns:StockQuoteSoapBinding" > 
           <soap:address  location= "http://example.com/stockquote" /> 
        </porta> 
    </servizio>
 
 </definizioni>

Vedi anche

Collegamenti esterni