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 を使用してプロキシ クラスをプロジェクトに追加するには
コマンド プロンプトから、Wsdl.exe を使用してプロキシ クラスを作成します。最低限レポート サーバー Web サービスへの URL を指定します。
たとえば、次のコマンド プロンプト ステートメントは、レポート サーバー Web サービスの管理用エンドポイントの URL を指定します。
wsdl /language:CS /n:"Microsoft.SqlServer.ReportingServices2010" http://<Server Name>/reportserver/reportservice2010.asmx?wsdl
WSDL ツールは、プロキシ生成用のコマンド プロンプト引数の数値を受け付けます。前の例は C# 言語、プロキシに使用する推奨名前空間 (Web サービス エンドポイントを複数使用する場合に名前の衝突を避けるため) を指定し、ReportingService2010.cs という名前の C# ファイルを生成します。この例で Visual Basic を指定した場合は、ReportingService2010.vb という名前のプロキシ ファイルが生成されます。このファイルは、コマンド実行元のディレクトリに作成されます。
プロキシ クラスをアセンブリ ファイル (拡張子 .dll) にコンパイルし、それをプロジェクトで参照するか、またはプロキシ クラスをプロジェクト アイテムとして追加します。
注 プロキシ クラスをプロジェクトに手動で追加する場合は、System.Web.Services.dll への参照を追加する必要があります。Visual Studio .NET で Web 参照を使用してプロキシを追加する場合は、参照が自動的に作成されます。詳細については、この後の「Visual Studio で Web 参照を使用するプロキシの追加」を参照してください。
プロキシ クラスをアイテムとしてプロジェクトに追加した後、関連付けられたファイルがソリューション エクスプローラーに表示されます。
プログラムによってサービスを呼び出すには、プロキシ クラスのインスタンスを作成します。
次のコード例は、プロジェクトに ReportingService2010 プロキシ クラスのインスタンスを作成する場合の構文を示しています。
Dim service As New ReportingService2010()
ReportingService2010 service = new ReportingService2010();
完全な構文を含む Wsdl.exe ツールの詳細については、.NET Framework SDK ドキュメントの「Web サービス記述言語ツール」を参照してください。Web サービス プロキシの詳しい説明は、.NET Framework SDK ドキュメントの「XML Web サービス プロキシの作成」を参照してください。
Visual Studio で Web 参照を使用するプロキシの追加
Web 参照によって、プロジェクトで 1 つ以上の Web サービスを使用できます。Visual Studio では、ユーザーが次の簡単な手順に従うことによって、Web サービスの参照をプロジェクトに追加できます。
Web 参照をプロジェクトに追加するには
ソリューション エクスプローラーで、Web サービスを使用するプロジェクトを選択します。
[プロジェクト] メニューの [Web 参照の追加] をクリックします。
[Web 参照の追加] ダイアログ ボックスが開きます。
[URL] フィールドに、レポート サーバー Web サービスへの完全なパスを入力します。
レポート サーバー Web サービスのレポート実行エンドポイントの単純な URL は、次のようになります。
http://<Server Name>/reportserver/reportexecution2005.asmx
URL には、レポート サーバー Web サービスを配置するドメイン、Web サービスを格納するフォルダー名、および Web サービスの検出ファイル名が含まれます。各種 URL 要素の完全な説明については、「SOAP API へのアクセス」を参照してください。
Web サービスによって提供されるメソッドとプロパティの説明が、左側のブラウザー ペインに表示されます。
注 レポート サーバー Web サービスに関連付けられたアイテムの詳細については、「レポート サーバー Web サービスのメソッド」を参照してください。
プロジェクトでレポート サーバー Web サービスを使用できること、およびレポート サーバーにアクセスするための適切な権限を持っていることを確認します。
[Web 参照名] フィールドに、プログラムによってレポート サーバー Web サービスにアクセスする場合にコードで使用する名前を入力します。
[参照の追加] を選択し、アプリケーションで Web サービスへの参照を作成します。
アクティブなプロジェクトの [Web 参照] ノードの下にある [ソリューション エクスプローラー] に、新しい参照が [Web 参照名] フィールドに指定した名前で表示されます。
[ソリューション エクスプローラー] で、[Web 参照] フォルダーを展開し、プロジェクトのアイテムで使用できる Web 参照クラスの名前空間をメモします。
Web 参照をプロジェクトに追加した後、関連付けられたファイルが [ソリューション エクスプローラー] の [Web 参照] フォルダー内にあるフォルダーに表示されます。
Web 参照を追加した後に、次の構文を使用してプロキシ クラスのインスタンスを作成します。
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
using (Visual Basic では Import) ディレクティブをレポート サーバー Web サービス参照に追加することもできます。このディレクティブを使用する場合は、名前空間内の型を完全修飾する必要がありません。このためには、次のコードをファイルに追加します。
Import myNamespace.myReferenceName
using myNamespace.myReferenceName;