Compartilhar via


Usando a API SOAP em um aplicativo Web

Você pode acessar a funcionalidade completa do servidor de relatório por meio da API SOAP do Reporting Services. Por ser um serviço Web, a API SOAP pode ser acessada facilmente para fornecer os recursos de relatórios corporativos para seus aplicativos comerciais personalizados. Você acessa o serviço Web do servidor de relatório a partir de um aplicativo Web da mesma forma que acessa a API SOAP de um aplicativo do Microsoft Windows. Usando o Microsoft.NET Framework, é possível gerar uma classe de proxy que exponha as propriedades e os métodos do serviço Web do servidor de relatório e permite que você use uma infra-estrutura e ferramentas familiares para criar aplicativos comerciais incorporadas na tecnologia do Reporting Services.

A funcionalidade de gerenciamento do Reporting Services é acessada no aplicativo Web tão facilmente como em um aplicativo do Windows. Em um aplicativo Web, você pode adicionar e remover itens do banco de dados do servidor de relatório, definir segurança de item, modificar itens do banco de dados do servidor de relatório, gerenciar programação e entrega e muito mais.

Habilitando a representação

A primeira etapa na configuração do aplicativo Web é habilitar a representação no cliente de serviço Web. Com a representação, os aplicativos ASP.NET podem ser executados com a identidade do cliente em cujo nome eles estão operando. O ASP.NET se baseia no Microsoft IIS (Internet Information Services, ) para autenticar o usuário e transmitir um token autenticado para o aplicativo ASP.NET ou se não for possível autenticar o usuário, transmitir um token não autenticado. Em qualquer um dos casos, o aplicativo ASP.NET representa qualquer token recebido, se a representação estiver habilitada. Você pode habilitar a representação no cliente, modificando o arquivo Web.config do aplicativo cliente como a seguir:

<!-- Web.config file. -->
<identity impersonate="true"/>
ObservaçãoObservação

A representação é desabilitada por padrão.

Para obter mais informações sobre a representação do ASP.NET, consulte a documentação do Microsoft.NET Framework SDK.

Gerenciando do servidor de relatório por meio da API SOAP

Você também pode usar seu aplicativo Web para gerenciar um servidor de relatório e seu conteúdo. O Gerenciador de Relatórios, incluído com o Reporting Services, é um exemplo de aplicativo Web criado completamente por meio do ASP.NET e da API SOAP do Reporting Services. Você pode adicionar a funcionalidade de gerenciamento de relatório do Gerenciador de Relatórios para seus aplicativos Web personalizados. Por exemplo, você pode retornar uma lista de relatórios disponíveis no banco de dados do servidor de relatório e exibi-los em um controle ASP.NETListbox para os usuários poderem escolhê-los. O código a seguir conecta-se ao banco de dados do servidor de relatório e retorna uma lista de itens no banco de dados do servidor de relatório. Os relatórios disponíveis são, em seguida, adicionados a um controle Listbox que exibe o caminho de cada relatório.

Private Sub Page_Load(sender As Object, e As System.EventArgs)
   ' Create a Web service proxy object and set credentials
   Dim rs As New ReportingService2005()
   rs.Credentials = System.Net.CredentialCache.DefaultCredentials

   ' Return a list of catalog items in the report server database
   Dim items As CatalogItem() = rs.ListChildren("/", True)

   ' For each report, display the path of the report in a Listbox
   Dim ci As CatalogItem
   For Each ci In  items
      If ci.Type = ItemTypeEnum.Report Then
         catalogListBox.Items.Add(ci.Path)
      End If
   Next ci
End Sub ' Page_Load 
private void Page_Load(object sender, System.EventArgs e)
{
   // Create a Web service proxy object and set credentials
   ReportingService2005 rs = new ReportingService2005();
   rs.Credentials = System.Net.CredentialCache.DefaultCredentials;

   // Return a list of catalog items in the report server database
   CatalogItem[] items = rs.ListChildren("/", true);

   // For each report, display the path of the report in a Listbox
   foreach(CatalogItem ci in items)
   {
      if (ci.Type == ItemTypeEnum.Report)
         catalogListBox.Items.Add(ci.Path);
   }
}