¿Qué es WSDL?
El lenguaje de descripción de servicios web (WSDL) es un archivo basado en XML que básicamente le dice a la aplicación cliente lo que 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 proporciona 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, aprenderá:
- Estructura de un documento WSDL
- Elementos WSDL
- Por qué WSDL
- Parte de mensaje WSDL
- Enlace de tipo de puerto
- Crear archivo WSDL
- Publicar el ejemplo de 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 lo que realmente hace 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 necesitaría para utilizar el servicio web correspondiente.
A continuación se muestra la estructura general de un archivo WSDL
- Definición
- TargetNamespace
- Tipos de datos
- Mensajes
- Porttype
- Fijaciones
- Servicio
Una cosa clave a tener en cuenta aquí es que la definición de mensajes, que es lo que pasa por el protocolo SOAP, está realmente definida 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 son enviados y aceptados por 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 datos de la persona que entregó la postal. Por tanto, de la misma forma, el archivo WSDL es la postal, que tiene la dirección del servicio web que puede entregar toda la funcionalidad que el cliente desea.
… … … … …
A continuación se muestra un diagrama de la estructura de un archivo WSDL
Elementos WSDL
El archivo WSDL contiene las siguientes partes principales
-
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 funciona 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 flotante, números y cadenas son todos tipos de datos simples, pero podría haber tipos de datos estructurados que puede proporcionar el servicio web. Por ejemplo, podría haber un tipo de datos llamado EmployeeDataType que podría tener 2 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.
-
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 un 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. -
La etiqueta
se utiliza para encapsular cada mensaje 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. -
La etiqueta
se usa 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. Entonces, si una aplicación cliente necesita usar un servicio web, debe usar la información de enlace para asegurarse de que pueda conectarse a la interfaz proporcionada por ese servicio web. -
La etiqueta
es un nombre que se le da al servicio web en sí. 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 se puede ubicar 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 dirá 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 propósito principal es permitir que múltiples aplicaciones construidas en varios lenguajes de programación se comuniquen entre sí. Por ejemplo, podemos hacer que una aplicación web .Net se comunique con una aplicación Java 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 construir 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 asegurarse de que los servicios web también tuvieran la capacidad de funcionar sobre el protocolo HTTP.
- Los servicios web se ajustan a una especificación de idioma 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. La razón por la que está en XML es para que cualquier lenguaje de programación pueda leer el archivo.
Entonces, si la aplicación cliente estuviera escrita en .Net, entendería el archivo XML. De manera similar, si la aplicación cliente se escribió en el lenguaje de programación Java, también podría interpretar el archivo WSDL.
El archivo WSDL es lo que une todo. En el diagrama anterior, puede ver que puede crear un servicio web en el lenguaje .Net.
Entonces aquí es donde se implementa el servicio. Si no tuviera el archivo WSDL y quisiera que una clase Java consumiera 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 puede hacer que una clase Java consuma fácilmente el servicio web .Net. Por tanto, la cantidad de esfuerzo de codificación se reduce considerablemente.
Parte de mensaje WSDL
El WSDL consta de una sección denominada "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
A continuación se muestra un ejemplo simple 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 de tutorial" como parámetro al servicio web.
- Como podemos ver, el servicio web tiene 2 mensajes, uno para la entrada y otro para la salida.
- 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
- El mensaje de salida se conoce como TutorialNameResponse que tiene un parámetro llamado TutorialName. Este parámetro es del tipo string especificado por 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 proporcionó 2 mensajes, uno para la entrada llamada "TutorialNameRequest" y el otro para la salida llamada "TutorialNameResponse". Juntos, el formulario de mensaje de entrada y salida se conoce como una operación completa.
WSDL proporciona un elemento llamado
Entonces, en nuestro ejemplo anterior, podemos notar lo siguiente:
- El nombre del tipo de puerto que encapsula la operación se da como "Tutorial_PortType".
- La operación en sí recibe el nombre de "Tutorial". Entonces, nuestra operación básicamente proporciona un TutorialName si el TutorialID se proporciona como un parámetro de entrada.
- A continuación están nuestros 2 mensajes, uno para la entrada y el otro para la salida que forma nuestra operación.
Además del elemento
- El ejemplo anterior muestra que el enlace consiste en un nombre de enlace que en nuestro caso se da como "TutorialSoapBinding". Enlazar, en términos simples, es la información que utiliza la aplicación cliente para vincularse al servicio web. Una vez que está realmente vinculado al servicio web, tiene la capacidad de llamar a las diversas operaciones expuestas por el servicio web.
- La capa de transporte se da como http: // lo que significa que los mensajes que se transferirán a través del protocolo HTTP.
Crear 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 Java, crean automáticamente el archivo WSDL.
A continuación se muestra un ejemplo de un archivo WSDL creado en Visual Studio.
TutorialService
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.
Publicar el ejemplo de servicio web
Ahora veamos un ejemplo de cómo podemos publicar un servicio web y consumirlo usando Visual Studio.
En este ejemplo, crearemos un servicio web con un WebMethod. Este método aceptará un parámetro Integer llamado "TutorialID". 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. Aquí se explican los pasos detallados de cómo se crea el proyecto web Asp.Net y un servicio web; 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.
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:
- 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.
- 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á "Guru99WebService" y luego mostrará la salida 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
Paso 3) En este paso,
- Asegúrese de elegir primero la opción de Windows Visual C #. Luego elija la opción de crear una aplicación de consola.
- Dé un nombre para su proyecto que en nuestro caso se ha dado como "DemoApplication".
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.
Paso 4) En este paso, configurará la aplicación DemoApplication Console 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 con el botón derecho en el proyecto DemoApplication y elija la opción "Establecer como proyecto de inicio".
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 todos los métodos web en el servicio web.
Para hacer esto, haga clic con el botón derecho en el archivo de proyecto DemoApplication y elija la opción de menú Agregar-> Referencia de servicio.
Paso 6) En este paso, proporcionaremos los diferentes valores que se requieren para agregar nuestra referencia de servicio
- En primer lugar, debemos elegir nuestra opción de descubrimiento. Esta opción recogerá automáticamente el archivo WSDL para nuestro servicio web TutorialService.
- A continuación, debemos dar un nombre para nuestra referencia de servicio. En nuestro caso, le estamos dando el nombre de Guru99Webservice.
- Luego, necesitamos expandir la opción TutorialService.asmx para que podamos tener la capacidad de ver el método 'GetTutorialService' en el lado derecho. Aquí TutorialService.asmx es el nombre de nuestro archivo Visual Studio .Net que contiene el código de nuestro servicio web.
- Luego veremos nuestro método web que teníamos en nuestro servicio web conocido como "GetTutorialService"
Cuando hacemos clic en el botón 'Aceptar', todo el código necesario para acceder a este servicio web se agregará a nuestra aplicación Consola de aplicaciones de demostración como se muestra a continuación.
La captura de pantalla muestra que "Guru99Webservice" se agregó correctamente a nuestra aplicación de consola.
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
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: -
- La primera parte es elegir el archivo Program.cs. Este es el archivo principal que Visual Studio crea cuando se crea una aplicación de consola. Este archivo es lo que se ejecuta cuando se ejecuta la aplicación de consola (en nuestro caso, la aplicación de demostración).
- 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 ()'
- Entonces llamamos a nuestro método web 'GetTutorialService' en el servicio web TutorialService. Recuerde que nuestro método GetTutorialService 'acepta un parámetro de número entero, por lo que simplemente estamos pasando un parámetro de número entero al método web.
- Esta última línea es solo para garantizar que la pantalla de registro de la consola permanezca activa para que podamos ver la salida. Este comando solo esperará alguna entrada del usuario.
Producción
Cuando se siguen todos los pasos anteriores y se ejecuta la aplicación de demostración, se mostrará el siguiente resultado.
En el resultado, 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 la consola.
Resumen
- La forma completa de WSDL es el lenguaje de descripción de servicios web
- 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 2 mensajes, uno es para la entrada y el otro es para la salida. Juntos forman una operación.
- Los archivos de lenguaje de descripción de servicios web (siglas de 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.