SOAP を使用して Reporting Services を統合する - Windows アプリケーション

Reporting Services SOAP API からは、レポート サーバーのすべての機能にアクセスできます。 SOAP API は Web サービスです。したがって、SOAP API に容易にアクセスし、エンタープライズ レポート機能をカスタム ビジネス アプリケーションに取り入れることができます。 Windows アプリケーションの Web サービスにアクセスするには、サービスへの呼び出しを作成するコードを記述します。 Microsoft .NET Framework を使用すると、Web サービスのプロパティとメソッドを公開するプロキシ クラスを生成できます。 その後、使い慣れたインフラストラクチャとツールを使用して、Reporting Services テクノロジに基づいて構築されたビジネス アプリケーションを構築できます。

Windows フォームを使用してレポート管理機能を統合する

SOAP API は、URL アクセスとは異なり、レポート サーバーで使用できる管理機能の完全なセットを提供します。 つまり、SOAP を使用すれば、開発者はレポート マネージャーのすべての管理機能を利用することができます。 したがって、Windows フォームを使用して完全な管理ツールを開発できます。 たとえば、Windows アプリケーションにおいて、レポート サーバー名前空間のコンテンツをユーザーが取得できるようにするとします。 Web サービス ListChildren メソッドを使用すると、レポート サーバー データベース内のすべてのアイテムを一覧表示し、Listview、Treeview、または Combobox コントロールを使用してそれらのアイテムをユーザーに表示できます。 次の Web サービス コードは、ユーザーがフォーム上のボタンを選択したときに、ユーザーの [個人用レポート] フォルダーで使用可能なレポートの現在の一覧を取得するために使用できます。

' Button click event that retrieves a list of reports from  
' the My Reports folder and displays them in a combo box  
Private Sub listReportsButton_Click(sender As Object, e As System.EventArgs)  
   ' Create a new Web service object and set credentials  
   ' to Windows Authentication  
   Dim rs As New ReportingService2010()  
   rs.Credentials = System.Net.CredentialCache.DefaultCredentials  
  
   ' Return the list of items in My Reports  
   Dim items As CatalogItem() = rs.ListChildren("/Adventureworks Sample Reports", False)  
  
   Dim ci As CatalogItem  
   For Each ci In  items  
      ' If the item is a report, add it to   
      ' a combo box  
      If ci.TypeName = "Report" Then  
         catalogComboBox.Items.Add(ci.Name)  
      End If  
   Next ci  
End Sub 'listReportsButton_Click  
// Button click event that retrieves a list of reports from  
// the My Reports folder and displays them in a combo box  
private void listReportsButton_Click(object sender, System.EventArgs e)  
{  
   // Create a new Web service object and set credentials  
   // to Windows Authentication  
   ReportingService2010 rs = new ReportingService2010();  
   rs.Credentials = System.Net.CredentialCache.DefaultCredentials;  
  
   // Return the list of items in My Reports  
   CatalogItem[] items = rs.ListChildren("/Adventureworks Sample Reports", false);  
  
   foreach (CatalogItem ci in items)  
   {  
      // If the item is a report, add it to   
      // a combo box  
      if (ci.TypeName == "Report")  
         catalogComboBox.Items.Add(ci.Name);  
   }  
}  

その後で、ユーザーがコンボ ボックスからレポートを選択し、Web ブラウザー コントロールまたは画像コントロールを使用してフォームのレポートをプレビューできるようにします。

Windows フォームを使用してレポートの表示とナビゲーションを有効にする

レポートを Windows フォーム アプリケーションに統合する場合に使用できるメソッドは、2 つあります。

SOAP API を使用してサポートされている表示形式でレポートを表示するには、Render メソッドを使用します。 SOAP を使用してレポートの表示とナビゲーションを有効化する方法には、次のようなわずかな欠点があります。

  • URL アクセスを介して HTML ビューアーに含まれているレポート ツール バーの組み込み機能を利用することはできません。

  • HTML で表示する場合は、RenderStream メソッドを使用して画像やリソースを追加ストリームとして個別に表示する必要があります。

  • SOAP API を使用した場合よりも URL アクセスを使用してレポートを表示する場合、パフォーマンスに若干の利点があります。

ただし、SOAP API の Render メソッドを使用すると、プログラムによってさまざまな出力形式でレポートを表示および保存できます。 この方法は、ユーザーの操作が必要な URL アクセスよりも優れた方法です。 SOAP API の Render メソッドを使用してレポートを表示すると、サポートされている出力形式のいずれでも表示できます。

Microsoft Visual Studio 2008 に含まれている配信可能なレポート ビューアー コントロールも自由に使用できます。 レポート ビューアー コントロールでは、Reporting Services 機能をカスタム アプリケーションに容易に埋め込むことができます。 レポート ビューアー コントロールは、アプリケーション機能セットの一部として、事前に設計された完全に作成されたレポートを提供する開発者を対象としています。 たとえば、Web サイト管理アプリケーションには、会社の Web サイトでのクリック ストリーム分析を示すレポートが含まれている場合があります。 これらのコントロールをアプリケーションに埋め込む方法は、アプリケーションの配置に Reporting Services サーバー コンポーネントを組み込む方法を簡略化したものと言えます。 コントロールはレポート機能を提供しますが、Reporting Services で見つかる追加のレポート作成、発行、配布および配信のサポートはありません。

レポート ビューアー コントロールには 2 つのバージョンがあります。1 つは Windows リッチ クライアント アプリケーション、もう 1 つは ASP.NET アプリケーションを対象にしています。 また、これらのコントロールは、ローカル処理モードとリモート処理モードの両方をサポートしています。 ローカル処理モードの場合は、アプリケーションによってレポートの定義とデータセットを提供し、レポートの処理を起動します。 リモート処理モードの場合は、データの取得とレポートの処理をレポート サーバー側で実行し、これらのコントロールをレポートの表示とナビゲーションのために使用します。 このモデルを使用すれば、デスクトップの規模にもエンタープライズの規模にも対応できるスケーラビリティの高いリッチ アプリケーションを作成できます。

レポート ビューアー コントロールの説明は、Visual Studio のオンライン ヘルプにあります。 詳細については、Visual Studio の製品ドキュメントを参照してください。

Web サービスと .NET Framework を使用してのアプリケーションの構築
アプリケーションへの Reporting Services の統合
Web アプリケーションでの SOAP API の使用