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

Struttura di un documento WSDL
Struttura di un WSDL

Elementi WSDL

Il file WSDL contiene le seguenti parti principali

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

Hai bisogno di 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.

Parte messaggio WSDL

  1. Come possiamo vedere il servizio web ha 2 messaggi, uno per l'input e l'altro per l'output.
  2. Il messaggio di input รจ noto come TutorialNameRequest che ha un parametro chiamato TutorialID. Questo parametro รจ del tipo number specificato dal tipo xsd:number
  3. 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.

Associazione del tipo di porta

Quindi nel nostro esempio precedente possiamo notare quanto segue:

  1. Il nome del tipo di porta che incapsula l'operazione viene fornito come "Tutorial_PortType".
  2. 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.
  3. 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.

Associazione del tipo di porta

  1. 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.
  2. 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.

Pubblicazione dell'esempio del servizio 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:

  1. 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.
  2. 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

Pubblicazione dell'esempio del servizio Web

Passo 3) In questa fase,

  1. Assicurati di scegliere prima l'oggetto visivo C# Windows opzione. Quindi scegli l'opzione di creazione di un'applicazione console.
  2. Dai un nome al tuo progetto che nel nostro caso รจ stato dato come "DemoApplication".

Pubblicazione dell'esempio del servizio Web

Dopo aver fatto clic sul pulsante OK nella schermata sopra, sarร  possibile visualizzare il progetto in Esplora soluzioni in Visual Studio.

Pubblicazione dell'esempio del servizio Web

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".

Pubblicazione dell'esempio del servizio Web

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.

Pubblicazione dell'esempio del servizio Web

Passo 6) In questo passaggio, forniremo i diversi valori necessari per aggiungere il nostro riferimento al servizio

  1. Per prima cosa dobbiamo scegliere la nostra opzione di scoperta. Questa opzione preleverร  automaticamente il file WSDL per il nostro servizio web TutorialService.
  2. Successivamente, dobbiamo dare un nome al nostro riferimento di servizio. Nel nostro caso, gli diamo il nome di Guru99Webservice.
  3. 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.
  4. Vedremo quindi il nostro metodo Web che avevamo nel nostro servizio web noto come โ€œGetTutorialServiceโ€

Pubblicazione dell'esempio del servizio Web

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.

Pubblicazione dell'esempio del servizio Web

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

Pubblicazione dell'esempio del servizio Web

namespace DemoApplication
{
	class Program
	{
		static void Main(string[ ] args)
		{
			var client = new Guru99Webservice.Guru99WebserviceSoapClient();

			Console.WriteLine(client.GetTutorialService(l));
			
			Console.ReadKey();
		}
	}
}

Code Spiegazione:-

  1. 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).
  2. 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()'
  3. 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.
  4. 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.

Pubblicazione dell'esempio del servizio Web

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.

Riassumi questo post con: