NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalArtigosASP.NET › Capítulo 13 : 03
Quer receber novidades e e-books gratuitos?
« Lição anterior Δ Página principal ¤ Capítulos Próxima lição »
ASP.NET - CURSO COMPLETO
Autor: Júlio Battisti

Lição 107 - Capítulo 13 - Criando um Web Service

Vamos criar um Web Service que tem um único método: Calcula_Imposto. Este método recebe três parâmetros:

  • O valor total da compra.
  • O valor do desconto.
  • O estado de destino.

Com base no estado de destino, o método calcula o valor do imposto sobre o preço final, já aplicado o desconto.

Por simplicidade vamos considerar pedidos apenas para cinco estados e um valor padrão para os demais estados. O percentual de imposta para cada estado está descrito na Tabela 13.1.

Estado % Imposto
RS 12
SC 15
PR 17
SP 20
RJ 22
Outros 25

Tabela 13.1 Imposta a ser aplicado para cada estado.

Sintaxe para a criação de um Web Service.

O primeiro passo é criar o código para o Web Service, código este que é gravado em um arquivo com a extensão .asmx. Não existe nenhuma tradução para a extensão asmx. Para caracterizar o código como um Web Service, incluímos a diretiva, como primeira linha do código:

<%@ WebService Language=”C#” class=”NomeDaClasse” %>

No nosso exemplo, vamos chamar a classe de “CalculosLegais”. Para definir a classe CalculosLegais utilizamos o seguinte comando:

<%@ WebService Language=”C#” class=”CalculosLegais” %>

O próximo passo é fazer referência ao namespace System.Web.Services. Este namespace contém as classes que dão suporte a criação de Web Services:

using System.Web.Services;

Agora implementamos a classe CalculosLegais e os métodos da classe. Um detalhe importante é que após o nome da classe, colocamos dois pontos e a palavra Webservice. Antes de cada método colocamos a palavra WebMethod entre colchetes. Vamos chamar o método que faz o cálculo dos impostos de: “CalculaImposto”. A estrutura básica para a definição do WebService CalculosLegais está indicada na Listagem 13.1.

Listagem 13.1 – Estrutura básica para a criação de um Web Service.

<%@ WebService Language="C#"  class="CalculosLegais" %>
using System.Web.Services;
public class CalculosLegais : WebService
{
            [WebMethod]
            public  double CalculaImposto(long Total,int Desconto, string Estado)
            {
                        long  ValorComDesconto;
                        ValorComDesconto  =  Total * (1-(Desconto/100));
                        
                        switch  (Estado)
                 {
                        case  "RS":
                            return ValorComDesconto*1.12;
                        break;
                        case "SC":
                            return ValorComDesconto*1.15;
                        break;
                        case "PR":
                            return ValorComDesconto*1.17;
                        break;
                        case "SP":
                            return ValorComDesconto*1.2;
                        break;
                        case "RJ":
                            return ValorComDesconto*1.22;
                        break;
                        default:
                           return ValorComDesconto*1.25;
                        break;
                     }  
              }
}

Digite o código da Listagem 13.1 e salve o mesmo em um arquivo chamado CalculosLegais.asmx, na pasta chap13, dentro da pasta wwwroot, conforme descrito no item: “Check List para acompanhar os exemplos deste livro”, no Capítulo 6.

Uma maneira fácil de testar a funcionalidade de um Web Service.

Com o Framework .NET podemos, facilmente, testar o funcionamento de um Web Service. Para isto basta acessar o arquivo .asmx, utilizando o navegador, como se fosse uma página .aspx normal. Para o nosso exemplo vamos utilizar o seguinte endereço:

http://localhost/chap13/CalculosLegais.asmx

Ao acessarmos um arquivo .asmx, o Framework .NET utiliza um template chamado DefaultWsdlHelpGenerator.aspx, que fica localizado na pasta \WinNT\Microsort.NET\Framework\[Version], onde WinNT é a pasta onde foi instalado o Windows 2000.

O template DefaultWsdlHelpGenerator.aspx identifica a requisição para um arquivo .asmx e gera, automaticamente, uma página de saída, onde temos a possibilidade de testar os métodos do Web Service que está sendo acessado, conforme indicado na Figura 13.2.

Curso Completo de ASP.NET - Júlio Battisti
Figura 13.2 Página para teste do Web Service – gerada automaticamente.

Esta página trás informações genéricas sobre o Web Service que está sendo testado. Mas o principal componente desta página, para o nosso exemplo, é um link para o método CalculaImposto. Dê um clique neste link. Observe que são exibidos campos para que digitemos os valores para os parâmetros do método. Digite os valores indicados na Figura 13.3.

Curso Completo de ASP.NET - Júlio Battisti
Figura 13.3 Definindo valores para os parâmetros do método CalculaImposto.

Dê um clique no botão Invoke. O método será executado e os resultados retornados em uma nova janela, no formato XML, conforme indicado na Figura 13.4.

Curso Completo de ASP.NET - Júlio Battisti
Figura 13.4 Valor retornado pelo método CalculaImposto, no formato XML.

Esta funcionaliade é bastane útil, pois nos permite testar os métodos de um Web Service antes de gerar um proxie (veremos com gerar proxies mais adiante) e utilizar o Web Service em nossas páginas ASP.NET (aprenderemos a utilizar Web Services em páginas ASP.NET mais adiante).

Na Página da Figura 13.3, onde podemos definir valores para os parâmetros do método CalculaImposto, temos uma série de informações sobre os formatos possíveis para a comunicação com um Web Service. Conforme visto nesta página, temos três opções possíveis:

  • SOAP: É um protocolo baseado em XML, para troca de informações, mais precisamente: de mensagens, entre diferentes componentes de software, através da Web.  A Implementação do protocolo SOAP, no Framework .NET, utiliza o protocolo HTTP como protocolo de transporte. Com isso o SOAP segue o comportamento padrão do HTTP, ou seja, envia uma requisição para o servidor (que no caso do SOAP é um Web Service) e aguarda uma resposta. 

Para maiores detalhes sobre o protocolo SOAP, consulte o endereço: www.w3.org/TR/SOAP

A seguir temos o exemplo de uma requisição e resposta utilizando o protocolo SOAP. Observe que os dados estão no formato XML:

POST /Chap13/CalculosLegais.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/CalculaImposto"
<?xml version="1.0"  encoding="utf-8"?>
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <CalculaImposto  xmlns="http://tempuri.org/">
      <Total>long</Total>
      <Desconto>int</Desconto>
      <Estado>string</Estado>
    </CalculaImposto>
  </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0"  encoding="utf-8"?>
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
     <CalculaImpostoResponse xmlns="http://tempuri.org/">
       <CalculaImpostoResult>double</CalculaImpostoResult>
     </CalculaImpostoResponse>
  </soap:Body>
</soap:Envelope>
  • HTTP GET: Este é um dos métodos mais antigos utilizados para enviar informações através de uma requisição HTTP. Com este método, as informações são enviadas na própria URL, conforme pode ser visto pelo exemplo de requisição/resposta a seguir:
GET
/Chap13/CalculosLegais.asmx/CalculaImposto?Total=string&Desconto=string&Estado=string
HTTP/1.1
Host: localhost
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<double xmlns="http://tempuri.org/">double</double>

Observe que os dados são passados, na forma de string, no próprio endereço. Onde temos Total=string, devemos substituir string pelo valor realmente definido para o parâmetro, como por exemplo:

/Chap13/CalculosLegais.asmx/CalculaImposto?Total=1250&Desconto=25&Estado=RS
  • HTTP POST: Este método é um pouco mais sofisticado do que o método GET. A principal diferença do método POST é que, com este método, as informações são enviadas na requisição HTTP e não na URL, como acontecia com o método GET.Observe o exemplo de requisição/resposta a seguir:
POST /Chap13/CalculosLegais.asmx/CalculaImposto HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Total=1250&Desconto=25&Estado=RS
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0"  encoding="utf-8"?>
<double  xmlns="http://tempuri.org/">1400</double>

O nosso objetivo é criar um Web Service e poder utilizar as funcionalidades disponibilizadas por ele, em nossas páginas ASP.NET. Porém ainda temos um passo antes de que o Web Service CalculosLegais esteja disponível para uso. O passo que falta é a criação de um “proxy” para o Web Service. No próximo tópico veremos o que é um proxy e como criá-lo.

« Lição anterior Δ Página principal ¤ Capítulos Próxima lição »
Quer receber novidades e e-books gratuitos?

 
 

Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

Todos os direitos reservados, Júlio Battisti 2001-2024 ®

LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO

DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI