¿Qué es WSDL? Significado y ejemplo.
⚡ Resumen inteligente
WSDL (servicios web DescriptWSDL (Lenguaje de Servicios Web) es un archivo basado en XML que indica a una aplicación cliente qué hace un servicio web y cómo invocarlo. Este recurso explica la estructura, los elementos, los mensajes, los tipos de puerto, las vinculaciones y un ejemplo de publicación de WSDL.
¿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 la parte más importante de los servicios web, que es el WSDL, o Web Services. DescriptLenguaje ión. Actúa como el contracentre el servicio web y cualquier cliente que quiera consumirlo.
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 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 correspondiente. 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
- Servicio
Un aspecto clave a tener en cuenta aquí es la definición de mensajes, que es lo que se transmite mediante el Protocolo SOAPEn realidad, esto se define en el documento WSDL. El documento WSDL le indica a una aplicación cliente qué tipos de mensajes SOAP envía y acepta el servicio web.
En otras palabras, el WSDL es como una postal con la dirección de un lugar específico. Esta dirección proporciona los detalles de dónde debe entregarse el mensaje. De la misma manera, el archivo WSDL es la postal que contiene la dirección del servicio web que puede ofrecer todas las funcionalidades que el cliente necesita.
<!-- 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 WSDL
Elementos WSDL
El archivo WSDL contiene las siguientes partes principales:
- El La etiqueta se utiliza para definir todos los tipos de datos complejos que se usarán en el mensaje intercambiado entre la aplicación cliente y el servicio web. Esto es importante porque si el servicio web trabaja con un tipo de dato complejo, la aplicación cliente debe saber cómo procesarlo. Los tipos de datos como float, números y cadenas son tipos de datos simples, pero el servicio web podría proporcionar tipos de datos estructurados. Por ejemplo, podría haber un tipo de dato llamado EmployeeDataType que podría tener dos elementos llamados "EmployeeName" (de tipo cadena) y "EmployeeID" (de tipo número o entero). Juntos forman un tipo de dato complejo.
- El La etiqueta se utiliza para definir el mensaje que se intercambia entre la aplicación cliente y el servidor web. Estos mensajes explican las operaciones de entrada y salida que puede realizar el servicio web. Un ejemplo de mensaje podría ser uno que reciba el ID de empleado (EmployeeID) y cuyo mensaje de salida sea el nombre del empleado en función del ID proporcionado.
- 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.
- El La etiqueta se utiliza para vincular la operación a un tipo de puerto específico. De esta forma, cuando la aplicación cliente llame al puerto correspondiente, podrá acceder a las operaciones asociadas. Los tipos de puerto funcionan como interfaces. Por lo tanto, si una aplicación cliente necesita usar un servicio web, debe utilizar la información de vinculación para asegurarse de poder conectarse a la interfaz que proporciona dicho servicio.
- El 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 puede estar ubicado en una dirección como http://localhost/Guru99/Tutorial.asmx. La etiqueta de servicio tendrá el URL definido, lo que le indica 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 creadas en varios lenguajes de programación se comuniquen entre sí. Por ejemplo, podemos hacer que una aplicación web .Net se comunique con una 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 mediante HTTP. HTTP es un protocolo utilizado por todas las aplicaciones web. Por lo tanto, era lógico garantizar que los servicios web también pudieran funcionar mediante el 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 simple. La razón por la que está en XML es para que el archivo pueda ser leído por cualquier lenguaje de programación. Entonces, si la aplicación cliente fue escrita en .Net, entenderá el archivo XML. De manera similar, si la aplicación cliente fue escrita en el Java Si el lenguaje de programación lo conoce, también podrá 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. Así que aquí es donde se implementa el servicio. Si no tuviera el archivo WSDL y quisiera un Java clase para consumir el servicio web, necesitarías mucho esfuerzo de codificación para lograr esto. Pero ahora con el archivo WSDL, que está en XML y puede ser entendido por cualquier lenguaje de programación, puedes tener fácilmente una 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 función 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 y tiene un parámetro llamado TutorialID. Este parámetro es de tipo numérico, especificado por el tipo xsd:number.
- El mensaje de salida se conoce como TutorialNameResponse y tiene un parámetro llamado TutorialName. Este parámetro es de tipo cadena, especificado por el tipo xsd:string.
Enlace de tipo de puerto
En WSDL, los puertos se utilizan para definir una operación completa que ofrece el servicio web. En el tema anterior, vimos que nuestro servicio web proporcionaba dos mensajes: uno de entrada llamado "TutorialNameRequest" y otro de salida llamado "TutorialNameResponse". Juntos, el mensaje de entrada y el de salida conforman lo que se conoce como una operación completa.
WSDL proporciona un elemento llamado que se utiliza para definir las operaciones proporcionadas por el servicio web.
Así que en nuestro ejemplo anterior podemos observar lo siguiente:
- El nombre del tipo de puerto que encapsula la operación se indica como "Tutorial_PortType".
- La operación en sí recibe el nombre de "Tutorial". Por lo tanto, nuestra operación básicamente proporciona un TutorialName si se proporciona el TutorialID como parámetro de entrada.
- A continuación, presentamos nuestros dos mensajes, uno para la entrada y otro para la salida, que conforman 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.
- El ejemplo anterior muestra que el enlace consta de un nombre, que en nuestro caso es "TutorialSoapBinding". En términos sencillos, el enlace es la información que la aplicación cliente utiliza para conectarse al servicio web. Una vez conectado al servicio web, puede invocar las diversas operaciones que este expone.
- La capa de transporte se especifica 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 por la 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 puede resultar intimidante para cualquier usuario. Analizaremos las diferentes partes en detalle en los siguientes tutoriales, pero por ahora, veamos un resumen de la función de cada sección del archivo WSDL.
Publicación del ejemplo de servicio web
Veamos ahora un ejemplo de cómo publicar y consumir un servicio web usando Visual Studio. En este ejemplo, crearemos un servicio web con un método web. Este método aceptará un parámetro entero llamado "TutorialID". El método web devolverá una cadena llamada "Servicios web".
A continuación, crearemos una aplicación de consola que consumirá este servicio web y llamará a nuestro método web según corresponda. 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 han explicado cómo se crea un proyecto web y un servicio web. aquíSiga los mismos pasos para crear el proyecto y el servicio web. Lo fundamental es introducir 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 TutorialID) { string TutorialName = "Web Services"; return TutorialName; } } }
Code Explicación:
- Aquí estamos creando un método web llamado “Guru99WebService.” En este método web, estamos incluyendo 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 hayamos definido el archivo de servicios web, el siguiente paso es crear un proyecto cliente que consumirá este servicio web. Creemos una aplicación de consola simple que llamará a este servicio web, invocará el “Guru99WebService”, y luego muestra la salida del método web en la pantalla de registro de la consola. Sigue los pasos a continuación para crear una aplicación de consola. Haz clic con el botón derecho en el archivo de solución de Visual Studio y elige la opción Agregar->Nuevo proyecto.
Paso 3) En este paso,
- Asegúrese de elegir primero el Visual C# Windows opción. Luego elija la opción de crear una aplicación de consola.
- Asigne un nombre a su proyecto, que en nuestro caso se ha asignado como "Aplicación de demostración".
Tras hacer clic en el botón Aceptar en la pantalla anterior, podrá ver el proyecto en el Explorador de soluciones de Visual Studio.
Paso 4) En este paso, configurará la aplicación de consola DemoApplication como proyecto de inicio. Esto garantiza que esta aplicación se inicie primero al ejecutar todo el proyecto de Visual Studio. A su vez, esta aplicación de consola 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 seleccione la opción "Establecer como proyecto de inicio".
Paso 5) El siguiente paso es agregar la referencia del servicio de nuestro “GuruAgregamos el servicio web "99Webservice" a nuestra aplicación de consola. Esto permite que la aplicación de demostración haga referencia al servicio web y a todos sus métodos. Para ello, haz clic derecho en el archivo del proyecto de la aplicación de demostración y selecciona la opción Agregar -> Referencia de servicio.
Paso 6) En este paso, proporcionaremos los diferentes valores necesarios para agregar nuestra referencia de servicio.
- En primer lugar, debemos elegir nuestra opción de descubrimiento. Esta opción seleccionará automáticamente el archivo WSDL para nuestro servicio web TutorialService.
- A continuación, debemos darle un nombre a nuestra referencia de servicio. En nuestro caso, le estamos dando el nombre de Guru99Servicio web.
- A continuación, debemos expandir 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 de nuestro servicio web.
- A continuación, 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 DemoApplication Console como se muestra a continuación. La captura de pantalla muestra que el “GuruEl servicio "99Webservice" 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(1)); Console.ReadKey(); } } }
Code Explicación:
- El primer paso consiste en seleccionar el archivo Program.cs. Este es el archivo principal que crea Visual Studio al crear una aplicación de consola. Este archivo es el que se ejecuta cuando se inicia la aplicación de consola (en nuestro caso, DemoApplication).
- 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 de servicio es 'Guru99Servicio web.Guru99WebserviceSoapClient()'.
- A continuación, llamamos a nuestro método web 'GetTutorialService' en el servicio web TutorialService. Recuerda que nuestro método GetTutorialService acepta un parámetro entero, así que simplemente le pasamos un parámetro entero.
- Esta última línea sirve simplemente para asegurar que la pantalla de registro de la consola permanezca activa y podamos ver la salida. Este comando esperará alguna entrada del usuario.
Resultado
Una vez seguidos todos los pasos anteriores y ejecutada la aplicación de demostración, se mostrará el siguiente resultado.
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.
















