Visual StudioからLive Search APIを利用するとき、2008以前は「Web参照の追加」ダイアログを使うことでMSNSearchServiceクラスが作られていました。2008からは「サービス参照の追加」になっています。作られるクラスもMSNSearchPortTypeClientクラスになりました。
参照の追加によって作られたファイルはソリューションエクスプローラの「すべてのファイルを表示」ボタンにより確認できます。
2008以前・2008で作られるクラスは、それぞれ
- MSNSearchService: System.Web.Services.Protocols.SoapHttpClientProtocolを継承したクラス。
- MSNSearchPortTypeClient: System.ServiceModel.ClientBase(Of TChannel)を継承したクラス。
になっています。同じWSDLから作成されるのでデータプロパティやメソッドは同じですが、2008のサービス参照の追加によって作られたクラスはWCFクライアントオブジェクトになっています。そのためWCFクライアントの使い方に沿った手順が求められます。
サービスの操作を呼び出した後はCloseメソッドを使い終了します。例外の場合はAbortメソッドを使います。例外の種類も以前と異なっていることがわかります。SOAPによる例外はFaultExceptionによりわかりますが、以前のように詳細なメッセージは含まれていません。
Try
Dim service = New MSNSearchPortTypeClient
Dim searchResponse = service.Search(searchRequest)
service.Close()
Catch timeoutEx As TimeoutException
service.Abort()
Catch soapEx As ServiceModel.FaultException
service.Abort()
Catch commEx As ServiceModel.CommunicationException
service.Abort()
Catch ex As Exception
service.Abort()
End Try
参考: WCFクライアントの概要
2008で従来のようにWeb参照の追加をしたい場合は、サービス参照の追加ダイアログの「詳細設定」ボタン→「Web参照の追加」ボタンから追加可能です。.NET Framework 2.0を使用したアプリケーションのために残されているようです。