Esercitazione WSDL: servizi Web DescriptLinguaggio ionico con esempio
Cos'รจ il WSDL?
Servizi web DescriptLinguaggio ionico (WSDL) รจ un file basato su XML che sostanzialmente dice all'applicazione client cosa fa il servizio web. Il file WSDL viene utilizzato per descrivere in poche parole cosa fa il servizio web e fornisce al client tutte le informazioni necessarie per connettersi al servizio web e utilizzare tutte le funzionalitร fornite dal servizio web.
In questo tutorial ci concentreremo sull'ultimo punto che รจ la parte piรน importante dei servizi Web, ovvero il WSDL o il linguaggio di descrizione dei servizi Web.
Il file WSDL viene utilizzato per descrivere in poche parole cosa fa il servizio web e fornisce al client tutte le informazioni necessarie per connettersi al servizio web e utilizzare tutte le funzionalitร fornite dal servizio web.
Struttura di un documento WSDL
Un documento WSDL viene utilizzato per descrivere un servizio web. Questa descrizione รจ necessaria affinchรฉ le applicazioni client siano in grado di comprendere cosa fa effettivamente il servizio Web.
- Il file WSDL contiene il percorso del servizio Web e
- I metodi esposti dal servizio web.
Il file WSDL in sรฉ puรฒ sembrare molto complesso a qualsiasi utente, ma contiene tutte le informazioni necessarie di cui qualsiasi applicazione client avrebbe bisogno per utilizzare il servizio web pertinente.
Di seguito รจ riportata la struttura generale di un file WSDL
- Definizione
- TargetSpazio dei nomi
- Tipi di dati
- Messaggi
- Tipo di porta
- Associazioni
- INSTALLAZIONE
Una cosa fondamentale da notare qui รจ la definizione di messaggio, che รจ ciรฒ che viene passato dal file Protocollo SOAP รจ effettivamente definito nel documento WSDL.
Il documento WSDL in realtร indica a un'applicazione client quali sono i tipi di messaggi SOAP inviati e accettati dal servizio Web.
In altre parole, il WSDL รจ come una cartolina che ha l'indirizzo di una posizione particolare. L'indirizzo fornisce i dettagli della persona che ha consegnato la cartolina. Quindi, allo stesso modo, il file WSDL รจ la cartolina, che ha l'indirizzo del servizio web che puรฒ fornire tutte le funzionalitร che il client desidera.
<!-- WSDL definition structure -->
<definitions
name="Guru99Service"
targetNamespace=http://example.org/math/
xmlns=http://schemas.xmlsoap.org/wsdl/>
<!-- abstract definitions -->
<types> ...
<message> ...
<portType> ...
<!-- concrete definitions -->
<binding> ...
<service> ...
</definition>
Di seguito รจ riportato un diagramma della struttura di un file WSDL

Elementi WSDL
Il file WSDL contiene le seguenti parti principali
- Migliori tag viene utilizzato per definire tutti i tipi di dati complessi, che saranno utilizzati nel messaggio scambiato tra l'applicazione client e il servizio Web. Questo รจ un aspetto importante dell'applicazione client, perchรฉ se il servizio Web funziona con un tipo di dati complesso, allora l'applicazione client dovrebbe sapere come elaborare il tipo di dati complesso. Tipi di dati come float, numeri e stringhe sono tutti tipi di dati semplici, ma potrebbero esserci tipi di dati strutturati che possono essere forniti dal servizio Web.
Ad esempio, potrebbe esserci un tipo di dati denominato EmployeeDataType che potrebbe avere 2 elementi denominati "EmployeeName" di tipo stringa e "EmployeeID" di tipo numero o intero. Insieme formano una struttura dati che diventa quindi un tipo di dati complesso. - Migliori Il tag viene utilizzato per definire il messaggio che viene scambiato tra l'applicazione client e il server web. Questi messaggi spiegheranno le operazioni di input e output che possono essere eseguite dal servizio web. Un esempio di messaggio puรฒ essere un messaggio che accetta l'EmployeeID di un dipendente e il messaggio di output puรฒ essere il nome del dipendente in base all'EmpoyeeID fornito.
- Migliori Il tag viene utilizzato per incapsulare ogni messaggio di input e output in un'unica operazione logica. Quindi potrebbe esserci un'operazione chiamata "GetEmployee" che combina il messaggio di input di accettare EmployeeID da un'applicazione client e quindi inviare EmployeeName come messaggio di output.
- Migliori Il tag viene utilizzato per associare l'operazione al particolare tipo di porta. In questo modo, quando l'applicazione client chiama il tipo di porta rilevante, sarร quindi in grado di accedere alle operazioni legate a questo tipo di porta. I tipi di porta sono proprio come le interfacce. Pertanto, se un'applicazione client deve utilizzare un servizio Web, dovrร utilizzare le informazioni di associazione per garantire la possibilitร di connettersi all'interfaccia fornita da tale servizio Web.
- Migliori tag รจ un nome dato al servizio web stesso. Inizialmente, quando un'applicazione client effettua una chiamata al servizio Web, lo farร chiamando il nome del servizio Web. Ad esempio, un servizio web puรฒ trovarsi a un indirizzo come http://localhost/Guru99/Tutorial.asmx . Il tag di servizio avrร effettivamente il URL definito come http://localhost/Guru99/Tutorial.asmx, che indicherร effettivamente all'applicazione client che in questa posizione รจ disponibile un servizio Web.
Perchรฉ WSDL
Un servizio Web รจ un componente importante nella creazione di applicazioni Web moderne. Il loro scopo principale รจ consentire a piรน applicazioni basate su vari linguaggi di programmazione di comunicare tra loro. Ad esempio, possiamo fare in modo che un'applicazione Web .Net comunichi con a Java applicazione tramite un servizio Web.
Un servizio web ha le seguenti caratteristiche principali
- ร costruito utilizzando il linguaggio di programmazione XML. Quasi tutte le tecnologie moderne come .Net e Java hanno comandi corrispondenti che hanno la capacitร di lavorare con XML. Pertanto, XML รจ stato considerato il linguaggio piรน appropriato per la creazione di servizi web.
- I servizi Web comunicano tramite HTTP. HTTP รจ un protocollo utilizzato da tutte le applicazioni basate sul Web. Pertanto, era logico garantire che anche i servizi Web avessero la capacitร di funzionare tramite il protocollo HTTP.
- I servizi Web sono conformi a una particolare specifica linguistica. Questa specifica รจ stabilita dal W3C, che รจ l'organo di governo di tutti gli standard web.
- I servizi Web dispongono di un linguaggio di descrizione noto come WSDL, utilizzato per descrivere il servizio Web.
Il file WSDL รจ scritto in semplice vecchio XML. Il motivo per cui รจ in XML รจ che il file puรฒ essere letto da qualsiasi linguaggio di programmazione.
Pertanto, se l'applicazione client fosse scritta in .Net, comprenderebbe il file XML. Allo stesso modo, se l'applicazione client รจ stata scritta nel formato Java linguaggio di programmazione allora sarebbe anche in grado di interpretare il file WSDL.
Il file WSDL รจ ciรฒ che lega tutto insieme. Dal diagramma sopra, puoi vedere che puoi creare un servizio web nel linguaggio .Net.
Quindi รจ qui che il servizio viene implementato. Se non disponi del file WSDL e desideri un file Java class per utilizzare il servizio Web, sarebbe necessario un notevole sforzo di codifica per raggiungere questo obiettivo.
Ma ora con il file WSDL che รจ in XML, che puรฒ essere compreso da qualsiasi linguaggio di programmazione, puoi facilmente avere un Java la classe utilizza il servizio Web .Net. Pertanto, la quantitร di sforzo di codifica รจ notevolmente ridotta.
Parte messaggio WSDL
Il WSDL รจ costituito da una sezione chiamata โmessaggiโ che รจ indicata con il simbolo elemento.
Questo elemento viene fondamentalmente utilizzato per descrivere i dati che vengono scambiati tra il servizio Web e l'applicazione client.
Ogni servizio web avrร sempre 2 tipologie di messaggi,
- Uno รจ per l'input del servizio web e l'altro รจ per l'output del servizio web.
- L'input viene utilizzato per descrivere i parametri accettati dal servizio web. Questo รจ un aspetto importante dell'applicazione client affinchรฉ conosca i valori da inviare come parametri al servizio web.
- L'altro tipo di messaggio รจ il messaggio di output che indica quali risultati sono forniti dal servizio web.
Ogni messaggio, a sua volta, avrร un file elemento che viene utilizzato per descrivere il parametro utilizzato dal messaggio di input e output.
Di seguito รจ riportato un semplice esempio di come appare un messaggio per un servizio web. La funzionalitร del servizio web รจ quella di fornire il nome di un โTutorialโ una volta inviato un โID Tutorialโ come parametro al servizio web.
- Come possiamo vedere il servizio web ha 2 messaggi, uno per l'input e l'altro per l'output.
- Il messaggio di input รจ noto come TutorialNameRequest che ha un parametro chiamato TutorialID. Questo parametro รจ del tipo number specificato dal tipo xsd:number
- Il messaggio di output รจ noto come TutorialNameResponse e ha un parametro chiamato TutorialName. Questo parametro รจ del tipo stringa specificato dal tipo xsd:string
Associazione del tipo di porta
Le porte vengono utilizzate in WSDL per definire un'operazione completa offerta dal servizio web.
Nell'argomento precedente, abbiamo visto che il nostro servizio web forniva 2 messaggi, uno per l'input chiamato "TutorialNameRequest" e l'altro per l'output chiamato "TutorialNameResponse". Insieme, il modulo del messaggio di input e di output รจ noto come un'operazione completa.
WSDL fornisce un elemento chiamato che viene utilizzato per definire le operazioni fornite dal servizio Web.
Quindi nel nostro esempio precedente possiamo notare quanto segue:
- Il nome del tipo di porta che incapsula l'operazione viene fornito come "Tutorial_PortType".
- All'operazione stessa viene dato il nome di โTutorialโ. Quindi la nostra operazione fornisce fondamentalmente un TutorialName se TutorialID viene fornito come parametro di input.
- Poi ci sono i nostri 2 messaggi, uno per l'input e l'altro per l'output che costituisce la nostra operazione
Oltre a un elemento, c'รจ anche il elemento che viene utilizzato per definire come verranno trasferiti i messaggi.
- L'esempio precedente mostra che l'associazione รจ costituita da un nome di associazione che nel nostro caso รจ indicato come "TutorialSoapBinding". Il legame in termini semplici รจ l'informazione che l'applicazione client utilizza per legarsi effettivamente al servizio web. Una volta effettivamente associato al servizio Web, ha la capacitร di richiamare le varie operazioni esposte dal servizio Web.
- Il livello di trasporto รจ indicato come http://, il che significa che i messaggi verranno trasferiti tramite il protocollo HTTP.
Creazione del file WSDL
Il file WSDL viene creato ogni volta che un servizio Web viene creato in qualsiasi linguaggio di programmazione.
Poichรฉ il file WSDL รจ piuttosto complicato da generare da zero, tutti gli editor come Visual Studio per .Net e Eclipse per Java creare automaticamente il file WSDL.
Di seguito รจ riportato un esempio di file WSDL creato in Visual Studio.
<?xml version="1.0"?>
<definitions name="Tutorial"
targetNamespace=http://Guru99.com/Tutorial.wsdl
xmlns:tns=http://Guru99.com/Tutorial.wsdl
xmlns:xsd1=http://Guru99.com/Tutorial.xsd
xmlns:soap=http://schemas.xmlsoap.org/wsdl/soap/
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<schema targetNamespace=http://Guru99.com/Tutorial.xsd
xmlns="http://www.w3.org/2000/10/XMLSchema">
<element name="TutorialNameRequest">
<complexType>
<all>
<element name="TutorialName" type="string"/>
</all>
</complexType>
</element>
<element name="TutorialIDRequest">
<complexType>
<all>
<element name="TutorialID" type="number"/>
</all>
</complexType>
</element>
</schema>
</types>
<message name="GetTutorialNameInput">
<part name="body" element="xsd1:TutorialIDRequest"/>
</message>
<message name="GetTutorialNameOutput">
<part name="body" element="xsd1:TutorialNameRequest"/>
</message>
<portType name="TutorialPortType">
<operation name="GetTutorialName">
<input message="tns:GetTutorialNameInput"/>
<output message="tns:GetTutorialNameOutput"/>
</operation>
</portType>
<binding name="TutorialSoapBinding" type="tns:TutorialPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetTutorialName">
<soap:operation soapAction="http://Guru99.com/GetTutorialName"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="TutorialService">
<documentation>TutorialService</documentation>
<port name="TutorialPort" binding="tns:TutorialSoapBinding">
<soap:address location="http://Guru99.com/Tutorial"/>
</port>
</service>
</definitions>
Il file WSDL sopra sembra molto intimidatorio per qualsiasi utente, tratteremo le diverse parti in dettaglio nei tutorial successivi, ma per ora diamo uno sguardo riepilogativo a ciรฒ che fa effettivamente ciascuna sezione del file WSDL
Pubblicazione dell'esempio del servizio Web
Vediamo ora un esempio di come possiamo pubblicare un servizio Web e utilizzarlo tramite Visual Studio.
In questo esempio, creeremo un servizio Web con un WebMethod. Questo metodo accetterร un parametro intero chiamato "TutorialID". Il metodo Web restituirร quindi una stringa denominata "Servizi Web".
Creeremo quindi un'applicazione basata su console, che utilizzerร questo servizio Web e chiamerร di conseguenza il nostro metodo Web.
Diamo un'occhiata ai passaggi necessari per realizzare questo esempio.
Passo 1) Il primo passo รจ creare il tuo servizio web. I passaggi dettagliati di come Asp.Net รจ stato spiegato il progetto web e la creazione di un servizio web Qui; Seguire gli stessi passaggi per creare il progetto e il servizio Web di conseguenza. La parte fondamentale รจ inserire il codice seguente nel file dei servizi Web.
namespace webservic asmx
{
[WebService(Name = "Guru99 Web service")]
public class TutorialService : System.Web.Services.WebService
{
[WebMethod]
public string GetTutorialService(int TutoriallD)
{
string TutorialName = "Web Services";
return TutorialName;
}
}
}
Code Spiegazione:
- Qui stiamo creando un metodo Web chiamato "Guru99WebService." In questo metodo web, includiamo un parametro intero che deve essere passato ogni volta che questo metodo web viene chiamato.
- Successivamente stiamo definendo una variabile chiamata "TutorialName" che conterrร il valore stringa di "Web Services". Questo รจ il valore che verrร restituito quando viene chiamato il servizio web.
Passo 2) Una volta definito il file dei servizi Web, il passaggio successivo รจ creare un progetto client che utilizzerร questo servizio Web.
Creiamo una semplice applicazione console che chiamerร questo servizio web, invocherร il "Guru99WebServiceโ e quindi visualizzare lโoutput del metodo web nella schermata di log della console. Seguire i passaggi seguenti per creare unโapplicazione console.
Fare clic con il pulsante destro del mouse sul file della soluzione di Visual Studio e scegliere l'opzione Aggiungi->Nuovo progetto
Passo 3) In questa fase,
- Assicurati di scegliere prima l'oggetto visivo C# Windows opzione. Quindi scegli l'opzione di creazione di un'applicazione console.
- Dai un nome al tuo progetto che nel nostro caso รจ stato dato come "DemoApplication".
Dopo aver fatto clic sul pulsante OK nella schermata sopra, sarร possibile visualizzare il progetto in Esplora soluzioni in Visual Studio.
Passo 4) In questo passaggio, imposterai l'applicazione DemoApplication Console come progetto di avvio. Questo viene fatto per garantire che questa applicazione venga avviata per prima quando viene eseguito l'intero progetto di Visual Studio. Questa applicazione Console, a sua volta, chiamerร il servizio Web che verrร avviato automaticamente da Visual Studio.
Per completare questo passaggio, fai clic con il pulsante destro del mouse sul progetto DemoApplication e scegli l'opzione "Imposta come progetto di avvio".
Passo 5) Il passo successivo รจ aggiungere il riferimento di servizio del nostro โGuru99Webserviceโ alla nostra applicazione console. Questo viene fatto affinchรฉ DemoApplication possa fare riferimento al servizio web e a tutti i metodi web presenti nel servizio web.
Per fare ciรฒ, fare clic con il pulsante destro del mouse sul file di progetto DemoApplication e scegliere l'opzione di menu Aggiungi->Riferimento servizio.
Passo 6) In questo passaggio, forniremo i diversi valori necessari per aggiungere il nostro riferimento al servizio
- Per prima cosa dobbiamo scegliere la nostra opzione di scoperta. Questa opzione preleverร automaticamente il file WSDL per il nostro servizio web TutorialService.
- Successivamente, dobbiamo dare un nome al nostro riferimento di servizio. Nel nostro caso, gli diamo il nome di Guru99Webservice.
- Poi dobbiamo espandere l'opzione TutorialService.asmx in modo da avere la possibilitร di vedere il metodo 'GetTutorialService' sul lato destro. Qui TutorialService.asmx รจ il nome del nostro file Visual Studio .Net che contiene il codice per il nostro servizio web.
- Vedremo quindi il nostro metodo Web che avevamo nel nostro servizio web noto come โGetTutorialServiceโ
Quando facciamo clic sul pulsante "OK", tutto il codice richiesto per accedere a questo servizio Web verrร aggiunto alla nostra applicazione DemoApplication Console come mostrato di seguito.
Lo screenshot mostra che il โGuruIl servizio "99Webservice" รจ stato aggiunto con successo alla nostra applicazione console.
Passo 7) Il passaggio successivo รจ aggiungere il codice alla nostra applicazione console per accedere al metodo web nel nostro servizio web. Apri il file di codice Program.cs che viene fornito automaticamente con l'applicazione console e aggiungi il codice seguente
namespace DemoApplication
{
class Program
{
static void Main(string[ ] args)
{
var client = new Guru99Webservice.Guru99WebserviceSoapClient();
Console.WriteLine(client.GetTutorialService(l));
Console.ReadKey();
}
}
}
Code Spiegazione:-
- La prima parte รจ scegliere il file Program.cs. Questo รจ il file principale che viene creato da Visual Studio quando viene creata un'applicazione console. Questo file รจ ciรฒ che viene eseguito quando viene eseguita l'applicazione console (nel nostro caso l'applicazione demo).
- Creiamo quindi una variabile chiamata "client" che verrร impostata su un'istanza del nostro riferimento al servizio creato in un passaggio precedente. Nel nostro caso, il riferimento al servizio รจ 'Guru99Webservice.Guru99WebserviveSoapClient()'
- Chiameremo quindi il nostro metodo Web "GetTutorialService" nel servizio web TutorialService. Ricorda che il nostro metodo GetTutorialService accetta un parametro intero, quindi stiamo semplicemente passando un parametro intero al metodo web.
- Questa riga finale serve solo a garantire che la schermata del registro della console rimanga attiva in modo da poter visualizzare l'output. Questo comando attenderร semplicemente qualche input da parte dell'utente.
Uscita
Una volta seguiti tutti i passaggi precedenti e eseguita l'applicazione Demo, verrร visualizzato l'output seguente.
Dall'output, possiamo vedere chiaramente che DemoApplication chiama il nostro servizio Web e che la stringa restituita dal servizio Web viene visualizzata nel registro della nostra Console.
Sintesi
- La forma completa di WSDL รจ Web Services DescriptLinguaggio ionico
- Un documento WSDL รจ un documento utilizzato per descrivere un servizio web. Questa รจ la chiave per consentire a qualsiasi applicazione client di sapere dove si trova il servizio Web. Consente inoltre all'applicazione client di comprendere i metodi disponibili nel servizio Web.
- Il file WSDL semplifica l'implementazione del servizio Web in un linguaggio di programmazione e la chiamata da un linguaggio di programmazione diverso.
- Il documento WSDL normalmente รจ costituito da un messaggio. Per ciascun metodo Web sono presenti 2 messaggi, uno per l'input e l'altro per l'output. Insieme formano un'operazione.
- Servizi web DescriptI file ion Language (sta per WSDL) vengono normalmente creati nell'editor utilizzato per il linguaggio di programmazione corrispondente.
- Abbiamo visto come possiamo consumare un servizio web in Visual Studio. Questo puรฒ essere fatto creando un altro progetto che รจ un'applicazione console. Quindi aggiungendo un riferimento al servizio, siamo in grado di accedere ai metodi web nel nostro servizio web.














