方法 : WSDL コントラクトと共にサービス モニカを使用する
完全に自己完結型である COM Interop クライアントの構築が必要になる場合があります。呼び出そうとするサービスで MEX エンドポイントが公開されておらず、WCF クライアントの DLL が COM interop に登録されていないこともあります。このような場合、サービスを記述した WSDL ファイルを作成し、そのファイルを WCF サービス モニカに渡すことができます。ここでは、WCF WSDL モニカを使用して、WCF の入門サンプルを呼び出す方法を説明します。
WSDL サービス モニカの使用
入門サンプル ソリューションを開き、ビルドします。
Internet Explorer を開いて https://localhost/ServiceModelSamples/Service.svc に移動し、サービスが動作していることを確認します。
Service.cs ファイルで、次の属性を CalculatorService クラスに追加します。
バインディング名前空間をサービスの App.config に追加します。
アプリケーションが読み取る WSDL ファイルを作成します。名前空間を手順 3. と 4. で追加したので、IE で https://localhost/ServiceModelSamples/Service.svc?wsdl を表示することによって、サービスの WSDL 記述全体を照会できます。次に、そのファイルをサービスの WSDL.xml として Internet Explorer で保存できます。手順 3. と 4. で名前空間を指定しなかった場合、上記の URL を照会したときに返される WSDL ドキュメントは、完全な WSDL ではありません。返される WSDL ドキュメントには、他の WSDL ドキュメントをインポートするためのインポート ステートメントが追加されています。各インポート ステートメントを実行し、サービスから返された WSDL とインポートした WSDL を組み合わせることによって、完全な WSDL ドキュメントを作成する必要があります。
Visual Basic 6.0 を開き、新しい標準 .exe ファイルを作成します。フォームにボタンを追加し、追加したボタンをダブルクリックして次のコードをクリック ハンドラに追加します。
' Open the WSDL contract file and read it all into the wsdlContract string. Const ForReading = 1 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("c:\serviceWsdl.xml", ForReading) wsdlContract = objFile.ReadAll objFile.Close ' Create a string for the service moniker including the content of the WSDL contract file. wsdlMonikerString = "service:address='https://localhost/ServiceModelSamples/service.svc'" wsdlMonikerString = wsdlMonikerString + ", wsdl='" & wsdlContract & "'" wsdlMonikerString = wsdlMonikerString + ", binding=WSHttpBinding_ICalculator, bindingNamespace='http://Microsoft.ServiceModel.Samples'" wsdlMonikerString = wsdlMonikerString + ", contract=ICalculator, contractNamespace='http://Microsoft.ServiceModel.Samples'" ' Create the service moniker object. Set wsdlServiceMoniker = GetObject(wsdlMonikerString) ' Call the service operations using the moniker object. MsgBox "WSDL service moniker: 145 - 76.54 = " & wsdlServiceMoniker.Subtract(145, 76.54)
メモ : モニカの形式が正しくないか、GetObject を呼び出せない場合は、"構文が無効です" というメッセージが返されます。このエラーを受信した場合は、使用しているモニカが正しく、サービスが使用可能であることを確認してください。 Visual Basic アプリケーションを実行します。メッセージ ボックスに、Subtract(145, 76.54) を呼び出した結果が表示されます。