O que é WSDL? Significado e exemplos.

⚡ Resumo Inteligente

WSDL (Serviços Web DescriptWSDL (Web Service Laboratory) é um arquivo baseado em XML que informa a um aplicativo cliente o que um serviço web faz e como invocá-lo. Este recurso explica a estrutura do WSDL, seus elementos, mensagens, tipos de porta, associações e um exemplo de publicação.

  • 📄 Definição Essencial: WSDL é um arquivo XML que descreve a localização, as operações e as mensagens que um serviço web aceita e retorna.
  • ???? Estrutura do Documento: Um documento WSDL é organizado em elementos de tipo, mensagem, tipo de porta, vinculação e serviço, envoltos em uma raiz de definições.
  • 🔤 Elementos chave: O elemento `types` define os tipos de dados, `message` define os dados trocados, `portType` agrupa as operações e `binding` as mapeia para um protocolo.
  • ✉️ Mensagens e Portas: Cada método web utiliza uma mensagem de entrada e uma mensagem de saída que, juntas, formam uma operação exposta através de um tipo de porta.
  • 🛠️ Gerado automaticamente: Editores como o Visual Studio e Eclipse Gera automaticamente o arquivo WSDL, que os aplicativos cliente utilizam para chamar o serviço.

O que é WSDL?

O que é WSDL?

Serviços web Descriptlinguagem de íon (WSDL) é um arquivo baseado em XML que basicamente informa ao aplicativo cliente o que o serviço web faz. O arquivo WSDL é usado para descrever resumidamente o que o serviço web faz e fornece ao cliente todas as informações necessárias para se conectar ao serviço web e usar todas as funcionalidades fornecidas pelo serviço web.

Neste tutorial, vamos nos concentrar na parte mais importante dos serviços web: o WSDL, ou Web Service Design. DescriptLinguagem ion. Ela atua como o contract entre o serviço web e qualquer cliente que queira consumi-lo.

Estrutura de um documento WSDL

Um documento WSDL é usado para descrever um serviço web. Essa descrição é necessária para que os aplicativos cliente possam entender o que o serviço web realmente faz.

  • O arquivo WSDL contém a localização do serviço web, e
  • Os métodos que são expostos pelo serviço web.

O próprio arquivo WSDL pode parecer muito complexo para qualquer usuário, mas contém todas as informações necessárias para que um aplicativo cliente utilize o serviço web correspondente. Abaixo está a estrutura geral de um arquivo WSDL:

  • Definição
  • TargetNamespace
  • Tipos de dados
  • Mensagens
  • Tipo de porta
  • Ligações
  • Serviço

Um ponto fundamental a observar aqui é a definição de mensagens, que é o que é transmitido pelo Protocolo SOAP, é definido no documento WSDL. O documento WSDL informa a um aplicativo cliente quais os tipos de mensagens SOAP que são enviadas e aceitas pelo serviço Web.

Em outras palavras, o WSDL é como um cartão postal com o endereço de um local específico. O endereço fornece os detalhes de onde a mensagem deve ser entregue. Da mesma forma, o arquivo WSDL é o cartão postal com o endereço do serviço web que pode fornecer todas as funcionalidades desejadas pelo cliente.

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

Abaixo encontra-se um diagrama da estrutura de um arquivo WSDL.

Estrutura de um documento WSDL

Estrutura de um WSDL

Elementos WSDL

O arquivo WSDL contém as seguintes partes principais:

  1. O A tag é usada para definir todos os tipos de dados complexos que serão usados ​​nas mensagens trocadas entre o aplicativo cliente e o serviço web. Isso é importante porque, se o serviço web trabalha com um tipo de dado complexo, o aplicativo cliente precisa saber como processá-lo. Tipos de dados como float, números e strings são tipos de dados simples, mas o serviço web pode fornecer tipos de dados estruturados. Por exemplo, pode haver um tipo de dado chamado EmployeeDataType que pode ter dois elementos: “EmployeeName”, do tipo string, e “EmployeeID”, do tipo número ou inteiro. Juntos, eles formam um tipo de dado complexo.
  2. O A tag é usada para definir a mensagem trocada entre o aplicativo cliente e o servidor web. Essas mensagens explicam as operações de entrada e saída que podem ser realizadas pelo serviço web. Um exemplo de mensagem seria aquela que recebe o ID de um funcionário e retorna o nome do funcionário com base no ID fornecido.
  3. O tag é usada para encapsular cada mensagem de entrada e saída em uma operação lógica. Portanto, poderia haver uma operação chamada “GetEmployee” que combina a mensagem de entrada de aceitação do EmployeeID de um aplicativo cliente e, em seguida, envio do EmployeeName como mensagem de saída.
  4. O A tag é usada para associar a operação a um tipo de porta específico. Isso permite que, quando o aplicativo cliente chama o tipo de porta relevante, ele possa acessar as operações a ela associadas. Os tipos de porta são semelhantes a interfaces. Portanto, se um aplicativo cliente precisa usar um serviço web, ele precisa usar as informações de associação para garantir que possa se conectar à interface fornecida por esse serviço web.
  5. O A tag é um nome atribuído ao próprio serviço web. Inicialmente, quando um aplicativo cliente faz uma chamada para o serviço web, ele o faz chamando o nome do serviço. Por exemplo, um serviço web pode estar localizado em um endereço como http://localhost/.Guru99/Tutorial.asmx. A etiqueta de serviço terá o URL definido, o que informa ao aplicativo cliente que um serviço web está disponível neste local.

Por que WSDL

Um serviço web é um componente importante na construção de aplicações web modernas. Seu principal objetivo é permitir que múltiplas aplicações, construídas em diferentes linguagens de programação, se comuniquem entre si. Por exemplo, podemos ter uma aplicação web .NET se comunicando com uma aplicação web .NET. Java aplicação através de um serviço Web.

Um serviço web possui as seguintes características principais:

  • É construído usando a linguagem de programação XML. Quase todas as tecnologias modernas, como .Net e Java possuem comandos correspondentes que têm a capacidade de trabalhar com XML. Assim, o XML foi considerado a linguagem mais apropriada para a construção de serviços web.
  • Os serviços web comunicam-se através do protocolo HTTP. O HTTP é um protocolo utilizado por todas as aplicações web. Portanto, fazia sentido garantir que os serviços web também tivessem a capacidade de funcionar com o protocolo HTTP.
  • Os serviços da Web estão em conformidade com uma especificação de linguagem específica. Esta especificação é definida pelo W3C, que é o órgão regulador de todos os padrões da web.
  • Os serviços da Web possuem uma linguagem de descrição conhecida como WSDL, que é usada para descrever o serviço da Web.

O arquivo WSDL é escrito em XML puro. O motivo de ser em XML é para que o arquivo possa ser lido por qualquer linguagem de programação. Assim, se o aplicativo cliente fosse escrito em .NET, ele entenderia o arquivo XML. Da mesma forma, se o aplicativo cliente fosse escrito em outra linguagem de programação, ele entenderia o arquivo XML. Java Se a linguagem de programação for adequada, ela também será capaz de interpretar o arquivo WSDL.

Necessidade de WSDL

O arquivo WSDL é o que une tudo. No diagrama acima, você pode ver que é possível criar um serviço web na linguagem .NET. É aqui que o serviço é implementado. Se você não tivesse o arquivo WSDL e quisesse um serviço web, você poderia criar um serviço web usando o .NET Framework. Java Para criar uma classe que consuma o serviço web, você precisaria de muito esforço de programação. Mas agora, com o arquivo WSDL, que é em XML e pode ser interpretado por qualquer linguagem de programação, você pode facilmente ter uma classe que consuma o serviço web. Java classe consome o serviço web .Net. Conseqüentemente, a quantidade de esforço de codificação é bastante reduzida.

Parte da mensagem WSDL

O WSDL consiste em uma seção chamada “mensagens” que é denotada pelo Elemento. Este elemento é basicamente usado para descrever os dados que são trocados entre o serviço web e o aplicativo cliente.

Cada serviço web sempre terá 2 tipos de mensagens:

  • Um é para a entrada do serviço web e o outro é para a saída do serviço web.
  • A entrada é usada para descrever os parâmetros que são aceitos pelo serviço web. Este é um aspecto importante da aplicação cliente para que ela conheça os valores a serem enviados como parâmetros ao web service.
  • O outro tipo de mensagem é a mensagem de saída que informa quais resultados são fornecidos pelo serviço web.

Cada mensagem, por sua vez, terá um elemento que é usado para descrever o parâmetro usado pela mensagem de entrada e saída.

Abaixo, segue um exemplo simples de como é uma mensagem para um serviço web. A funcionalidade do serviço web é fornecer o nome de um "Tutorial" assim que um "ID do Tutorial" for enviado como parâmetro para o serviço web.

Parte da mensagem WSDL

  1. Como podemos ver, o serviço web possui duas mensagens, uma para a entrada e outra para a saída.
  2. A mensagem de entrada é conhecida como TutorialNameRequest e possui um parâmetro chamado TutorialID. Este parâmetro é do tipo número, especificado pelo tipo xsd:number.
  3. A mensagem de saída é conhecida como TutorialNameResponse e possui um parâmetro chamado TutorialName. Este parâmetro é do tipo string, especificado pelo tipo xsd:string.

Associação de tipo de porta

Em WSDL, as portas são usadas para definir uma operação completa oferecida pelo serviço web. No tópico anterior, vimos que nosso serviço web fornecia duas mensagens: uma para entrada, chamada "TutorialNameRequest", e outra para saída, chamada "TutorialNameResponse". Juntas, as mensagens de entrada e saída formam o que é conhecido como uma operação completa.

WSDL fornece um elemento chamado que é usado para definir as operações fornecidas pelo serviço da Web.

Tipo de porta Vinculação portType

Portanto, em nosso exemplo acima, podemos observar o seguinte:

  1. O nome do tipo de porta que engloba a operação é dado como “Tutorial_PortType”.
  2. A própria operação recebe o nome de "Tutorial". Portanto, nossa operação basicamente fornece um TutorialName se o TutorialID for fornecido como parâmetro de entrada.
  3. Em seguida, temos nossas duas mensagens, uma para a entrada e outra para a saída, que formam nossa operação.

Além do elemento, há também o elemento que é utilizado para definir como as mensagens serão transferidas.

Vinculação do tipo de porta

  1. O exemplo acima mostra que a vinculação consiste em um nome de vinculação, que em nosso caso é dado como “TutorialSoapBinding”. Vinculação, em termos simples, é a informação que o aplicativo cliente usa para se vincular ao serviço web. Uma vez vinculado ao serviço web, ele passa a ter a capacidade de chamar as diversas operações expostas por esse serviço.
  2. A camada de transporte é definida como http://, o que significa que as mensagens serão transferidas através do protocolo HTTP.

Criando arquivo WSDL

O arquivo WSDL é criado sempre que um serviço web é desenvolvido em qualquer linguagem de programação. Como o arquivo WSDL é bastante complexo para ser gerado do zero, todos os editores, como o Visual Studio para .NET e Eclipse pela Java crie automaticamente o arquivo WSDL.

Abaixo está um exemplo de um arquivo WSDL criado no 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>

O arquivo WSDL acima pode parecer bastante intimidante para qualquer usuário. Abordaremos as diferentes partes em detalhes nos tutoriais subsequentes, mas, por ora, vamos dar uma olhada resumida no que cada seção do arquivo WSDL realmente faz.

Publicando o exemplo de serviço da Web

Vejamos agora um exemplo de como podemos publicar um serviço web e consumi-lo usando o Visual Studio. Neste exemplo, criaremos um serviço web com um método WebMethod. Este método aceitará um parâmetro inteiro chamado “TutorialID”. O método WebMethod retornará uma string chamada “Web Services”.

Em seguida, criaremos um aplicativo baseado em console, que consumirá esse serviço web e chamará nosso método web de acordo. Vejamos os passos necessários para realizar este exemplo.

Passo 1) O primeiro passo é criar seu serviço web. As etapas detalhadas de como o Asp.Net A criação de um projeto web e de um serviço web já foi explicada. aqui.Siga os mesmos passos para criar o projeto e o serviço web. O ponto principal é inserir o código abaixo no arquivo de serviços web.

Publicando o código de exemplo do serviço 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 Explicação:

  1. Aqui estamos criando um WebMethod chamado “Guru99WebService.” Neste método web, estamos incluindo um parâmetro inteiro que precisa ser passado sempre que este método web for chamado.
  2. A seguir, estamos definindo uma variável chamada “TutorialName” que conterá o valor da string de “Web Services”. Este é o valor que será retornado quando o web service for chamado.

Passo 2) Após definirmos o arquivo de serviços web, o próximo passo é criar um projeto cliente que consumirá esse serviço web. Vamos criar um aplicativo de console simples que chamará esse serviço web, invocando o “Guru99WebService” e, em seguida, exiba a saída do método web na tela de log do console. Siga os passos abaixo para criar um aplicativo de console. Clique com o botão direito do mouse no arquivo de solução do Visual Studio e escolha a opção Adicionar -> Novo projeto.

Publicando o exemplo de serviço web: adicionar novo projeto

Passo 3) Nesta etapa,

  1. Certifique-se de escolher primeiro o Visual C# Windows opção. Em seguida, escolha a opção de criar um aplicativo de console.
  2. Dê um nome ao seu projeto que no nosso caso foi dado como “DemoApplication”.

Publicando o aplicativo de console de exemplo do serviço Web

Após clicar no botão OK na tela acima, você poderá visualizar o projeto no Explorador de Soluções do Visual Studio.

Publicando o exemplo de serviço Web no explorador de soluções

Passo 4) Nesta etapa, você definirá o aplicativo de console DemoApplication como o projeto de inicialização. Isso garante que este aplicativo seja iniciado primeiro quando todo o projeto do Visual Studio for executado. Este aplicativo de console, por sua vez, chamará o serviço Web, que será iniciado automaticamente pelo Visual Studio. Para concluir esta etapa, clique com o botão direito do mouse no projeto DemoApplication e escolha a opção "Definir como projeto de inicialização".

Publicando o conjunto de exemplos de serviço web como projeto inicial

Passo 5) O próximo passo é adicionar a referência de serviço do nosso “GuruAdicionamos o serviço "99Webservice" ao nosso aplicativo de console. Isso é feito para que o DemoApplication possa referenciar o serviço web e todos os seus métodos. Para isso, clique com o botão direito do mouse no arquivo de projeto DemoApplication e selecione a opção de menu Adicionar -> Referência de Serviço.

Publicando o exemplo de serviço web: adicionar referência de serviço

Passo 6) Nesta etapa, forneceremos os diferentes valores necessários para adicionar nossa referência de serviço.

  1. Primeiramente, precisamos escolher nossa opção de descoberta. Essa opção selecionará automaticamente o arquivo WSDL para o nosso serviço web TutorialService.
  2. Em seguida, devemos dar um nome à nossa referência de serviço. No nosso caso, estamos dando a ela o nome de Guru99Serviço Web.
  3. Em seguida, precisamos expandir a opção TutorialService.asmx para que possamos ver o método “GetTutorialService” no lado direito. Aqui, TutorialService.asmx é o nome do nosso arquivo do Visual Studio .NET que contém o código do nosso serviço web.
  4. Em seguida, veremos o nosso método Web, que tínhamos no nosso serviço Web conhecido como “GetTutorialService”.

Publicando os valores de referência do serviço de exemplo do serviço Web

Ao clicarmos no botão “OK”, todo o código necessário para acessar este serviço web será adicionado ao nosso aplicativo DemoApplication Console, conforme mostrado abaixo. A captura de tela mostra que o “GuruO serviço "99Webservice" foi adicionado com sucesso ao nosso aplicativo de console.

Publicando o serviço de exemplo de serviço Web adicionado

Passo 7) O próximo passo é adicionar o código ao nosso aplicativo de console para acessar o método web em nosso serviço web. Abra o arquivo de código Program.cs, que acompanha automaticamente o aplicativo de console, e adicione o código abaixo.

Publicando o código do programa de exemplo Program.cs do serviço web

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

         Console.WriteLine(client.GetTutorialService(1));

         Console.ReadKey();
      }
   }
}

Code Explicação:

  1. A primeira parte consiste em selecionar o arquivo Program.cs. Este é o arquivo principal criado pelo Visual Studio quando um aplicativo de console é desenvolvido. É este arquivo que é executado quando o aplicativo de console (no nosso caso, DemoApplication) é iniciado.
  2. Em seguida, criamos uma variável chamada “client” que será definida como uma instância da nossa referência de serviço criada em uma etapa anterior. No nosso caso, a referência de serviço é 'Guru99Serviço Web.Guru99WebserviceSoapClient()'.
  3. Em seguida, chamamos nosso método Web 'GetTutorialService' no serviço Web TutorialService. Lembre-se de que nosso método GetTutorialService aceita um parâmetro inteiro, então estamos apenas passando um parâmetro inteiro para o método Web.
  4. Esta última linha serve apenas para garantir que a tela de registro do console permaneça ativa para que possamos visualizar a saída. Este comando aguardará alguma entrada do usuário.

saída

Após seguir todos os passos acima e executar o DemoApplication, a seguinte saída será exibida.

Publicando a saída de exemplo do serviço web

Na saída, podemos ver claramente que DemoApplication chama nosso serviço Web e que a string retornada pelo serviço Web é exibida em nosso log do Console.

Perguntas Frequentes

A IA consegue ler um WSDL complexo, explicar suas operações em linguagem simples, gerar exemplos de requisições e sinalizar incompatibilidades entre os componentes.trace a implementação. Isso acelera a integração com serviços web SOAP legados ou desconhecidos.

Sim. Assistentes de IA podem transformar uma definição WSDL em stubs de cliente, modelos de dados e exemplos de chamadas em linguagens como C#. Java, ou PythonOs desenvolvedores ainda devem revisar o código gerado para garantir que os namespaces estejam corretos e que o tratamento de erros esteja implementado.

SOAP é o protocolo de mensagens que transporta a solicitação e a resposta XML propriamente ditas. WSDL é o arquivo de descrição que informa ao cliente quais operações um serviço web SOAP oferece e como invocá-las. Eles são usados ​​em conjunto.

Sim. O WSDL continua sendo o padrão para serviços web SOAP em sistemas corporativos, bancários e governamentais que necessitam de configuração formal.tracAPIs REST mais recentes geralmente usam OpenAPI (Swagger), mas muitas integrações legadas ainda dependem de WSDL.

Resuma esta postagem com: