Criando o proxy de serviço Web

Um cliente e um serviço Web podem se comunicar usando mensagens SOAP que encapsulam os parâmetros de entrada e de saída como XML. Uma classe de proxy mapeia parâmetros para elementos XML e então envia as mensagens SOAP pela rede. Dessa forma, a classe proxy libera você de ter de se comunicar com o serviço Web no nível de SOAP e permite que você invoque métodos do serviço Web em qualquer ambiente de desenvolvimento que dê suporte a SOAP e a proxies de serviço Web.

Existem duas formas de adicionar uma classe proxy ao seu projeto de desenvolvimento usando o Microsoft .NET Framework: com a ferramenta WSDL do .NET Framework e pela adição de uma referência da Web no Microsoft Visual Studio. As seções a seguir discutem este assunto em mais detalhes.

Adicionando o proxy usando a ferramenta WSDL

O SDK do .NET Framework inclui a ferramenta Wsdl.exe (Web Services Description Language), que permite a você gerar um proxy de serviço Web para uso em um ambiente de desenvolvimento do .NET Framework. A forma mais comum de criar um proxy cliente em linguagens que suportam serviços Web (atualmente, C# e Microsoft Visual Basic) é usar a ferramenta WSDL.

Para adicionar uma classe proxy ao seu projeto usando Wsdl.exe

  1. Em um prompt de comando, use Wsdl.exe para criar uma classe proxy, especificando (no mínimo) a URL do serviço Web Servidor de Relatório.

    Por exemplo, a instrução de prompt de comando a seguir especifica uma URL para o ponto de extremidade de gerenciamento do serviço Web Servidor de Relatório:

    wsdl /language:CS /n:"Microsoft.SqlServer.ReportingServices2010" http://<Server Name>/reportserver/reportservice2010.asmx?wsdl
    

    A ferramenta WSDL aceita vários argumentos de prompt de comando para gerar um proxy. O exemplo anterior especifica a linguagem C#, um namespace sugerido para ser usado no proxy (para impedir a colisão de nomes se você estiver usando mais de um ponto de extremidade de serviço Web) e gera um arquivo C# chamado ReportingService2010.cs. Se o exemplo tivesse especificado Visual Basic, teria gerado um arquivo de proxy com o nome ReportingService2010.vb. Esse arquivo é criado no diretório a partir do qual você executou o comando.

  2. Compile a classe proxy em um arquivo de assembly (com a extensão .dll) e faça referência a ele em seu projeto, ou adicione a classe como um item de projeto.

    ObservaçãoObservação

    Quando você adicionar uma classe proxy manualmente ao seu projeto, terá de acrescentar uma referência a System.Web.Services.dll. Se você adicionar o proxy usando uma referência da Web em Visual Studio .NET, a referência será criada automaticamente. Para obter mais informações, consulte "Adicionando o proxy usando uma referência da Web no Visual Studio" mais adiante neste tópico.

    Depois de adicionar a classe proxy como um item ao seu projeto, o arquivo associado será exibido no Gerenciador de Soluções.

  3. Para chamar o serviço programaticamente, crie uma instância da classe proxy.

    O exemplo de código a seguir mostra a sintaxe para a criação de uma instância da classe proxy ReportingService2010 em um projeto:

Dim service As New ReportingService2010()
ReportingService2010 service = new ReportingService2010();

Para obter mais informações sobre a ferramenta Wsdl.exe, incluindo a sua sintaxe completa, consulte "Ferramenta Web Services Description Language" na documentação do SDK do .NET Framework. Para obter uma explicação completa sobre proxies de serviço Web, consulte "Criando um proxy de serviço Web XML" na documentação do SDK do .NET Framework.

Adicionando o proxy usando uma referência da Web no Visual Studio

Uma referência da Web permite que um projeto consuma um ou mais serviços Web. O Visual Studio permite que usuários adicionem referências a serviços Web a projetos seguindo algumas etapas simples.

Para adicione uma referência da Web a um projeto.

  1. No Gerenciador de Soluções, selecione o projeto que consumirá o serviço Web.

  2. No menu Projeto, clique em Adicionar Referência Web.

    A caixa de diálogo Adicionar Referência da Web é aberta.

  3. No campo URL, digite o caminho completo para o serviço Web Servidor de Relatório.

    Uma URL simplificada para o ponto de extremidade de execução de relatório do serviço Web Servidor de Relatório poderia ser assim:

    http://<Server Name>/reportserver/reportexecution2005.asmx
    

    A URL contém o domínio no qual o serviço Web Servidor de Relatório foi implantado, o nome da pasta que contém o serviço e o nome do arquivo de descoberta para o serviço. Para obter uma descrição completa dos elementos de URL diferentes, consulte Acessando a API SOAP.

    Uma descrição dos métodos e das propriedades fornecidos pelo serviço Web é exibida no painel Navegador à esquerda.

    ObservaçãoObservação

    Para obter mais informações sobre os itens associados ao serviço Web Servidor de Relatórios, consulte Métodos de serviço Web Servidor de Relatórios.

  4. Verifique se o seu projeto pode usar o serviço Web Servidor de Relatório e se você tem a permissão apropriada para acessar o servidor de relatório.

  5. No campo Nome da referência da Web, digite um nome que você usará em seu código para acessar o serviço Web Servidor de Relatório programaticamente.

  6. Selecione o botão Adicionar Referência para criar uma referência em seu aplicativo para o serviço Web.

    A nova referência será exibida em Gerenciador de Soluções, sob o nó Referências da Web do projeto ativo, nomeado como especificado no campo Nome da referência da Web.

  7. No Gerenciador de Soluções, expanda a pasta Referências da Web para observar o namespace para as classes de referência da Web disponíveis para os itens do seu projeto.

    Depois de adicionar uma referência de Web ao seu projeto, os arquivos associados serão exibidos em uma pasta dentro da pasta Referências da Web do Gerenciador de Soluções.

Depois de adicionar a referência da Web, use a sintaxe a seguir para criar uma instância da classe proxy:

Dim rs As New myNamespace.myReferenceName.ReportExecutionService()
rs.Url = "http://<Server Name>/reportserver/reportexecution2005.asmx?wsdl"
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
myNamespace.myReferenceName.ReportExecutionService rs = new myNamespace.myReferenceName.ReportExecutionService();
rs.Url = "http://<Server Name>/reportserver/reportexecution2005.asmx?wsdl"
rs.Credentials = System.Net.CredentialCache.DefaultCredentials

Você também pode adicionar uma política using (Import em Visual Basic) à referência do serviço Web Servidor de Relatório. Se você usar essa política, não precisará qualificar os tipos completamente no namespace. Para fazer isso, adicione o código a seguir ao seu arquivo:

Import myNamespace.myReferenceName
using myNamespace.myReferenceName;