为 WSDL (web 服务描述语言 (wsdl)) web 服务提供类型。
Namespace/Module Path: 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:字符串 |
Web服务的URL。 |
? LocalSchemaFile:字符串 |
存储本地缓存服务模式的 .wsdlschema 文件。 |
? ForceUpdate:布尔 |
需要与服务的直接连接可在设计时和强制本地架构文件的刷新。 默认值为 true。 当 ForceUpdate 为 false 时,提供程序响应在 LocalSchemaFile的更改。 |
? MessageContract:布尔 |
如果 true,生成消息协定类型。 默认值为 false。 |
? EnableDataBinding:布尔 |
如果为 true,则生成的数据协定类型实现 INotifyPropertyChanged 接口以启用数据绑定。 |
? Serializable : 布尔 |
如果 true,生成的类型可序列化。 默认值为 false。 如果此设置为 true,则生成的类型应用了可序列化属性。 |
? Async:布尔 |
如果 true,生成同步和异步方法签名。 默认值为 false。 |
? CollectionType:字符串 |
当代码从架构生成,使用的类型的完全限定或程序集限定名称作为收集数据类型。 |
备注
有关演示如何使用此类型提供程序,请参见 演练:使用类型提供程序访问 Web 服务 (F#)的演练。
关于 WSDL
WSDL 是用于描述 Web services 的基于 XML 的语言。 web 服务在网络公开方法调用或函数调用,并且,在 WSDL,Internet。 服务用WSDL 提供函数调用中可用服务和关联的数据类型的描述。 WSDL 类型提供程序会立即在您的代码允许您使用来自任何 WSDL 服务的数据类型,通常,不用为每服务创建开销。
WSDL 文档包含 web 服务的说明。 WSDL 文档的 XML 格式并包含接口的定义提供的和操作,有关网络连接终结点的消息和数据类型使用的和信息,如使用的 URI、端口和协议。 WSDL 文档有两个主要部分、接口的抽象定义,其类型、操作和消息和绑定部分。
WSDL 接口,也称为 portTypes,是操作分组。 操作类似接口中的方法。 操作,与方法类似,可以具有参数和返回值。 操作在 WSDL 中描述文档以非特定于使用的协议的一种抽象形式。 WSDL 的绑定部分文档描述接口如何显示为 web 服务,通过特定终结点或端口和协议。 协议使用 WSDL 通常是 通过HTTP的SOAP (简单对象访问协议) 。 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继承。 客户端对象不仅包含从其基类的继承的方法,还有 web 服务提供的 web 方法。
静态参数 DataContractOnly、EnableDataBinding、MessageContract、Async、CollectionType和 DataContractSerializer 影响与类似的名称的命令行参数命名 svcutil.exe。 有关这些参数的作用的更多信息,请参见 ServiceModel 元数据实用工具 (Svcutil.exe)。 对于服务所需的类型生成在 ServiceTypes下的 WsdlService 类型下。
必须向程序集 System.ServiceModel 的引用使用 WsdlService 类型提供程序。 您可能还需要System.Runtime.Serialization。
为 web 方法使用的类型在 ServiceTypes下的一系列嵌套类型中。
示例
下面的示例演示如何使用 WsdlService 类型提供程序对 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
Output
平台
Windows 8,Windows 8,Windows 7,Windows Server 2012,Windows Server 2008 R2
版本信息
F# 核心库版本
支持:2.0,4.0,可移植
请参见
任务
参考
Microsoft.FSharp.Data.TypeProviders 命名空间 (F#)