次の方法で共有


WsdlService 型プロバイダー (F#)

Web サービス記述言語 (WSDL) Web サービスに型を提供します。

名前空間/モジュール パス: Microsoft.FSharp.Data.TypeProviders

アセンブリ: FSharp.Data.TypeProviders (FSharp.Data.TypeProviders.dll 内)

type WsdlService<ServiceUri : string,
                 ?LocalSchemaFile : string,
                 ?ForceUpdate : bool
                 ?MessageContract : bool,
                 ?EnableDataBinding : bool,
                 ?Serializable : bool,
                 ?Async : bool,
                 ?CollectionType : string>

静的型パラメーター

型パラメーター

説明

ServiceUri : string

Web サービスの URI です。

?LocalSchemaFile : string

ローカルにキャッシュされたサービス スキーマを格納する .wsdlschema ファイルです。

?ForceUpdate : bool

デザイン時のサービスへの直接接続を必須とし、ローカル スキーマ ファイルを強制的に更新します。 既定値は true です。 ForceUpdate が false の場合、プロバイダーは LocalSchemaFile の変更に対して動作します。

?MessageContract : bool

true の場合、メッセージ コントラクト型を生成します。 既定値は false です。

?EnableDataBinding : bool

true の場合、生成されたデータ コントラクト型は INotifyPropertyChanged インターフェイスを実装してデータ バインディングを有効にします。

?Serializable : bool

true の場合、生成された型はシリアル化可能です。 既定値は、false です。 これが true に設定されている場合、生成された型には Serializable 属性が適用されます。

?Async : bool

true の場合、同期と非同期の両方のメソッド署名を生成します。 既定値は false です。

?CollectionType : string

コードがスキーマから生成される場合に、コレクション データ型として使用する型の完全修飾名またはアセンブリ修飾名です。

解説

この型プロバイダーの使用方法を示すチュートリアルについては、「チュートリアル : 型プロバイダーを使用した Web サービスへのアクセス (F#)」を参照してください。

WSDL について

WSDL は XML ベースの言語で、Web サービスの記述に使用します。 Web サービスはメソッド呼び出しや関数呼び出しをネットワーク上で公開しますが、WSDL ではこれらをインターネット上で公開します。 WSDL はサービスによって使用され、サービスで使用できる関数呼び出しと関連付けられたデータ型の記述を提供します。 WSDL 型プロバイダーによって、各サービスについてデータ型を作成する通常のオーバーヘッドなしに、コードですぐに WSDL サービスからデータ型を使用できます。

WSDL ドキュメントには、Web サービスの説明が含まれています。 WSDL ドキュメントは XML 形式であり、提供されるインターフェイスや操作の定義、使用されるメッセージやデータ型、およびネットワーク エンドポイントに関する情報 (使用する URI、ポート、プロトコルなど) が含まれます。 WSDL ドキュメントには、インターフェイス、型、操作、およびメッセージの抽象定義と、束縛セクションの 2 つの主要なセクションがあります。

WSDL インターフェイス (portType とも呼ばれる) は操作のグループです。 操作はインターフェイスのメソッドに似ています。 操作は、メソッドと同様に、パラメーターと戻り値を持つことができます。 操作は、WSDL ドキュメントでは、使用されるプロトコルに固有ではない抽象形式で記述されます。 WSDL ドキュメントの束縛セクションでは、インターフェイスが、特定のエンドポイント、つまりポートとプロトコルを通じて、公開する方法を記述します。 WSDL で使用されるプロトコルは、通常、SOAP (簡易オブジェクト アクセス プロトコル) over HTTP です。 SOAP プロトコルは、オブジェクト指向の型およびメソッドをエンコードする方法を提供します。

WSDL 2.0 は、WSDL プロトコルの重要なリビジョンです。

詳細については、「Understanding WSDL (WSDL について)」を参照してください。

WSDL 型プロバイダーについて

WSDL 型プロバイダーによって、一連の自動生成された型を持つ Web サービスをプログラミングすることができます。 背後では、コンパイラが svcutil.exe を実行して、Web サービスへのアクセスに使用できる型を生成します。 これらは、サービスの F# コードで型プロバイダーを宣言することによって生成されます。 次のコード行は、これを示したものです。

 
type terraService = WsdlService<"http://www.terraserver-usa.com/TerraServer2.asmx?WSDL">
let terraClient = terraService.GetTerraServiceSoap ()

サービス オブジェクトは、SOAP プロトコルの詳細を隠し、クライアント コードに Web サーバーの機能を公開します。 サービス オブジェクトは SOAP クライアントと呼ばれます。これは、そのジョブが SOAP プロトコルを使用して Web サービス操作を呼び出すことによってサーバーとやり取りすることであるためです。 これは wsdl.exe を実行することによって作成された型に似ており、ClientBase を継承します。 クライアント オブジェクトには、基底クラスから継承されたメソッドだけではなく、Web サービスによって提供される Web メソッドも含まれています。

静的引数 DataContractOnlyEnableDataBindingMessageContractAsyncCollectionType、および DataContractSerializer は、svcutil.exe に対して指定される類似した名前のコマンド ライン引数に影響します。 これらの引数の効果の詳細については、「ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)」を参照してください。 サービスに必要な型は、ServiceTypes の下の WsdlService 型の下に生成されます。

WsdlService 型プロバイダーを使用するには、System.ServiceModel アセンブリへの参照を追加する必要があります。 System.Runtime.Serialization が必要になる場合もあります。

Web メソッドに対して使用される型は、ServiceTypes の下の一連の入れ子にされた型に含まれています。

使用例

次の例では、WsdlService 型プロバイダーを使用して Web サービスのメソッドを呼び出す方法を示します。この例では、Web サービスは、Microsoft Research によって発行された TerraServer サイトです。

open System
open System.ServiceModel
open Microsoft.FSharp.Linq
open Microsoft.FSharp.Data.TypeProviders



type terraService = Microsoft.FSharp.Data.TypeProviders.WsdlService<"http://terraserver-usa.com/TerraService2.asmx?WSDL">

try
    let terraClient = terraService.GetTerraServiceSoap ()
    let myPlace = new terraService.ServiceTypes.msrmaps.com.Place(City = "Redmond", State = "Washington", Country = "United States")
    let myLocation = terraClient.ConvertPlaceToLonLatPt(myPlace)
    printfn "Redmond Latitude: %f Longitude: %f" (myLocation.Lat) (myLocation.Lon)
with
    | :? ServerTooBusyException as exn ->
        let innerMessage =
            match (exn.InnerException) with
            | null -> ""
            | innerExn -> innerExn.Message
        printfn "An exception occurred:\n %s\n %s" exn.Message innerMessage
    | exn -> printfn "An exception occurred: %s" exn.Message

Console.WriteLine("Press any key to continue...");
Console.ReadLine() |> ignore

出力

  

プラットフォーム

Windows 8、Windows 8、Windows 7、Windows Server 2012、Windows Server 2008 R2

バージョン情報

F# コア ライブラリのバージョン

2.0、4.0、Portable でサポート

参照

処理手順

チュートリアル : 型プロバイダーを使用した Web サービスへのアクセス (F#)

関連項目

Microsoft.FSharp.Data.TypeProviders 名前空間 (F#)

概念

ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)