Tutorial de WSDL: Servicios web DescriptLenguaje iónico con ejemplo

¿Qué es WSDL?

Servicios Web Descriptlenguaje iónico (WSDL) es un archivo basado en XML que básicamente le dice a la aplicación cliente qué hace el servicio web. El archivo WSDL se utiliza para describir en pocas palabras lo que hace el servicio web y le brinda al cliente toda la información necesaria para conectarse al servicio web y utilizar toda la funcionalidad proporcionada por el servicio web.

En este tutorial nos centraremos en el último punto, que es la parte más importante de los servicios web, y es el WSDL o el lenguaje de descripción de servicios web.

El archivo WSDL se utiliza para describir en pocas palabras lo que hace el servicio web y le brinda al cliente toda la información necesaria para conectarse al servicio web y utilizar toda la funcionalidad proporcionada por el servicio web.

Estructura de un documento WSDL

Un documento WSDL se utiliza para describir un servicio web. Esta descripción es necesaria para que las aplicaciones cliente puedan comprender qué hace realmente el servicio web.

  • El archivo WSDL contiene la ubicación del servicio web y
  • Los métodos que expone el servicio web.

El archivo WSDL en sí puede parecer muy complejo para cualquier usuario, pero contiene toda la información necesaria que cualquier aplicación cliente requeriría para utilizar el servicio web relevante.

A continuación se muestra la estructura general de un archivo WSDL.

  • Definición
  • TargetEspacio de nombres
  • Tipos de datos
  • Mensajes
  • Tipo de puerto
  • encuadernaciones
  • TRANSPORTE GRATUITO

Una cosa clave a tener en cuenta aquí es que la definición de mensajes, que es lo que pasa por el Protocolo SOAP en realidad está definido en el documento WSDL.

El documento WSDL en realidad le dice a una aplicación cliente cuáles son los tipos de mensajes SOAP que envía y acepta el servicio web.

En otras palabras, el WSDL es como una postal que tiene la dirección de una ubicación en particular. La dirección proporciona los detalles de la persona que entregó la postal. Por lo tanto, de la misma manera, el archivo WSDL es la postal, que tiene la dirección del servicio web que puede entregar toda la funcionalidad que el cliente desea.

<!-- 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>

A continuación se muestra un diagrama de la estructura de un archivo WSDL.

Estructura de un documento WSDL
Estructura de un WSDL

Elementos WSDL

El archivo WSDL contiene las siguientes partes principales

  1. El La etiqueta se utiliza para definir todos los tipos de datos complejos que se utilizarán en el mensaje intercambiado entre la aplicación cliente y el servicio web. Este es un aspecto importante de la aplicación cliente, porque si el servicio web trabaja con un tipo de datos complejo, entonces la aplicación cliente debe saber cómo procesar el tipo de datos complejo. Los tipos de datos como float, números y cadenas son todos tipos de datos simples, pero podría haber tipos de datos estructurados que pueden ser proporcionados por el servicio web.
    Por ejemplo, podría haber un tipo de datos llamado EmployeeDataType que podría tener dos elementos llamados “EmployeeName” de tipo cadena y “EmployeeID” de tipo número o entero. Juntos forman una estructura de datos que luego se convierte en un tipo de datos complejo.
  2. El La etiqueta se utiliza para definir el mensaje que se intercambia entre la aplicación cliente y el servidor web. Estos mensajes explicarán las operaciones de entrada y salida que puede realizar el servicio web. Un ejemplo de mensaje puede ser un mensaje que acepta el EmployeeID de un empleado y el mensaje de salida puede ser el nombre del empleado según el EmpoyeeID proporcionado.
  3. El La etiqueta se utiliza para encapsular todos los mensajes de entrada y salida en una operación lógica. Por lo tanto, podría haber una operación llamada "GetEmployee" que combina el mensaje de entrada de aceptar el EmployeeID de una aplicación cliente y luego enviar el EmployeeName como mensaje de salida.
  4. El La etiqueta se utiliza para vincular la operación al tipo de puerto en particular. Esto es para que cuando la aplicación cliente llame al tipo de puerto relevante, pueda acceder a las operaciones que están vinculadas a este tipo de puerto. Los tipos de puerto son como interfaces. Por lo tanto, si una aplicación cliente necesita usar un servicio web, debe usar la información de vinculación para asegurarse de que puede conectarse a la interfaz proporcionada por ese servicio web.
  5. El La etiqueta es un nombre dado al propio servicio web. Inicialmente, cuando una aplicación cliente realiza una llamada al servicio web, lo hará llamando al nombre del servicio web. Por ejemplo, un servicio web puede estar ubicado en una dirección como http://localhost/Guru99/Tutorial.asmx . La etiqueta de servicio en realidad tendrá la URL definida como http://localhost/Guru99/Tutorial.asmx, que en realidad le indicará a la aplicación cliente que hay un servicio web disponible en esta ubicación.

¿Por qué WSDL?

Un servicio web es un componente importante en la creación de aplicaciones web modernas. Su objetivo principal es permitir que múltiples aplicaciones creadas en varios lenguajes de programación se comuniquen entre sí. Por ejemplo, podemos hacer que una aplicación web .Net se comunique con un Java aplicación a través de un servicio web.

Un servicio web tiene las siguientes características clave

  • Está construido utilizando el lenguaje de programación XML. Casi todas las tecnologías modernas como .Net y Java tienen comandos correspondientes que tienen la capacidad de trabajar con XML. Por lo tanto, se tomó XML como el lenguaje más apropiado para crear servicios web.
  • Los servicios web se comunican a través de HTTP. HTTP es un protocolo utilizado por todas las aplicaciones basadas en web. Por lo tanto, tenía sentido garantizar que los servicios web también tuvieran la capacidad de funcionar a través del protocolo HTTP.
  • Los servicios web se ajustan a una especificación de lenguaje particular. Esta especificación la establece el W3C, que es el organismo rector de todos los estándares web.
  • Los servicios web tienen un lenguaje de descripción conocido como WSDL, que se utiliza para describir el servicio web.

El archivo WSDL está escrito en XML antiguo y simple. La razón por la que está en XML es para que el archivo pueda leerse en cualquier lenguaje de programación.

Entonces, si la aplicación cliente estuviera escrita en .Net, comprendería el archivo XML. De manera similar, si la aplicación del cliente fue escrita en el Java lenguaje de programación entonces también podría interpretar el archivo WSDL.

Necesita WSDL

El archivo WSDL es lo que une todo. En el diagrama anterior, puede ver que puede crear un servicio web en lenguaje .Net.

Aquí es donde se implementa el servicio. Si no tenía el archivo WSDL y quería un Java class para consumir el servicio web, necesitaría mucho esfuerzo de codificación para lograrlo.

Pero ahora, con el archivo WSDL que está en XML, que puede ser entendido por cualquier lenguaje de programación, ahora puedes tener fácilmente un Java La clase consume el servicio web .Net. Por tanto, la cantidad de esfuerzo de codificación se reduce considerablemente.

Parte del mensaje WSDL

El WSDL consta de una sección llamada "mensajes" que se indica con el elemento.

Este elemento se utiliza básicamente para describir los datos que se intercambian entre el servicio web y la aplicación cliente.

Cada servicio web siempre tendrá 2 tipos de mensajes,

  • Uno es para la entrada del servicio web y el otro es para la salida del servicio web.
  • La entrada se utiliza para describir los parámetros que acepta el servicio web. Este es un aspecto importante de la aplicación cliente para que conozca los valores que se enviarán como parámetros al servicio web.
  • El otro tipo de mensaje es el mensaje de salida que indica qué resultados proporciona el servicio web.

Cada mensaje, a su vez, tendrá un elemento que se utiliza para describir el parámetro utilizado por el mensaje de entrada y salida.

A continuación se muestra un ejemplo sencillo de cómo se ve un mensaje para un servicio web. La funcionalidad del servicio web es proporcionar el nombre de un "Tutorial" una vez que se envía un "ID del tutorial" como parámetro al servicio web.

Parte del mensaje WSDL

  1. Como podemos ver el servicio web tiene 2 mensajes, uno para la entrada y otro para la salida.
  2. El mensaje de entrada se conoce como TutorialNameRequest que tiene un parámetro llamado TutorialID. Este parámetro es del tipo número especificado por el tipo xsd:number.
  3. El mensaje de salida se conoce como TutorialNameResponse que tiene un parámetro llamado TutorialName. Este parámetro es del tipo cadena que se especifica mediante el tipo xsd:string

Enlace de tipo de puerto

Los puertos se utilizan en WSDL para definir una operación completa que ofrece el servicio web.

En el tema anterior, vimos que nuestro servicio web proporcionaba dos mensajes: uno para la entrada llamado “TutorialNameRequest” y el otro para la salida llamado “TutorialNameResponse”. El formato del mensaje de entrada y salida se conoce como una operación completa.

WSDL proporciona un elemento llamado que se utiliza para definir las operaciones proporcionadas por el servicio web.

Enlace de tipo de puerto

Así que en nuestro ejemplo anterior podemos observar lo siguiente:

  1. El nombre del tipo de puerto que encapsula la operación se da como “Tutorial_PortType”.
  2. A la operación en sí se le asigna el nombre "Tutorial". Por lo tanto, nuestra operación básicamente proporciona un TutorialName si se proporciona el TutorialID como parámetro de entrada.
  3. A continuación están nuestros 2 mensajes, uno para la entrada y otro para la salida que forman nuestra operación.

Además de la elemento, también está el elemento que se utiliza para definir cómo se transferirán los mensajes.

Enlace de tipo de puerto

  1. El ejemplo anterior muestra que el enlace consiste en un nombre de enlace que, en nuestro caso, se proporciona como "TutorialSoapBinding". El enlace, en términos simples, es la información que la aplicación cliente utiliza para vincularse al servicio web. Una vez que está realmente vinculada al servicio web, tiene la capacidad de llamar a las diversas operaciones que expone el servicio web.
  2. La capa de transporte se proporciona como http://, lo que significa que los mensajes se transferirán a través del protocolo HTTP.

Creando un archivo WSDL

El archivo WSDL se crea cada vez que se crea un servicio web en cualquier lenguaje de programación.

Dado que el archivo WSDL es bastante complicado de generar desde cero, todos los editores como Visual Studio para .Net y Eclipse para una Java creará automáticamente el archivo WSDL.

A continuación se muestra un ejemplo de un archivo WSDL creado en 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>

El archivo WSDL anterior parece muy intimidante para cualquier usuario; cubriremos las diferentes partes en detalle en los tutoriales posteriores, pero por ahora, echemos un vistazo resumido a lo que realmente hace cada sección del archivo WSDL.

Publicación del ejemplo de servicio web

Ahora veamos un ejemplo de cómo podemos publicar un servicio web y consumirlo mediante Visual Studio.

En este ejemplo, crearemos un servicio web con un WebMethod. Este método aceptará un parámetro entero llamado "TutorialID". Luego, el método web devolverá una cadena llamada "Servicios web".

Luego crearemos una aplicación basada en consola, que consumirá este servicio web y llamará a nuestro método web en consecuencia.

Veamos los pasos necesarios para llevar a cabo este ejemplo.

Paso 1) El primer paso es crear su servicio web. Los pasos detallados de cómo asp.net Se ha explicado el proyecto web y se crea un servicio web. aquí; Siga los mismos pasos para crear el proyecto y el servicio web en consecuencia. La parte clave es ingresar el siguiente código en el archivo de servicios web.

Publicación del ejemplo de servicio 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;
		}
	}
}

Explicación del código:

  1. Aquí estamos creando un WebMethod llamado "Guru99WebService". En este método web, incluimos un parámetro entero que debe pasarse cada vez que se llama a este método web.
  2. A continuación, definimos una variable llamada "TutorialName" que contendrá el valor de cadena de "Servicios web". Este es el valor que se devolverá cuando se llame al servicio web.

Paso 2) Una vez que hemos definido el archivo de servicios web, el siguiente paso es crear un proyecto de cliente que consumirá este servicio web.

Creemos una aplicación de consola simple que llamará a este servicio web, invocará el "Guru99WebService" y luego mostrará el resultado del método web en la pantalla de registro de la consola. Siga los pasos a continuación para crear una aplicación de consola.

Haga clic con el botón derecho en el archivo de solución de Visual Studio y elija la opción Agregar->Nuevo proyecto

Publicación del ejemplo de servicio web

Paso 3) En este paso,

  1. Asegúrese de elegir primero el Visual C# Windows opción. Luego elija la opción de crear una aplicación de consola.
  2. Asigne un nombre a su proyecto, que en nuestro caso se ha asignado como "Aplicación de demostración".

Publicación del ejemplo de servicio web

Después de hacer clic en el botón Aceptar en la pantalla anterior, podrá ver el proyecto en el Explorador de soluciones en Visual Studio.

Publicación del ejemplo de servicio web

Paso 4) En este paso, debe configurar la aplicación de consola DemoApplication como proyecto de inicio. Esto se hace para garantizar que esta aplicación se inicie primero cuando se ejecuta todo el proyecto de Visual Studio. Esta aplicación de consola, a su vez, llamará al servicio web que Visual Studio iniciará automáticamente.

Para completar este paso, haga clic derecho en el proyecto DemoApplication y elija la opción "Establecer como proyecto de inicio".

Publicación del ejemplo de servicio web

Paso 5) El siguiente paso es agregar la referencia de servicio de nuestro “Guru99Webservice” a nuestra aplicación de consola. Esto se hace para que DemoApplication pueda hacer referencia al servicio web y a todos los métodos web del servicio web.

Para hacer esto, haga clic derecho en el archivo del proyecto DemoApplication y elija la opción de menú Agregar->Referencia de servicio.

Publicación del ejemplo de servicio web

Paso 6) En este paso, proporcionaremos los diferentes valores que se requieren para agregar nuestra referencia de servicio.

  1. En primer lugar debemos elegir nuestra opción de descubrir. Esta opción recogerá automáticamente el archivo WSDL para nuestro servicio web TutorialService.
  2. A continuación, debemos darle un nombre a nuestra referencia de servicio. En nuestro caso, le damos el nombre de Guru99Webservice.
  3. Luego, debemos ampliar la opción TutorialService.asmx para poder ver el método 'GetTutorialService' en el lado derecho. Aquí, TutorialService.asmx es el nombre de nuestro archivo de Visual Studio .Net que contiene el código para nuestro servicio web.
  4. Luego veremos nuestro método Web el cual teníamos en nuestro servicio web conocido como “GetTutorialService”

Publicación del ejemplo de servicio web

Cuando hacemos clic en el botón "Aceptar", todo el código requerido para acceder a este servicio web se agregará a nuestra aplicación DemoApplication Console como se muestra a continuación.

La captura de pantalla muestra que el "Guru99Webservice" se agregó correctamente a nuestra aplicación de consola.

Publicación del ejemplo de servicio web

Paso 7) El siguiente paso es agregar el código a nuestra aplicación de consola para acceder al método web en nuestro servicio web. Abra el archivo de código Program.cs que viene automáticamente con la aplicación de consola y agregue el siguiente código

Publicación del ejemplo de servicio web

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

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

Explicación del código: -

  1. La primera parte consiste en elegir el archivo Program.cs. Este es el archivo principal que crea Visual Studio cuando se crea una aplicación de consola. Este archivo es el que se ejecuta cuando se ejecuta la aplicación de consola (en nuestro caso, la aplicación de demostración).
  2. Luego creamos una variable llamada "cliente" que se establecerá en una instancia de nuestra referencia de Servicio que se creó en un paso anterior. En nuestro caso, la referencia del servicio es 'Guru99Webservice.Guru99WebserviveSoapClient()'
  3. Luego llamamos a nuestro método web 'GetTutorialService' en el servicio web TutorialService. Recuerde que nuestro método GetTutorialService' acepta un parámetro entero, por lo que simplemente estamos pasando un parámetro entero al método web.
  4. Esta última línea es solo para garantizar que la pantalla de registro de la consola permanezca activa para que podamos ver el resultado. Este comando simplemente esperará alguna entrada del usuario.

Salida

Cuando se sigan todos los pasos anteriores y se ejecute DemoApplication, se mostrará el siguiente resultado.

Publicación del ejemplo de servicio web

Desde la salida, podemos ver claramente que DemoApplication llama a nuestro servicio web y que la cadena devuelta por el servicio web se muestra en nuestro registro de consola.

Resumen

  • La forma completa de WSDL es Servicios web. Descriptlenguaje iónico
  • Un documento WSDL es un documento que se utiliza para describir un servicio web. Esto es clave para que cualquier aplicación cliente sepa dónde se encuentra el servicio web. También permite que la aplicación cliente comprenda los métodos disponibles en el servicio web.
  • El archivo WSDL hace que sea muy fácil implementar el servicio web en un lenguaje de programación y llamarlo desde un lenguaje de programación diferente.
  • El documento WSDL normalmente consta de un mensaje. Para cada método web, hay dos mensajes: uno para la entrada y el otro para la salida. Juntos forman una operación.
  • Servicios Web DescriptLos archivos ion Language (que significa WSDL) normalmente se crean en el editor que se utiliza para el lenguaje de programación correspondiente.
  • Hemos visto cómo podemos consumir un servicio web en Visual Studio. Esto se puede hacer creando otro proyecto que sea una aplicación de consola. Luego, al agregar una referencia de servicio, podemos acceder a los métodos web en nuestro servicio web.