Reporting Services SOAP API を使用して、レポート サーバーのすべての機能にアクセスできます。 SOAP API は Web サービスであるため、簡単にアクセスして、カスタム ビジネス アプリケーションにエンタープライズ レポート機能を提供できます。 サービスを呼び出すコードを記述するだけで、Windows アプリケーションで Web サービスにアクセスできます。 Microsoft .NET Framework を使用すると、Web サービスのプロパティとメソッドを公開するプロキシ クラスを生成できます。これにより、使い慣れたインフラストラクチャとツールを使用して、Reporting Services テクノロジに基づいて構築されたビジネス アプリケーションを構築できます。
Windows フォームを使用したレポート管理機能の統合
URL アクセスとは異なり、SOAP API はレポート サーバーを介して使用できる管理機能の完全なセットを公開します。 つまり、レポート マネージャーの管理機能全体を開発者が 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 2008 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 2008 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 に含まれている自由に配布可能な ReportViewer コントロールを使用することもできます。 ReportViewer コントロールを使用すると、Reporting Services 機能をカスタム アプリケーションに簡単に埋め込むことができます。 ReportViewer コントロールは、アプリケーション機能セットの一部として、事前設計された完全に作成されたレポートを提供する開発者を対象としています (たとえば、Web サイト管理アプリケーションには、会社の Web サイトでのクリック ストリーム分析を示すレポートが含まれる場合があります)。 アプリケーションにコントロールを埋め込むには、Reporting Services サーバー コンポーネントをアプリケーションの展開に含める代わりに、合理化された代替手段が用意されています。 コントロールはレポート機能を提供しますが、Reporting Services で見つかる追加のレポート作成、発行、配布および配信のサポートはありません。
ReportViewer コントロールには、リッチ Windows クライアント アプリケーション用と ASP.NET アプリケーション用の 2 つのバージョンがあります。 コントロールは、ローカル処理モードとリモート処理モードの両方をサポートします。 ローカル処理モードでは、アプリケーションはレポート定義とデータセットを提供し、レポート処理をトリガーします。 リモート処理モードでは、レポート サーバーでデータの取得とレポート処理が行われ、コントロールは表示とレポートのナビゲーションに使用されます。 このモデルを使用すると、デスクトップからエンタープライズにスケーリングできる豊富なアプリケーションを構築できます。
ReportViewer コントロールについては、Visual Studio のオンライン ヘルプを参照してください。 詳細については、Visual Studio 製品のドキュメントを参照してください。
こちらもご覧ください
Web サービスと .NET Framework を使用してのアプリケーションの構築
Reporting Services をアプリケーションに統合する
Web アプリケーションでの SOAP API の使用