WebSurfer's Home

トップ > Blog 1   |   ログイン
APMLフィルター

ローカル .wsdl ファイルからプロキシ作成

by WebSurfer 2020年5月11日 12:06

.NET Framework アプリから Web / WCF サービスに接続して情報を取得する場合、Visual Studio の「サービス参照の追加」を利用してアプリと Web / WCF サービス間のインターフェイスとなるプロキシクラスを生成し、それを利用すると思います。

サービス参照の追加

Microsoft のチュートリアルなどでは、上の画像で[アドレス(A):]に設定するのはサービスの URL(例: http://example.com/service.svc)という記述しか目にしてこなかったので、URL 以外はダメだと思い込んでいましたが、実はローカルの .wsdl ファイルでも OK でしたという話を書きます。

Microsoft のドキュメント「Web サービス プロキシの作成」に ".NET Framework SDK には、Web サービス記述言語ツール (Wsdl.exe) が含まれています。これにより、.NET Framework 開発環境で使用する Web サービス プロキシを生成できます" という記述があります。

その記事のコード例では、やはりサービスの URL を設定していますが、Wsdl.exe のヘルプ(以下の画像参照)を見るとローカル .wsdl ファイルのパスでもよさそうです。

Wsdl.exe のヘルプ

一方、.wsdl ファイルですが、@IT の記事「WSDL:Webサービスのインターフェイス情報」によると十分なインターフェイス情報が含まれているようで、それからプロキシクラスが生成できないわけはなさそうです。

Visual Studio も「サービス参照の追加」ウィザードには Wsdl.exe を使っているはずです。なので、自分が作った Web サービスから .wsdl ファイルを作り、それを自分の PC のローカルフォルダにおいて、そのバスを「サービス参照の追加」ダイアログの[アドレス(A):]に設定して試してみました。

結果、以下の通りプロキシクラスを生成できます。

生成されたプロキシクラス

アプリから生成されたプロキシクラスを使って Web サービスに接続し、期待通りの結果が得られることも確認できました。

実際に URL ではなくローカルの .wsdl ファイルからプロキシクラスを作成しなけれなならないケースがどれぐらいあるのか分かりませんが、Visual Studio でこういうこともできるということで参考になれば幸いです。

(ちなみに http://example.com/service.svc というサービスの URL から .wsdl ファイルをダウンロードするには、その URL に ?wsdl というクエリ文字列を追加して要求をかけます。)

Tags: , ,

DevelopmentTools

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。

Calendar

<<  2024年4月  >>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

View posts in large calendar