WsdlService 型別提供者 (F#)
指定WSDL (Web服務描述語言) 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:bool |
需求與服務的直接連接只能在設計階段並強制區域結構描述檔的重新整理。預設值為 true。當 ForceUpdate 為false時,提供者會反應在 LocalSchemaFile的變更。 |
? MessageContract:bool |
如果 true,產生訊息合約型別。預設值是 false。 |
? EnableDataBinding:bool |
如果為true,則產生的資料合約型別實作 INotifyPropertyChanged 介面來啟用資料繫結。 |
? 可序列化:bool |
如果 true,產生的型別是可序列化的。預設值為 false。如果設定為true,則產生的型別具有可序列化屬性套用。 |
? 用於初始化:bool |
如果 true,產生同步和非同步方法簽章。預設值是 false。 |
? CollectionType:字串 |
使用型別的完整或組件限定名稱,集合資料型別,將程式碼從結構描述產生。 |
備註
如需示範如何使用這個型別的提供者,請參閱 逐步解說:使用型別提供者存取 Web 服務 (F#)的逐步解說。
關於 WSDL
WSDL是描述之Web服務的XML語言。Web服務公開方法呼叫或函式呼叫(Function Call)在網路上,而且,在WSDL的情況下,網際網路。服務在服務和相關聯的資料型別會用於WSDL提供可用的函式呼叫(Function Call)的描述。WSDL型別提供者會在此程式碼可讓您使用任何WSDL服務的資料型別,通常,而不需要額外負荷建立它們為每一項服務。
WSDL文件包含Web服務的說明。WSDL文件中的XML格式且包含介面的定義和作業中,如需網路端點的訊息和資料型別使用和資訊,例如URI、通訊埠和通訊協定所使用。WSDL文件有兩個主要區段、介面的抽象定義,其型別、作業和訊息和繫結區段。
WSDL連接,也稱為portTypes,也就是作業群組。作業與介面中的方法。作業,例如方法,可以有參數和傳回值。作業在WSDL檔案中所描述的並非專屬於通訊協定使用的一種抽象格式。WSDL文件的繫結區段描述介面如何公開為Web服務,將特定端點、通訊埠和通訊協定。通訊協定使用WSDL通常是SOAP (Simple Object Access Protocol 的簡稱) 在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用戶端。它類似於執行建立的型別 ClientBase<TChannel>wsdl.exe並從繼承。用戶端物件包含其基底類別(Base Class)的不僅繼承的方法,而是Web服務所提供的Web方法。
靜態引數 DataContractOnly、 EnableDataBinding、 MessageContract、 Async、 CollectionType和 DataContractSerializer 影響的相同名稱的命令列引數將 svcutil.exe。如需這些引數的效用的詳細資訊,請參閱 ServiceModel Metadata Utility Tool (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,可攜式執行檔 (PE)。
請參閱
工作
參考
Microsoft.FSharp.Data.TypeProviders 命名空間 (F#)