Sdílet prostřednictvím


WsdlService – poskytovatel typů (F#)

Poskytuje typy pro webovou službu WSDL (Web Services Description Language).

Obor názvů/cesta modulu: Microsoft.FSharp.Data.TypeProviders

Sestavení: FSharp.Data.TypeProviders (v FSharp.Data.TypeProviders.dll)

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

Parametry statického typu

Parametr typu

Description

ServiceUri : řetězec

Identifikátor URI pro webovou službu.

?LocalSchemaFile : řetězec

Soubor .wsdlschema pro místní ukládání schématu služby v mezipaměti.

?ForceUpdate : bool

Vyžaduje, aby bylo při návrhu k dispozici přímé připojení ke službě vynucuje aktualizaci místního souboru schématu.Výchozí hodnota je True.Když je ForceUpdate false, poskytovatel reaguje na změny v LocalSchemaFile.

?MessageContract : bool

Pokud true, generuje typy kontraktů zpráv.Výchozí hodnota je false.

?EnableDataBinding : bool

Pokud true, generované typy kontraktů dat implementují rozhraní INotifyPropertyChanged a povolují datové vazby.

?Serializovatelný : bool

Pokud true, jsou generované typy serializovatelné.Výchozí hodnota je false.Pokud je nastavena na hodnotu true, generované typy mají použit serializovatelný atribut.

?Asynchronní: bool

Pokud true, vygeneruje podpisy synchronní i asynchronní metody.Výchozí hodnota je false.

?CollectionType: řetězec

Plně kvalifikovaný nebo sestavením kvalifikovaný název typu pro použití jako datový typ kolekce při generování kódu ze schémat.

Poznámky

Návod, který ukazuje, jak použít tento typ zprostředkovatele, viz Návod: Přístup k webové službě s použitím zprostředkovatelů typů (F#).

O WSDL

WSDL je jazyk na základě XML pro popis webových služeb.Webové služby vystavují volání metody nebo volání funkce po síti a v případě WSDL na Internetu.WSDL je používán službami k poskytnutí popisu volání funkce dostupných ve službě a přidružených datových typech.Poskytovatel typu WSDL vám umožňuje okamžitě použít datové typy z jakékoli služby WSDL ve vašem kódu bez obvyklé režie jejich vytvoření pro každou službu.

Dokument WSDL obsahuje popis webové služby.Dokumenty WSDL jsou ve formátu XML a obsahují definice nabídnutých rozhraní a operací, používané zprávy a datové typy a informace o koncových bodech sítě, například identifikátorech URI, portech a používaných protokolech.Dokument WSDL obsahuje dvě hlavní části, abstraktní definice rozhraní, jejich typy, operace, zprávy a části vazeb.

Rozhraní WSDL, označovaná také jako portTypes, jsou seskupení operací.Operace jsou jako metody na rozhraní.Operace, stejně jako metody, mohou mít parametry a vracet hodnoty.Operace jsou popsány v dokumentu WSDL v abstraktní podobě, která není specifická pro používaný protokol.Část vazby dokumentu WSDL popisuje, jak jsou rozhraní vystavena jako webové služby prostřednictvím určitého koncového bodu nebo portu a protokolu.Protokol používaný WSDL je obvykle SOAP (Simple Object Access Protocol) přes protokol HTTP.Protokol SOAP poskytuje způsob zakódování objektově orientovaných typů a metod.

WSDL 2.0 je podstatná revize protokolu WSDL.

Další informace naleznete v tématu Princip WSDL.

O poskytovateli typů WSDL

Poskytovatel typu WSDL vám umožňuje programovat proti webové službě se sadou automaticky vygenerovaných typů.Na pozadí spustí kompilátor svcutil.exe ke generování typů, které můžete použít pro přístup k webové službě.Jsou generovány deklarováním poskytovatele typu v kódu F# kód pro službu.Následující řádky kódu to dokládají.

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

Objekt služby skrývá podrobnosti protokolu SOAP a zpřístupňuje funkci webového serveru klientskému kódu.Objekt služby je označován jako klient SOAP vzhledem k tomu, že jeho úkolem je spolupracovat se serverem použitím protokolu SOAP k volání operací webové služby.Je obdobou typů vytvořených spuštěním aplikace wsdl.exe a dědí z ClientBase.Klientské objekty obsahují nejen zděděné metody ze své základní třídy, ale také webové metody poskytované webovou službou.

Statické argumenty DataContractOnly, EnableDataBinding, MessageContract, Async, CollectionType a DataContractSerializer mají vliv na argumenty příkazové řádky s podobnými názvy danými svcutil.exe.Další informace o vlivu těchto argumentů naleznete v tématu Nástroj ServiceModel Metadata Utility (Svcutil.exe).Typy požadované pro službu jsou generovány pod typem WsdlService v ServiceTypes.

Je nutné přidat odkaz na sestavení System.ServiceModel pro použití zprostředkovatele typu WsdlService.Budete pravděpodobně potřebovat také System.Runtime.Serialization.

Typy, které se používají pro webové metody, jsou součástí řady vnořených typů v ServiceTypes.

Příklad

Následující příklad ukazuje, jak použít poskytovatele typu WsdlService pro volání metody na webovou službu, v tomto případě web TerraServer publikovaný webem Microsoft Research.

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

Výsledek

  

Platformy

Windows 8, Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2

Informace o verzi

Verze základní knihovny F#

Podporováno ve verzích: 2.0, 4.0, Portable

Viz také

Úkoly

Návod: Přístup k webové službě s použitím zprostředkovatelů typů (F#)

Referenční dokumentace

Microsoft.FSharp.Data.TypeProviders – obor názvů (F#)

Koncepty

Nástroj ServiceModel Metadata Utility (Svcutil.exe)