Esercitazione WSDL: linguaggio di descrizione dei servizi Web con esempio

Sommario:

Anonim

Cos'è WSDL?

WSDL ( Web Services Description Language ) è 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, e cioè 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.

In questo tutorial imparerai-

  • Struttura di un documento WSDL
  • Elementi WSDL
  • Perché WSDL
  • Parte messaggio WSDL
  • Binding del tipo di porta
  • Creazione del file WSDL
  • Pubblicazione dell'esempio del servizio Web

Struttura di un documento WSDL

Un documento WSDL viene utilizzato per descrivere un servizio Web. Questa descrizione è necessaria, in modo che le applicazioni client siano in grado di capire cosa fa effettivamente il servizio web.

  • Il file WSDL contiene la posizione del servizio Web e
  • I metodi esposti dal servizio web.

Il file WSDL stesso può sembrare molto complesso per qualsiasi utente, ma contiene tutte le informazioni necessarie che qualsiasi applicazione client richiederebbe per utilizzare il servizio Web pertinente.

Di seguito è riportata la struttura generale di un file WSDL

  • Definizione
  • TargetNamespace
  • Tipi di dati
  • Messaggi
  • Porttype
  • Binding
  • servizio

Una cosa fondamentale da notare qui è che la definizione dei messaggi, che è ciò che viene passato dal protocollo SOAP, è effettivamente definita nel documento WSDL.

Il documento WSDL indica effettivamente a un'applicazione client quali sono i tipi di messaggi SOAP inviati e accettati dal servizio Web.

In altre parole, il WSDL è proprio 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 cliente desidera.

Di seguito è riportato un diagramma della struttura di un file WSDL

Struttura di un WSDL

Elementi WSDL

Il file WSDL contiene le seguenti parti principali

  1. Il tag viene utilizzato per definire tutti i tipi di dati complessi, che verranno 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, l'applicazione client dovrebbe sapere come elaborare il tipo di dati complesso. I 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 chiamato EmployeeDataType che potrebbe avere 2 elementi chiamati "EmployeeName" di tipo stringa e "EmployeeID" di tipo numero o intero. Insieme formano una struttura di dati che poi diventa un tipo di dati complesso.

  2. 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 il EmployeeID di un dipendente e il messaggio di output può essere il nome del dipendente in base all'EmpoyeeID fornito.

  3. 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 dell'accettazione di EmployeeID da un'applicazione client e quindi dell'invio di EmployeeName come messaggio di output.

  4. 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 pertinente, 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, è necessario che utilizzi le informazioni di associazione per assicurarsi di potersi connettere all'interfaccia fornita da tale servizio Web.

  5. Il 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ò essere situato a un indirizzo come http: //localhost/Guru99/Tutorial.asmx . Il tag di servizio avrà effettivamente l'URL definito come http: //localhost/Guru99/Tutorial.asmx , che in realtà indicherà all'applicazione client che è disponibile un servizio Web in questa posizione.

Perché WSDL

Un servizio Web è un componente importante nella creazione di applicazioni Web moderne. Il loro scopo principale è quello di consentire a più applicazioni costruite su vari linguaggi di programmazione di dialogare tra loro. Ad esempio, possiamo fare in modo che un'applicazione web .Net parli con un'applicazione Java 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. Quindi, 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. Quindi, aveva semplicemente senso assicurarsi che anche i servizi Web avessero la capacità di funzionare sul protocollo HTTP.
  • I servizi Web sono conformi a una particolare specifica del linguaggio. Questa specifica è stabilita dal W3C, che è l'organo di governo per tutti gli standard web.
  • I servizi Web hanno un linguaggio di descrizione noto come WSDL, utilizzato per descrivere il servizio Web.

Il file WSDL è scritto in un semplice vecchio XML. Il motivo per cui è in XML è che il file può essere letto da qualsiasi linguaggio di programmazione.

Quindi, se l'applicazione client fosse scritta in .Net, comprenderebbe il file XML. Allo stesso modo, se l'applicazione client fosse scritta nel linguaggio di programmazione Java, 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 si dispone del file WSDL e si desidera che una classe Java utilizzi il servizio Web, è necessario un notevole sforzo di codifica per ottenere questo risultato.

Ma ora con il file WSDL che è in XML, che può essere compreso da qualsiasi linguaggio di programmazione, ora puoi facilmente fare in modo che una classe Java utilizzi il servizio web .Net. Pertanto, la quantità di lavoro di codifica è notevolmente ridotta.

Parte messaggio WSDL

Il WSDL è costituito da una sezione chiamata "messaggi" che è indicata dall'elemento .

Questo elemento viene utilizzato fondamentalmente per descrivere i dati che vengono scambiati tra il servizio Web e l'applicazione client.

Ogni servizio web avrà sempre 2 tipi 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 in modo che 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 elemento che viene utilizzato per descrivere il parametro utilizzato dal messaggio di input e output.

Di seguito è riportato un semplice esempio dell'aspetto di un messaggio per un servizio Web. La funzionalità del servizio web consiste nel fornire il nome di un "Tutorial" una volta che un "ID tutorial" viene inviato come parametro al servizio web.

  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 numero specificato dal tipo xsd: number
  3. Il messaggio di output è noto come TutorialNameResponse che ha un parametro chiamato TutorialName. Questo parametro è del tipo stringa specificato dal tipo xsd: string

Binding 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 fornisce 2 messaggi, uno per l'input chiamato "TutorialNameRequest" e l'altro per l'output chiamato "TutorialNameResponse". Insieme, il modulo dei messaggi di input e 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 sopra 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 assegnato il nome "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 all'elemento , c'è anche l' elemento che viene utilizzato per definire come verranno trasferiti i messaggi.

  1. L'esempio sopra mostra che l'associazione consiste in un nome di associazione che nel nostro caso è dato come "TutorialSoapBinding". Il binding in termini semplici è l'informazione che l'applicazione client utilizza per legarsi effettivamente al servizio web. Una volta che è effettivamente associato al servizio Web, ha la capacità di chiamare le varie operazioni esposte dal servizio Web.
  2. Il livello di trasporto è dato come http: // il che significa che i messaggi che verranno trasferiti sul 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 ed Eclipse per Java creano automaticamente il file WSDL.

Di seguito è riportato un esempio di un file WSDL creato in Visual Studio.




TutorialService

Il file WSDL di cui sopra sembra molto intimidatorio per qualsiasi utente, tratteremo le diverse parti in dettaglio nei tutorial successivi, ma per ora, diamo uno sguardo sommario a ciò che ogni sezione del file WSDL fa effettivamente

Pubblicazione dell'esempio del servizio Web

Vediamo ora un esempio di come possiamo pubblicare un servizio Web e utilizzarlo utilizzando Visual Studio.

In questo esempio, creeremo un servizio Web con un WebMethod. Questo metodo accetterà un parametro Integer denominato "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à il nostro metodo Web di conseguenza.

Diamo un'occhiata ai passaggi necessari per eseguire questo esempio.

Passaggio 1) Il primo passaggio è creare il tuo servizio web. I passaggi dettagliati di come viene creato il progetto web Asp.Net e un servizio web sono stati spiegati qui; Segui 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;}}}

Spiegazione del codice:

  1. Qui stiamo creando un WebMethod chiamato "Guru99WebService". In questo metodo web, includiamo un parametro intero che deve essere passato ogni volta che viene chiamato questo metodo web.
  2. Successivamente definiamo una variabile denominata "TutorialName" che conterrà il valore stringa di "Web Services". Questo è il valore che verrà restituito quando viene chiamato il servizio web.

Passaggio 2) Dopo aver definito il file dei servizi Web, il passaggio successivo consiste nel creare un progetto client che utilizzerà questo servizio Web.

Creiamo una semplice applicazione console che chiamerà questo servizio web, richiameremo "Guru99WebService" e quindi visualizzeremo 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

Step3) In questo passaggio,

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

Dopo aver fatto clic sul pulsante OK nella schermata sopra, sarai in grado di vedere il progetto in Esplora soluzioni in Visual Studio.

Passaggio 4) In questo passaggio, si imposta l'applicazione DemoApplication Console come progetto di avvio. Questa operazione viene eseguita per garantire che questa applicazione venga avviata per prima quando viene eseguito l'intero progetto Visual Studio. Questa applicazione console, a sua volta, chiamerà il servizio Web che verrà avviato automaticamente da Visual Studio.

Per completare questo passaggio, fare clic con il pulsante destro del mouse sul progetto DemoApplication e scegliere l'opzione "Imposta come progetto di avvio".

Passaggio 5) Il passaggio successivo consiste nell'aggiungere il riferimento al servizio del nostro "Guru99Webservice" alla nostra applicazione console. Questo viene fatto in modo che DemoApplication possa fare riferimento al servizio Web ea tutti i metodi Web nel servizio Web.

A tale scopo, fare clic con il pulsante destro del mouse sul file di progetto DemoApplication e scegliere l'opzione di menu Aggiungi-> Riferimento al servizio.

Passaggio 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 raccoglierà automaticamente il file WSDL per il nostro servizio web TutorialService.
  2. Successivamente, dovremmo dare un nome per il nostro servizio di riferimento. Nel nostro caso, gli diamo il nome Guru99Webservice.
  3. Quindi dobbiamo espandere l'opzione TutorialService.asmx in modo da poter vedere il metodo "GetTutorialService" sul lato destro. Qui TutorialService.asmx è il nome del nostro file .Net di Visual Studio 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"

Quando si fa 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 "Guru99Webservice" è stato aggiunto con successo alla nostra applicazione console.

Passaggio 7) Il passaggio successivo consiste nell'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();}}}

Spiegazione del codice: -

  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. Quindi creiamo una variabile chiamata "client" che verrà impostata su un'istanza del nostro riferimento al servizio che è stata creata in un passaggio precedente. Nel nostro caso, il riferimento del servizio è "Guru99Webservice.Guru99WebserviveSoapClient ()"
  3. Chiameremo quindi il nostro metodo Web "GetTutorialService" nel servizio Web TutorialService Ricordate che il nostro metodo GetTutorialService "accetta un parametro intero, quindi stiamo solo passando un parametro intero al metodo Web.
  4. Questa riga finale serve solo per garantire che la schermata del registro della console rimanga attiva in modo da poter visualizzare l'output. Questo comando attenderà solo l'input dell'utente.

Produzione

Quando vengono seguiti tutti i passaggi precedenti e viene 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 nostro registro della console.

Sommario

  • La forma completa di WSDL è il linguaggio di descrizione dei servizi Web
  • Un documento WSDL è un documento utilizzato per descrivere un servizio Web. Questa è la chiave per qualsiasi applicazione client per 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 il richiamo da un linguaggio di programmazione diverso.
  • Il documento WSDL è normalmente costituito da un messaggio. Per ogni metodo Web, ci sono 2 messaggi, uno per l'input e l'altro per l'output. Insieme formano un'operazione.
  • I file del linguaggio di descrizione dei servizi Web (acronimo di WSDL) vengono normalmente creati nell'editor che viene utilizzato per il linguaggio di programmazione corrispondente.
  • Abbiamo visto come possiamo utilizzare 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 quindi in grado di accedere ai metodi web nel nostro servizio web.