WsdlService 类型提供程序 (F#)

为WSDL (Web服务描述语言(wsdl)) web服务提供类型。

Namespace/Module Path: Microsoft.FSharp.Data.TypeProviders

Assembly: 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:字符串

web服务的URI。

? LocalSchemaFile:字符串

存储的.wsdlschema文件本地缓存的服务模式。

? ForceUpdate:布尔型

需要与服务的直接连接可在设计时和强制本地架构文件的刷新。默认值为 true。当 ForceUpdate 为false时,提供程序响应在 LocalSchemaFile的更改。

? MessageContract:布尔型

如果 true,生成消息协定类型。默认值为 false。

? EnableDataBinding:布尔型

如果为true,则生成的数据协定类型实现 INotifyPropertyChanged 接口以启用数据绑定。

? 序列化:布尔型

如果 true,生成的类型可序列化。默认值为 false。如果此设置为true,则生成的类型应用了可序列化属性。

? Async:布尔型

如果 true,生成同步和异步方法签名。默认值为 false。

? CollectionType:字符串

使用的类型的完全限定或程序集限定名称,收集数据类型,当代码从架构生成。

备注

有关演示如何使用此类型提供程序,请参见 演练:使用类型提供程序访问 Web 服务 (F#)的演练。

关于 WSDL

WSDL是描述web服务的一种基于XML的语言。Web服务公开方法调用或函数调用在网络,并且,在WSDL,Internet。服务用来WSDL提供的描述函数调用中可用服务和关联的数据类型。WSDL类型提供程序会立即在您的代码允许您使用来自任何WSDL服务的数据类型,通常,不用开销创建将为每服务。

WSDL文档包含web服务的说明。WSDL文档的XML格式并包含接口的定义提供的和操作,有关网络连接终结点的消息和数据类型使用的和信息,如使用的URI、端口和协议。WSDL文档有两个主要部分、接口的抽象定义,其类型、操作和消息和绑定部分。

WSDL接口,也称为portTypes,是操作分组。操作与接口中的方法。操作,与方法类似,可以具有参数和返回值。操作在WSDL中描述文档以非特定于使用的协议的一种抽象形式。WSDL的绑定部分文档描述接口如何显示为web服务,通过特定终结点或端口和协议。协议使用WSDL通常是SOAP (简单对象访问协议)在HTTP。SOAP协议提供编码面向对象的类型和方法方式。

WSDL 2.0是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协议调用web服务操作,服务对象被称为SOAP客户端。它类似于运行创建的类型wsdl.exe并从 ClientBase<TChannel>继承。客户端对象包含从其基类的不仅继承的方法,而且web服务提供的web方法。

静态参数 DataContractOnlyEnableDataBindingMessageContractAsyncCollectionTypeDataContractSerializer 影响与类似的名称的命令行参数命名 svcutil.exe。有关这些参数的作用的更多信息,请参见 ServiceModel Metadata Utility Tool (Svcutil.exe)。对于服务所需的类型生成在 ServiceTypes下的 WsdlService 类型下。

必须添加对程序集 System.ServiceModel 使用 WsdlService 类型提供程序。您可能还需要 System.Runtime.Serialization

为web方法使用的类型在 ServiceTypes下的一系列嵌套类型中。

示例

下面的示例演示如何使用 WsdlService 类型提供程序对web服务的方法,在这种情况下,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

Output

  

平台

Windows 8,Windows 8,Windows 7,Windows server 2012中,Windows server 2008 R2

版本信息

F#核心库版本

支持:2.0,4.0,可移植

请参见

任务

演练:使用类型提供程序访问 Web 服务 (F#)

参考

Microsoft.FSharp.Data.TypeProviders 命名空间 (F#)

其他资源

ServiceModel Metadata Utility Tool (Svcutil.exe)