Web サービス プロキシの作成

クライアントと Web サービスは、SOAP メッセージを使用して通信できます。SOAP メッセージは、入力パラメータと出力パラメータを XML としてカプセル化します。プロキシ クラスは、パラメータを XML 要素にマップした後、ネットワークを介して SOAP メッセージを送信します。この方法では、プロキシ クラスによって、SOAP レベルで Web サービスと通信する必要がなくなり、SOAP および Web サービスのプロキシをサポートするあらゆる開発環境で Web サービスを呼び出すことができます。

Microsoft .NET Framework を使用して開発プロジェクトにプロキシ クラスを追加する方法は、.NET Framework の WSDL ツールを使用すること、および Microsoft Visual Studio で Web 参照を追加することの 2 種類です。ここでは、これらの方法について詳しく説明します。

WSDL ツールを使用したプロキシの追加

.NET Framework SDK には、Web サービス記述言語ツール (Wsdl.exe) が含まれています。これにより、.NET Framework 開発環境で使用する Web サービス プロキシを生成できます。Web サービスをサポートする言語 (現在は C# と Microsoft Visual Basic) でクライアント プロキシを作成する場合に最も一般的な方法は、WSDL ツールを使用することです。

Wsdl.exe を使用してプロキシ クラスをプロジェクトに追加するには

  1. コマンド プロンプトから、Wsdl.exe を使用してプロキシ クラスを作成します。最低限レポート サーバー Web サービスへの URL を指定します。
    たとえば、次のコマンド プロンプト ステートメントは、レポート サーバー Web サービスの管理用エンドポイントの URL を指定します。

    wsdl /language:CS /n:"Microsoft.SqlServer.ReportingServices2005" http://myserver/reportserver/reportservice2005.asmx?wsdl
    

    WSDL ツールは、プロキシ生成用のコマンド プロンプト引数の数値を受け付けます。前の例は C# 言語、プロキシに使用する推奨名前空間 (Web サービス エンドポイントを複数使用する場合に名前の衝突を避けるため) を指定し、ReportingService2005.cs という名前の C# ファイルを生成します。この例で Visual Basic を指定した場合は、ReportingService2005.vb という名前のプロキシ ファイルが生成されます。このファイルは、コマンド実行元のディレクトリに作成されます。

  2. プロキシ クラスをアセンブリ ファイル (拡張子 .dll) にコンパイルし、それをプロジェクトで参照するか、またはプロキシ クラスをプロジェクト アイテムとして追加します。

    ms155134.note(ja-jp,SQL.90).gifメモ :
    プロキシ クラスをプロジェクトに手動で追加する場合は、System.Web.Services.dll への参照を追加する必要があります。Visual Studio .NET で Web 参照を使用してプロキシを追加する場合は、参照が自動的に作成されます。詳細については、この後の「Visual Studio で Web 参照を使用するプロキシの追加」を参照してください。

    プロキシ クラスをアイテムとしてプロジェクトに追加した後、関連付けられたファイルがソリューション エクスプローラに表示されます。

  3. プログラムによってサービスを呼び出すには、プロキシ クラスのインスタンスを作成します。
    次のコード例は、プロジェクトに ReportingService2005 プロキシ クラスのインスタンスを作成する場合の構文を示しています。

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

完全な構文を含む Wsdl.exe ツールの詳細については、.NET Framework SDK ドキュメントの「Web サービス記述言語ツール」を参照してください。Web サービス プロキシの詳しい説明は、.NET Framework SDK ドキュメントの「XML Web サービス プロキシの作成」を参照してください。

ms155134.note(ja-jp,SQL.90).gifメモ :
旧バージョンとの互換性を維持するため、Web サービスには Microsoft SQL Server 2000 Reporting Services も用意されています。この Reporting Services には http://myserver/reportserver/reportservice.asmx?wsdl からアクセスできます。

Visual Studio で Web 参照を使用するプロキシの追加

Web 参照によって、プロジェクトで 1 つ以上の Web サービスを使用できます。Visual Studio では、ユーザーが次の簡単な手順に従うことによって、Web サービスの参照をプロジェクトに追加できます。

Web 参照をプロジェクトに追加するには

  1. ソリューション エクスプローラ で、Web サービスを使用するプロジェクトを選択します。

  2. [プロジェクト] メニューの [Web 参照の追加] をクリックします。
    [Web 参照の追加] ダイアログ ボックスが開きます。

  3. [URL] フィールドに、レポート サーバー Web サービスへの完全なパスを入力します。
    レポート サーバー Web サービスのレポート実行エンドポイントの単純な URL は、次のようになります。

    http://myserver/reportserver/reportexecution2005.asmx
    

    URL には、レポート サーバー Web サービスを配置するドメイン、Web サービスを格納するフォルダ名、および Web サービスの検出ファイル名が含まれます。各種 URL 要素の完全な説明については、「SOAP API へのアクセス」を参照してください。
    Web サービスによって提供されるメソッドとプロパティの説明が、左側のブラウザ ペインに表示されます。

    ms155134.note(ja-jp,SQL.90).gifメモ :
    レポート サーバー Web サービスに関連付けられたアイテムの詳細については、「レポート サーバー Web サービスの機能」を参照してください。
  4. プロジェクトでレポート サーバー Web サービスを使用できること、およびレポート サーバーにアクセスするための適切な権限を持っていることを確認します。

  5. [Web 参照名] フィールドに、プログラムによってレポート サーバー Web サービスにアクセスする場合にコードで使用する名前を入力します。

  6. [参照の追加] を選択し、アプリケーションで Web サービスへの参照を作成します。
    アクティブなプロジェクトの [Web 参照] ノードの下にある [ソリューション エクスプローラ] に、新しい参照が [Web 参照名] フィールドに指定した名前で表示されます。

  7. [ソリューション エクスプローラ] で、[Web 参照] フォルダを展開し、プロジェクトのアイテムで使用できる Web 参照クラスの名前空間をメモします。
    Web 参照をプロジェクトに追加した後、関連付けられたファイルが [ソリューション エクスプローラ] の [Web 参照] フォルダ内にあるフォルダに表示されます。

Web 参照を追加した後に、次の構文を使用してプロキシ クラスのインスタンスを作成します。

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

using (Visual Basic では Import) ディレクティブをレポート サーバー Web サービス参照に追加することもできます。このディレクティブを使用する場合は、名前空間内の型を完全修飾する必要がありません。このためには、次のコードをファイルに追加します。

Import myNamespace.myReferenceName
using myNamespace.myReferenceName;

参照

関連項目

Reporting Services Web Services Class Library

その他の技術情報

レポート サーバー Web サービス
Web サービスと .NET Framework を使用したアプリケーションの構築

ヘルプおよび情報

SQL Server 2005 の参考資料の入手