Tutorial de serviços da Web SOAP: O que é protocolo SOAP? EXEMPLO

Índice:

Anonim

O que é SOAP?

SOAP é um protocolo baseado em XML para acessar serviços da web em HTTP. Ele tem algumas especificações que podem ser usadas em todos os aplicativos.

SOAP é conhecido como Simple Object Access Protocol, mas em tempos posteriores foi reduzido para SOAP v1.2. SOAP é um protocolo ou, em outras palavras, é uma definição de como os serviços da Web se comunicam entre si ou com os aplicativos cliente que os chamam.

SOAP foi desenvolvido como uma linguagem intermediária para que os aplicativos construídos em várias linguagens de programação pudessem se comunicar facilmente entre si e evitar o esforço extremo de desenvolvimento.

Neste tutorial de serviços da Web SOAP, você aprenderá

  • Introdução ao SOAP
  • Vantagens do SOAP
  • Blocos de construção SOAP
  • Estrutura da Mensagem SOAP
  • Elemento de envelope SOAP
  • Modelo de Comunicação SOAP
  • Exemplo prático de SOAP

Introdução ao SOAP

No mundo de hoje, existe um grande número de aplicativos que são construídos em diferentes linguagens de programação. Por exemplo, pode haver um aplicativo da web desenvolvido em Java, outro em .Net e outro em PHP.

A troca de dados entre aplicativos é crucial no mundo atual em rede. Mas a troca de dados entre esses aplicativos heterogêneos seria complexa. Assim será a complexidade do código para realizar essa troca de dados.

Um dos métodos usados ​​para combater essa complexidade é usar XML (Extensible Markup Language) como linguagem intermediária para a troca de dados entre aplicativos.

Cada linguagem de programação pode compreender a linguagem de marcação XML. Conseqüentemente, o XML foi usado como meio subjacente para a troca de dados.

Mas não há especificações padrão sobre o uso de XML em todas as linguagens de programação para troca de dados. É aí que entra o software SOAP.

SOAP foi projetado para funcionar com XML sobre HTTP e tem algum tipo de especificação que pode ser usado em todos os aplicativos. Veremos mais detalhes sobre o protocolo SOAP nos capítulos subsequentes.

Vantagens do SOAP

SOAP é o protocolo usado para intercâmbio de dados entre aplicativos. Abaixo estão alguns dos motivos pelos quais o SOAP é usado.

  • Ao desenvolver serviços da Web baseados em SOAP, você precisa ter alguma linguagem que possa ser usada para que os serviços da Web conversem com os aplicativos clientes. SOAP é o meio perfeito que foi desenvolvido para atingir este propósito. Este protocolo também é recomendado pelo consórcio W3C, que é o órgão regulador de todos os padrões da web.
  • SOAP é um protocolo leve usado para intercâmbio de dados entre aplicativos. Observe a palavra-chave ' luz '. Já que a programação SOAP é baseada na linguagem XML, que por si só é uma linguagem de intercâmbio de dados leve, portanto, SOAP como um protocolo que também se enquadra na mesma categoria.
  • SOAP é projetado para ser independente de plataforma e também é projetado para ser independente de sistema operacional. Portanto, o protocolo SOAP pode funcionar com qualquer aplicativo baseado em linguagem de programação nas plataformas Windows e Linux.
  • Ele funciona no protocolo HTTP -SOAP funciona no protocolo HTTP, que é o protocolo padrão usado por todos os aplicativos da web. Conseqüentemente, não há nenhum tipo de customização necessária para executar os serviços da web construídos no protocolo SOAP para funcionar na World Wide Web.

Blocos de construção SOAP

A especificação SOAP define algo conhecido como " mensagem SOAP ", que é enviada ao serviço da web e ao aplicativo cliente.

O diagrama abaixo da arquitetura SOAP mostra os vários blocos de construção de uma Mensagem SOAP.

Blocos de construção de mensagem SOAP

A mensagem SOAP nada mais é que um mero documento XML que possui os componentes abaixo.

  • Um elemento Envelope que identifica o documento XML como uma mensagem SOAP - esta é a parte que contém a mensagem SOAP e é usado para encapsular todos os detalhes na mensagem SOAP. Este é o elemento raiz na mensagem SOAP.
  • Um elemento de cabeçalho que contém informações de cabeçalho - O elemento de cabeçalho pode conter informações como credenciais de autenticação que podem ser usadas pelo aplicativo de chamada. Ele também pode conter a definição de tipos complexos que podem ser usados ​​na mensagem SOAP. Por padrão, a mensagem SOAP pode conter parâmetros que podem ser de tipos simples, como strings e números, mas também podem ser um tipo de objeto complexo.

Um exemplo de serviço SOAP simples de um tipo complexo é mostrado abaixo.

Suponha que quiséssemos enviar um tipo de dados estruturado que tivesse uma combinação de um "Nome do tutorial" e uma "Descrição do tutorial", então definiríamos o tipo complexo conforme mostrado abaixo.

O tipo complexo é definido pela tag de elemento . Todos os elementos necessários da estrutura junto com seus respectivos tipos de dados são então definidos na coleção de tipo complexo.

  • Um elemento Body que contém informações de chamada e resposta - este elemento é o que contém os dados reais que precisam ser enviados entre o serviço da web e o aplicativo de chamada. Abaixo está um exemplo de serviço da web SOAP do corpo SOAP que realmente funciona no tipo complexo definido na seção de cabeçalho. Aqui está a resposta do nome do tutorial e da descrição do tutorial que é enviado ao aplicativo de chamada que chama este serviço da web.
Web ServicesAll about web services

Estrutura da Mensagem SOAP

Uma coisa a ser observada é que as mensagens SOAP normalmente são geradas automaticamente pelo serviço da web quando ele é chamado.

Sempre que uma aplicação cliente chama um método no serviço web, o serviço web irá gerar automaticamente uma mensagem SOAP que terá os detalhes necessários dos dados que serão enviados do serviço web para a aplicação cliente.

Conforme discutido no tópico anterior deste tutorial SOAP, uma mensagem SOAP simples possui os seguintes elementos -

  • O elemento Envelope
  • O elemento de cabeçalho e
  • O elemento do corpo
  • O elemento de falha (opcional)

Vejamos um exemplo abaixo de uma mensagem SOAP simples e veja o que o elemento realmente faz.

Estrutura da Mensagem SOAP
  1. Conforme visto na mensagem SOAP acima, a primeira parte da mensagem SOAP é o elemento de envelope que é usado para encapsular toda a mensagem SOAP.
  2. O próximo elemento é o corpo SOAP que contém os detalhes da mensagem real.
  3. Nossa mensagem contém um serviço da web que tem o nome de "Guru99WebService".
  4. O "Guru99Webservice" aceita um parâmetro do tipo 'int' e tem o nome de TutorialID.

Agora, a mensagem SOAP acima será passada entre o serviço da web e o aplicativo cliente.

Você pode ver como as informações acima são úteis para o aplicativo cliente. A mensagem SOAP informa ao aplicativo cliente qual é o nome do serviço da web, e também quais parâmetros ele espera e também qual é o tipo de cada parâmetro que é obtido pelo serviço da web.

Elemento de envelope SOAP

O primeiro bit do bloco de construção é o envelope SOAP.

O envelope SOAP é usado para encapsular todos os detalhes necessários das mensagens SOAP, que são trocadas entre o serviço da web e o aplicativo cliente.

O elemento de envelope SOAP é usado para indicar o início e o fim de uma mensagem SOAP. Isso permite que o aplicativo cliente que chama o serviço da web saiba quando a mensagem SOAP termina.

Os pontos a seguir podem ser observados no elemento de envelope SOAP.

  • Cada mensagem SOAP precisa ter um elemento de envelope raiz. É absolutamente obrigatório que a mensagem SOAP tenha um elemento de envelope.
  • Cada elemento de envelope precisa ter pelo menos um elemento de corpo de sabão.
  • Se um elemento Envelope contém um elemento de cabeçalho, ele deve conter no máximo um e deve aparecer como o primeiro filho do Envelope, antes do elemento de corpo.
  • O envelope muda quando as versões do SOAP mudam.
  • Um processador SOAP compatível com v1.1 gera uma falha ao receber uma mensagem contendo o namespace do envelope v1.2.
  • Um processador SOAP compatível com v1.2 gera uma falha de incompatibilidade de versão se receber uma mensagem que não inclui o namespace de envelope v1.2.

Abaixo está um exemplo de API SOAP da versão 1.2 do elemento de envelope SOAP.

int

A mensagem de falha

Quando uma solicitação é feita para um serviço da web SOAP, a resposta retornada pode ser de 2 formulários que são uma resposta bem-sucedida ou uma resposta de erro. Quando um sucesso é gerado, a resposta do servidor sempre será uma mensagem SOAP. Mas se as falhas SOAP forem geradas, elas serão retornadas como erros "HTTP 500".

A mensagem de falha SOAP consiste nos seguintes elementos.

  1. - Este é o código que designa o código do erro. O código de falha pode ser qualquer um dos valores abaixo
    1. SOAP-ENV: VersionMismatch - quando um namespace inválido para o elemento SOAP Envelope é encontrado.
    2. SOAP-ENV: MustUnderstand - Um elemento filho imediato do elemento Header, com o atributo mustUnderstand definido como "1", não foi compreendido.
    3. SOAP-ENV: Cliente - A mensagem foi formada incorretamente ou continha informações incorretas.
    4. SOAP-ENV: Servidor - Houve um problema com o servidor, então a mensagem não pôde continuar.
  2. - Esta é a mensagem de texto que fornece uma descrição detalhada do erro.
  3. (Opcional) - Esta é uma string de texto que indica quem causou a falha.
  4. (Opcional) - Este é o elemento para mensagens de erro específicas do aplicativo. Portanto, o aplicativo pode ter uma mensagem de erro específica para diferentes cenários de lógica de negócios.

Exemplo de mensagem de falha

Um exemplo de mensagem de falha é fornecido abaixo. O erro é gerado se o cenário em que o cliente tenta usar um método denominado TutorialID na classe GetTutorial.

A mensagem de falha abaixo é gerada no caso de o método não existir na classe definida.

SOAP-ENV:ClientFailed to locate method (GetTutorialID) in class (GetTutorial)

Resultado:

Quando você executar o código acima, ele mostrará o erro como "Falha ao localizar o método (GetTutorialID) na classe (GetTutorial)"

Modelo de Comunicação SOAP

Toda a comunicação por SOAP é feita via protocolo HTTP. Antes do SOAP, muitos serviços da Web usavam o estilo RPC (Remote Procedure Call) padrão para comunicação. Esse era o tipo de comunicação mais simples, mas tinha muitas limitações.

Agora, neste tutorial da API SOAP, vamos considerar o diagrama abaixo para ver como essa comunicação funciona. Neste exemplo, vamos supor que o servidor hospede um serviço da web que forneceu 2 métodos como

  • GetEmployee - Obteria todos os detalhes do funcionário
  • SetEmployee - Isso definiria o valor dos detalhes como departamento de funcionários, salário, etc. de acordo.

Na comunicação de estilo RPC normal, o cliente apenas chamaria os métodos em sua solicitação e enviaria os parâmetros necessários ao servidor, e o servidor enviaria a resposta desejada.

O modelo de comunicação acima tem as seguintes limitações graves

  1. Não Independente de Linguagem - O servidor que hospeda os métodos estaria em uma linguagem de programação específica e normalmente as chamadas para o servidor seriam apenas nessa linguagem de programação.
  2. Não é o protocolo padrão - Quando uma chamada é feita para o procedimento remoto, a chamada não é realizada por meio do protocolo padrão. Isso era um problema, pois quase toda a comunicação na web tinha que ser feita por meio do protocolo HTTP.
  3. Firewalls - Como as chamadas RPC não passam pelo protocolo normal, portas separadas precisam ser abertas no servidor para permitir que o cliente se comunique com o servidor. Normalmente, todos os firewalls bloqueariam esse tipo de tráfego e, geralmente, muitas configurações eram necessárias para garantir que esse tipo de comunicação entre o cliente e o servidor funcionasse.

Para superar todas as limitações citadas acima, o SOAP usaria o modelo de comunicação abaixo

  1. O cliente formata as informações sobre a chamada de procedimento e quaisquer argumentos em uma mensagem SOAP e a envia ao servidor como parte de uma solicitação HTTP. Esse processo de encapsular os dados em uma mensagem SOAP era conhecido como Marshalling.
  2. O servidor, então, desembrulharia a mensagem enviada pelo cliente, veria o que o cliente solicitou e enviaria a resposta apropriada de volta ao cliente como uma mensagem SOAP. A prática de desembrulhar uma solicitação enviada pelo cliente é conhecida como Demarshalling.

Exemplo prático de SOAP

Agora, neste tutorial SoapUI, vamos ver um exemplo prático de SOAP,

Provavelmente, uma das melhores maneiras de ver como as mensagens SOAP são geradas é realmente ver um serviço da web em ação.

Este tópico examinará o uso da estrutura Microsoft.Net para construir um serviço da Web ASMX. Este tipo de serviço da web oferece suporte a SOAP versão 1.1 e versão 1.2.

Os serviços da Web ASMX geram automaticamente o documento WSDL (Web Service Definition Language). Este documento WSDL é exigido pelo aplicativo cliente de chamada para que o aplicativo saiba o que o serviço da web é capaz de fazer.

Em nosso exemplo, vamos criar um serviço da web simples, que será usado para retornar uma string para o aplicativo que chama o serviço da web.

Este serviço da web será hospedado em um aplicativo da web Asp.Net. Em seguida, invocaremos o serviço da web e veremos o resultado retornado pelo serviço da web.

O Visual Studio também nos mostrará qual é a mensagem SOAP que está sendo passada entre o serviço da web e o aplicativo de chamada.

O primeiro pré-requisito para configurar nosso aplicativo de serviço da Web, que pode ser feito seguindo as etapas abaixo.

Certifique-se de ter o Visual Studio 2013 instalado em seu sistema para este exemplo.

Etapa 1) A primeira etapa é criar um aplicativo da Web ASP.Net vazio. No Visual Studio 2013, clique na opção de menu Arquivo-> Novo projeto.

Depois de clicar na opção Novo Projeto, o Visual Studio exibirá outra caixa de diálogo para escolher o tipo de projeto e fornecer os detalhes necessários do projeto. Isso é explicado na próxima etapa.

Etapa 2) Nesta etapa,

  1. Certifique-se de primeiro escolher o modelo da web C # do aplicativo ASP.NET. O projeto deve ser deste tipo para criar um projeto de serviços SOAP. Ao escolher esta opção, o Visual Studio executará as etapas necessárias para adicionar os arquivos necessários para qualquer aplicativo baseado na web.
  2. Dê um nome para o seu projeto que, em nosso caso, foi dado como webservice.asmx. Em seguida, certifique-se de fornecer um local onde os arquivos do projeto serão armazenados.

Uma vez feito isso, você verá o arquivo de projeto criado em seu gerenciador de soluções no Visual Studio 2013.

Etapa 3) Nesta etapa,

Vamos adicionar um arquivo de serviço da Web ao nosso projeto

  1. Primeiro clique com o botão direito do mouse no arquivo do projeto como mostrado abaixo

  1. Depois de clicar com o botão direito do mouse no arquivo de projeto, você tem a chance de escolher a opção "Adicionar-> Serviço da Web (ASMX) para adicionar um arquivo de serviço da Web. Basta fornecer um nome de Serviço de tutorial para o arquivo de nome do serviço da Web.

Etapa 4) Adicione o seguinte código ao seu arquivo asmx do Tutorial Service.

Explicação do código:

  1. Esta linha de código fornece um nome para seu arquivo de serviço da web. Essa é uma etapa importante porque permite que o aplicativo cliente chame o serviço da web por meio do nome do serviço da web.
  2. Normalmente, um arquivo de classe é usado para encapsular a funcionalidade de um serviço da web. Assim, o arquivo de classe terá a definição de todos os métodos web que fornecerão alguma funcionalidade para a aplicação cliente.
  3. Aqui [WebMethod] é conhecido como um atributo que descreve uma função. A etapa subsequente cria uma função chamada "Guru99WebService", mas com a inclusão desta etapa de adicionar um atributo [WebMethod] garante que esse método possa ser chamado por um aplicativo cliente. Se esse atributo não estiver em vigor, o método nunca poderá ser chamado por um aplicativo cliente.
  4. Aqui, estamos definindo uma função chamada 'Guru99WebService' que será usada para retornar uma string para o aplicativo cliente de chamada. Esta função é um serviço da web que pode ser chamado por qualquer aplicativo cliente.
  5. Estamos usando a instrução return para retornar a string "Este é um serviço da Web Guru99" para o aplicativo cliente.

Se o código for executado com êxito, a seguinte saída será exibida quando você executar o código no navegador.

Resultado:

  • A saída mostra claramente que o nome do nosso serviço da web é "Guru99 Web Service", que é o resultado de dar um nome para o nosso serviço da web.
  • Também podemos ver que podemos invocar o serviço da web. Se clicarmos no botão Chamar, obteremos a resposta abaixo no navegador da web.

A saída acima,

  • Isso mostra claramente que, ao invocar o método da web, a string "Este é um serviço da Web Guru99" é retornada.
  • O Visual Studio também permite que você visualize a solicitação e a resposta da mensagem SOAP gerada quando o serviço da web acima é chamado.

A solicitação SOAP gerada quando o serviço da web é chamado é mostrada a seguir.

Explicação do código:

  1. A primeira parte da mensagem SOAP é o elemento envelope, que foi discutido nos capítulos anteriores. Este é o elemento de encapsulamento que está presente em todas as mensagens SOAP.
  2. O corpo SOAP é o próximo elemento e contém os detalhes reais da mensagem SOAP.
  3. A terceira parte é o elemento que especifica que queremos chamar o serviço chamado 'Guru99WebService.'

string

Explicação do código:

  1. A primeira parte da mensagem SOAP é o elemento envelope, que foi discutido nos capítulos anteriores. Este é o elemento de encapsulamento que está presente em todas as mensagens SOAP.
  2. O corpo SOAP é o próximo elemento e contém os detalhes reais da mensagem SOAP.
  3. A parte interessante que você verá agora é o atributo 'string'. Isso informa ao aplicativo cliente que o serviço da web que está sendo chamado retorna um objeto do tipo string. Isso é muito útil porque se o aplicativo cliente que de outra forma não saberia o que o serviço web retorna.

Resumo

  • SOAP é um protocolo usado para trocar dados entre aplicativos que são construídos em diferentes linguagens de programação.
  • SOAP é baseado na especificação XML e funciona com o protocolo HTTP. Isso o torna perfeito para uso em aplicativos da web.
  • Os blocos de construção SOAP consistem em uma Mensagem SOAP. Cada mensagem SOAP consiste em um elemento de envelope, um cabeçalho e um elemento de corpo.
  • O elemento envelope é o elemento obrigatório na mensagem SOAP e é usado para encapsular todos os dados na mensagem SOAP.
  • O elemento de cabeçalho pode ser usado para conter informações como informações de autenticação ou a definição de tipos de dados complexos.
  • O elemento body é o elemento principal que contém a definição dos métodos da web junto com qualquer informação de parâmetro, se necessário.