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 : 04
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 108 - Capítulo 13 - Proxies: Conceito e Criação

Conceito

Um proxy é um elemento intermediário entre a página ASP.NET e o Web Service. Vamos imaginar a situação onde temos uma página ASP.NET em um servidor www.abc.com, acessando um webservice localizado em um segundo servidor: www.xyz.com. Com a utilização de um proxy, fazemos com que o Web Service, localizado no servidor www.xyz.com, pareça  estar disponível localmente para a página ASP.NET que o está utilizando. O Proxy intercepta o pedido da página ASP.NET e envia o pedido para o Web Service no servidor remoto. Quando a resposta retorna, o Proxy captura a resposta e a encaminha para a página ASP.NET que fez a solicitação. O Proxy também é responsável por formatar o pedido no formato do protocolo SOAP, antes de o pedido ser enviado para o Web Service. Na Figura 13.5, temos uma pequena ilustração deste conceito:

Curso Completo de ASP.NET - Júlio Battisti
Figura 13.5 O papel do Proxy, no acesso ao Web Service.

Vamos recapitular os passos na criação do Web Service CalculosLegais:

1.         Criação do código fonte em um arquivo .asmx (já feito).

2.         Geração de um proxy utilizando o utilitário Wsdl.exe (próximo tópico).

3.         Compilação do código gerado no item 2, para a geração da DLL representativa do Web Service.

4.         Distribuição da DLL  criada no item anterior, para que ela possa ser acessada através da Web.

5.         Utilização do Web Service, nas páginas ASP.NET onde a funcionalidade dele for necessária.

Criando o proxy utilizando o utilitário Wsdl.exe.

Para criarmos o Proxy, utilizamos um utilitário fornecido com o Framework .NET: Wsdl.exe. Este utilitário pode ser encontrado no seguinte caminho:

X:\Arquivos de programas\Microsoft.NET\FrameworkSDK\Bin

Onde X: é o drive onde está instalado o Framework .NET. Se você estiver utilizando o Windows 2000 em Inglês, ao invés da pasta “Arquivos de Programas”, procure na pasta “Programs Files”.

A sintaxe para o utilitário Wsdl.exe é a seguinte:

Wsdl
/language:language
/protocol:protocol
/namespace:myNameSpace
/out:filename
/username:username
/password:password
/domain:domain <url or path>

Os parâmetros para o utilitário Wsdl.exe são explicados na Tabela 13.2.

Parâmetro Descrição
/language:language Opcional. Pode ser utilizado para definir uma das  linguagens habilitadas ao .NET: CS para CSharp, VB  para VB.NET e JS para JScript.NET. Se não for  especificado, será utilizado CS, que corresponde ao C#.
/protocol:protocol Opcional. Define o protocolo utilizado para invocar os métodos do Web Service. O padrão é SOAP. Também pode ser utilizado: HttpGet e HttpPost.
/namespace:myNameSpace Opcional. Define o namespace do Proxy gerado.
/out:filename Opcional. Define o nome do arquivo que será gerado, contendo o proxy. O nome padrão é baseado no nome do Web Service.
/username:username Opcional. Nome do usuário com o qual fazer a conexão, quando o servidor, onde está o Web Service, requer autenticação.
/password:password Opcional. Senha para o usuário definido no parâmetro anterior.
/domain:domain Opcional. Nome do domínio ao qual pertence o usuário especificado no parâmetro /username:username.
<url ou path> Este é o único parâmetro obrigatório. Define uma URL ou um caminho para o arquivo que descreve o Web Service, arquivo este que deve estar no formato WSDL (Web Services Description Language). Se for um arquivo, especificamos o caminho para um arquivo com a extensão .wsdl. Se utilizarmos uma URL, a URL deve apontar para o arquivo .asmx ou para uma página que retorna uma descrição do arquivo, no formato WSDL. Para Web Services utilizados com o ASP.NET, podemos retornar a descrição do Web Service, simplesmente concatenando “?WSDL” a URL que aponta para o arquivo .asmx. No nosso exemplo, o arquivo .asmx está no seguinte endereço: http://localhost/Chap13/CalculosLegais.asmx, para retornar a descrição do mesmo, no formato WSDL, simplesmente vamos concatenar “?WSDL”, no final da URL, quando utilizarmos o comando Wsdl.exe, para gerar o proxy.

Tabela 13.2 Parâmetros para Wsdl.exe.

Vamos utilizar o comando Wsdl.exe para gerar o proxy para o Web Service CalculosLegais.asmx. Para isso, abra um Prompt de Comando (Iniciar -> Programas -> Acessórios -> Prompt de comando). Na janela que surge, digite o seguinte comando:

Wsdl http://localhost/Chap13/CalculosLegais.asmx?WSDL

e pressione ENTER. Será gerado um arquivo .cs (lembre que a linguagem padrão é o CSHarp, para a geração de proxies), no mesmo diretório onde o comando foi executado. No nosso exemplo, indicado na Figura 13.6, foi gerado o arquivo CalculosLegais.cs, no drive D:

Curso Completo de ASP.NET - Júlio Battisti
Figura 13.6 Geração do proxy.

Na Listagem 13.2 temos o código do Arquivo CalculosLegais.cs. Este código é gerado automaticamente pelo utilitário wsdl.exe e não precisamos alterá-lo.

Listagem 13.2 – Código gerado pelo utilitário wsdl.exe.

//------------------------------------------------------------------------------
// <autogenerated>
//     This code was  generated by a tool.
//     Runtime  Version: 1.0.2914.16
//
//     Changes to this  file may cause incorrect behavior and will be lost if 
//     the code is  regenerated.
// </autogenerated>
//------------------------------------------------------------------------------
// 
// This source code was auto-generated by wsdl,  Version=1.0.2914.16.
// 
using System.Diagnostics;
using System.Xml.Serialization;
using System;
using System.Web.Services.Protocols;
using System.Web.Services;
[System.Web.Services.WebServiceBindingAttribute(Name="CalculosLegaisSoap",  Namespace="http://tempuri.org/")]
public class CalculosLegais :  System.Web.Services.Protocols.SoapHttpClientProtocol 
{
    
     [System.Diagnostics.DebuggerStepThroughAttribute()]
    public  CalculosLegais() {
        this.Url =  "http://localhost/Chap13/CalculosLegais.asmx";
}
    
     [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/CalculaImposto",
Use=System.Web.Services.Description.SoapBindingUse.Literal,
ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public System.Double CalculaImposto(long Total, int  Desconto, string Estado) 
{
        object[]  results = this.Invoke("CalculaImposto", new object[] 
    {
                     Total,
                     Desconto,
                     Estado});
        return  ((System.Double)(results[0]));
    }
    
     [System.Diagnostics.DebuggerStepThroughAttribute()]
    public System.IAsyncResult BeginCalculaImposto
(long Total, int Desconto, string Estado, System.AsyncCallback callback, object asyncState) {
        return  this.BeginInvoke("CalculaImposto", new object[] 
   { 
                     Total,
                     Desconto,
                     Estado}, callback, asyncState);
    }
    
     [System.Diagnostics.DebuggerStepThroughAttribute()]
    public  System.Double EndCalculaImposto(System.IAsyncResult asyncResult) 
   {
        object[]  results = this.EndInvoke(asyncResult);
        return  ((System.Double)(results[0]));
   }
}

Compilando o arquivo CalculosLegais.cs para gerar a DLL correspondente.

Agora precisamos compilar o arquivo com código fonte – CalculosLegais.cs, para gerar a DLL Correspondente. Para isso utilizaremos o compilador de linha de comando do CSharp: csc. Este compilador possui muitos parâmetros de linha de comando, Vamos explicar apenas os parâmetros utilizados para a criação da DLL.

Abra um Prompt de comando e execute o seguinte comando:

csc /out:CalculosLegais.dll /t:library /r:System.XML.dll  /r:System.Web.Services.dll CalculosLegais.cs

O arquivo CalculosLegais.cs é compilado e a DLL CalculosLegais.dll é gerada, conforme indicado na Figura 13.7:

Curso Completo de ASP.NET - Júlio Battisti
Figura 13.7 Geração da DLL – CalculosLegais.dll.

Parâmetros utilizados para o compilador csc:

  • O parâmetro /t:library: Indica que o código fonte deve ser compilado e o resultado deve ser uma DLL. Outras opções seriam: /t:winexe, para gerar um programa executável do Windows ou /t:exe, para gerar um programa do tipo console.
  • /out: Define o nome do arquivo gerado pela compilação.
  • CalculosLegais.cs: O arquivo a ser compilado.
  • /r: Faz referência aos metadados dos arquivos .dll especificados.

Nota: Para uma relação completa de todas as opções do compilador csc, digite: csc /? e pressione Enter.

Disponibilizando a DLL para que a mesma possa ser utilizada.

Para que a DLL, contendo o WebService CalculosLegais, possa ser utilizada por uma aplicação Web, devemos copiá-la para a pasta BIN da respectiva aplicação. Caso este pasta ainda não exista, deverá ser criada e a DLL copiada para a pasta BIN. No nosso exemplo, vamos criar uma página ASP.NET que utiliza o WebService CalculosLegais. Neste caso, a página ASP.NET estará na pasta Chap13. Lembrando que, no servidor que estou utilizando, a pasta Chap13 encontra-se no seguinte caminho:

D:\InetPub\wwwroot\Chap13.

Vou criar a pasta bin, dentro da pasta Chap13 e depois copiar a DLL – CalculosLegais.dll para a pasta bin, conforme indicado na Figura 13.8:

Curso Completo de ASP.NET - Júlio Battisti
Figura 13.8 Disponibilizando a DLL – CalculosLegais.dll para uso.

Importante: Além de disponibilizar a DLL, é importante que a pasta onde esta a página ASP.NET que utilizará o Web Service, seja configurada como um aplicativo. No nosso exemplo, criaremos uma página na pasta D:\InetPub\wwwroot\Chap13, porém esta pasta ainda não está configurada como um Aplicativo. Vamos configurar a pasta Chap13 como um aplicativo, para isso siga os seguintes passos:

1.         Abra o gerenciador do IIS ( Iniciar -> Programas -> Ferramentas Administrativas – Gerenciador de serviços de Internet).

2.         Na janela que surge dê um clique no sinal de mais ao lado do nome do servidor que você está utilizando. No meu exemplo, o nome do equipamento é servidor.

3.         Nas opções que surgem dê um clique no sinal de mais ao lado da opção “Site da Web padrão”, para expandí-la.

4.         Nas pastas que surgem, clique com o botão direito na pasta Chap13 e no menu de opções clique em Propriedades.

5.         Surge a janela “Propriedades de Chap13”. Na guia Pasta, temos as opções para tornar Chap13, uma aplicação Web.

6.         Dê um clique no botão Criar. Certifique-se de que as opções da guia Pasta estejam configuradas conforme indicado na Figura 13.9

Curso Completo de ASP.NET - Júlio Battisti
Figura 13.9 Tornando a pasta Chap13, uma aplicação Web.

7.         De volta ao Gerenciador de serviços de Internet, observe que o ícone de Chap13 foi alterado. O novo ícone indica que Chap13 é uma aplicação Web, conforme indicado na Figura 13.10.

8.         Feche o Gerenciador de serviços de Internet.

Curso Completo de ASP.NET - Júlio Battisti
Figura 13.10 Ícone indicando que Chap13 é uma aplicação Web.

Utilizando O Web Service em uma página ASP.NET

Agora o passo final: Vamos criar uma página ASP.NET que utiliza o Web Service CalculosLegais, que criamos nos passos anteriores.

Exemplo: Vamos criar uma página ASP.NET onde temos três controles:

  • Um controle DropDownList, onde são exibidas as opções: RS, SC, PR, SP, RJ e Outros.
  • Um controle TextBox, onde o usuário digita o valor da compra.
  • Um controle TextBox, onde o usuário digita o valor do desconto.
  • Um controle Label, onde é exibido o valor final, calculado pelo método CalculaImposto, do Web Service CalculosLegais.

Na Listagem 13.3 temos o código para o exemplo proposto.

Listagem 13.3 – Página ASP.NET utilizando um Web Service – Chap13Ex1.aspx.

<%@ Page Language="C#" Debug="true"  %>
<html>
<script language="C#"  runat="server">
public void   Enviar_Click(Object sender,EventArgs e)
{
                        CalculosLegais  ChamaCalculo = new CalculosLegais();
                        //  Declaro variáveis para conter valores do formulário.
                        string  txtEstado;
                        string  txtValor;
                        string  txtDesconto;
                        txtEstado=Estado.SelectedItem.Value;
                        txtValor=Valor.Text;
                        txtDesconto=Desconto.Text;
                        double  txtValorFinal;
txtValorFinal=ChamaCalculo.CalculaImposto(Convert.ToInt32(txtValor),
Convert.ToInt32(txtDesconto), txtEstado);
                        Exibe.Value  =         "Preço Inicial      :  " + txtValor  +"\n"+
                                               "Estado             :  " + txtEstado + "\n"+
                                               "Desconto           :  " + txtDesconto + "\n"+
                                               "**********************************"  + "\n"+
                                               "PREÇO FINAL        :  " + Convert.ToString(txtValorFinal);
            }
</script>
<body>
<form method=post runat="server">
<H2> Utilização do Web Service -  CalculosLegais!!</H2>
            <asp:RequiredFieldValidator 
                        id="Requer_Valor" 
                        ControlToValidate="Valor"
                        Type="String" 
                        ErrorMessage="*"
                        Text="DIGITE UM VALOR PARA O  PREÇO."
                        ForeColor="Red"
                        runat="server"
            />
            <asp:RequiredFieldValidator 
                        id="Requer_Desconto" 
                        ControlToValidate="Desconto"
                        Type="String" 
                        ErrorMessage="*"
                        Text="DIGITE UM VALOR PARA O  DESCONTO."
                        ForeColor="Red"
                        runat="server"
            />
            <table>
            <tr>
                 <td><B>Selecione o  Estado:</B> </td>
                 <td>
                        <asp:DropDownList  id="Estado" runat="server">
                                   <asp:ListItem>RS</asp:ListItem>
                                   <asp:ListItem>SC</asp:ListItem>
                                   <asp:ListItem>PR</asp:ListItem>
                                   <asp:ListItem>SP</asp:ListItem>
                                   <asp:ListItem>RJ</asp:ListItem>
                                   <asp:ListItem>Outros</asp:ListItem>
                        </asp:DropDownList>
                              </td> 
            </tr>
                <td><B>Preço:</B>  </td>
                <td>
                        <asp:TextBox  runat=server
                                    id="Valor"
                                    Text=""
                                    Font_Face="Arial" 
                                    Font_Size="3"
                                    BackColor="Cyan"
                                    ForeColor="Blue"
                                    TextMode="SingleLine"
                                    Columns="40"
                        />
                </td> 
            </tr>
            <tr>
                <td><B>Desconto:</B>  </td>
                <td>
                        <asp:TextBox  runat=server
                                    id="Desconto"
                                    Text=""
                                    Font_Face="Arial" 
                                    Font_Size="3"
                                    BackColor="Cyan"
                                    ForeColor="Blue"
                                    TextMode="SingleLine"
                                    Columns="40"
                        />
                </td> 
            </tr>
            <tr>
                <td><B>Valor  Final:</B></td>
            <td><textarea 
                                   id="Exibe" 
                                   cols="40" 
                                   rows="5" 
                                   runat="server"
                   />
</td>
            </tr>
            <tr>
                <td><B>Clique no  botão--></B></td>
            <td><input  type=submit 
value="Calcular" 
OnServerClick="Enviar_Click" 
runat="server">
</td>
            </tr>
</table>
</form>
</body>
</html>

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

Para acessar esta página utilize o seguinte endereço:

http://localhost/chap13/chap13ex1.aspx

Ao carregar a página, digite os seguintes valores:

  • Selecione RS na lista de Estados.
  • Digite 1200 no campo Preço.
  • Digite 20 no campo Desconto

Dê um clique no botão Calcular.

Você obtém o resultado indicado na Figura 13.11.

Curso Completo de ASP.NET - Júlio Battisti
Figura 13.11 Página ASP.NET utilizando o WebService CalculosLegais.

Comentários sobre o código do exemplo – Chap12ex1.aspx.

  • Para construção do formulário, além dos controles para entrada de informações, utilizamos dois controles de validação, para garantir que os campos Preço e Desconto sejam preenchidos.
  • Utilizamos o evento Click do botão, para criar a lógica da página. Em resposta ao evento Click, definimos o procedimento Enviar_Click. Neste procedimento nos seguimos as seguintes etapas:

1.         Criamos uma variável ChamaCalculo, a qual é uma instância do WebService CalculosLegais:

                        CalculosLegais  ChamaCalculo = new CalculosLegais();

2.         Utilizamos algumas variáveis do tipo String, para armazenar os valores que o usuário inseriu no formulário:

                        string txtEstado;
                        string txtValor;
                        string txtDesconto;
                        txtEstado = Estado.SelectedItem.Value;
                        txtValor = Valor.Text;
                        txtDesconto = Desconto.Text;

3.         Declaramos uma variável do tipo double, que ira conter o valor retornado pelo método CalculaImposto, do WebService CalculosLegais.

                        double  txtValorFinal;

4.         Como a variável ChamaCalculo é do tipo CalculosLegais, esta variável herda o método CalculaImposto do Web Service CalculosLegais. Chamamos este método para fazer o cálculo do preço final, com base no Estado Selecionado, no Preço informado e no percentual de desconto. Estes valores são passados como parâmetros para o método CalculaImposto. Observe que temos que fazer as devidas conversões, pois caso contrário obteremos um erro. Por exemplo, o parâmetro txtValor é do tipo String, porém o método CalculaImposto espera receber uma parâmetro do tipo int. Utilizamos Convert.Int32 para fazer a conversão:

    txtValorFinal = ChamaCalculo.CalculaImposto(Convert.ToInt32(txtValor),
    Convert.ToInt32(txtDesconto), txtEstado);

5.         Em seguida montamos uma string que exibe os valores digitados pelo usuário e o valor calculado pelo método CalculaImposto. Esta string é atribuída a propriedade Text, do controle Exibe:

                        Exibe.Value  = "Preço Inicial: " + txtValor +"\n"+
                                       "Estado       : " + txtEstado + "\n"+
                                       "Desconto     : " + txtDesconto + "\n"+
                                       "**********************************"  + "\n"+
                                       "PREÇO FINAL  : " + Convert.ToString(txtValorFinal);

Observe que agora podemos reaproveitar a funcionalidade do método CalculaImposto em qualquer página ASP.NET da aplicação Chap13.

Apenas para recapitular, eis os passos necessários para a criação e utilização de um Web Service, utilizando C# e ASP.NET:

1.         Criação do código fonte em um arquivo .asmx.

2.         Testar a funcionalidade do arquivos .asmx.

3.         Criar um proxy para o Web Service, utilizando o utilitário wsdl.exe.

4.         Compilar o proxy gerado no item 3, para gerar uma DLL.

5.         Se a pasta onde está a página ASP.NET, que vai utilizar o Web Service ainda não for uma aplicação Web, utilizar o Gerenciador de serviços de Internet, para transformá-la em uma aplicação Web.

6.         Criar uma pasta bin dentro da pasta correspondente a aplicação Web.

7.         Copiar a DLL para dentro da pasta bin.

8.         Criar uma ou  mais páginas ASP.NET que utilizam o Web Service.

« 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