Provedor de tipo WsdlService (F#)
Fornece os tipos para uma linguagem WSDL (Web Services Description Language).
Caminho do namespace/módulo: Microsoft.FSharp.Data.TypeProviders
Assembly: FSharp.Data.TypeProviders (em FSharp.Data.TypeProviders.dll)
type WsdlService<ServiceUri : string,
?LocalSchemaFile : string,
?ForceUpdate : bool
?MessageContract : bool,
?EnableDataBinding : bool,
?Serializable : bool,
?Async : bool,
?CollectionType : string>
Parâmetros do tipo estático
Digite o parâmetro |
Descrição |
---|---|
ServiceUri : cadeia de caracteres |
O URI para o serviço Web. |
?LocalSchemaFile: cadeia de caracteres |
Um arquivo .wsdlschema para armazenar localmente o esquema de serviço em cache. |
?ForceUpdate : bool |
Requer que uma conexão direta ao serviço esteja disponível no tempo de design e force a atualização do arquivo de esquema local. O padrão é true. Quando ForceUpdate é false, o provedor reage a alterações em LocalSchemaFile. |
?MessageContract : bool |
Se true, gera tipos de contrato de mensagem, O valor padrão é false. |
?EnableDataBinding : bool |
Se verdadeiro, os tipos de Contrato de Dados gerados implementarão a interface INotifyPropertyChanged para habilitar a associação de dados. |
?Serializable : bool |
Se true, os tipos gerados serão serializáveis. O padrão é false. Se isso for definido para verdadeiro, os tipos gerados terão o atributo Serializable aplicado. |
?Async : bool |
Se true, gera assinaturas de método síncronas e assíncronas. O valor padrão é false. |
CollectionType: cadeia de caracteres |
Um nome totalmente qualificado ou do tipo de assembly qualificado para ser usado como um tipo de dados de coleção quando o código é gerado a partir de esquemas. |
Comentários
Para uma explicação passo a passo que mostra como usar esse provedor de tipo, considere Instruções passo a passo: acessando um serviço Web por meio de provedores de tipos (F#).
Sobre o WSDL
WSDL é uma linguagem baseada em XML para descrever serviços Web. Os serviços da Web expõem as chamadas de metodos e de função de uma rede e, no caso de WSDL, na Internet. WSDL é usado por serviços para fornecer uma descrição de chamadas de função disponíveis no serviço e os tipos de dados associados. O provedor de tipo do WSDL permite que você use tipos de dados de qualquer serviço WSDL imediatamente em seu código, sem a sobrecarga usual de criá-los para cada serviço.
Um documento WSDL contém a descrição de um serviço da Web. Documentos WSDL estão no formato XML e contêm definições das interfaces e operações oferecidas, as mensagens e os tipos de dados usados, e informações sobre pontos de extremidade de rede, como os URIs, as portas e os protocolos usados. Um documento WSDL tem duas seções principais, as definições abstratas de interfaces, seus tipos, operações e mensagens e a seção de associações.
Interfaces WSDL, também conhecidas como portTypes, são agrupamentos de operações. As operações são como métodos em uma interface. As operações, como métodos, podem ter parâmetros e retornar valores. As operações são descritas no documento do WSDL em um formulário abstrato que não é específico ao protocolo usado. A seção de associações do documento WSDL descreve como as interfaces são expostas como serviços Web, por meio de um ponto de extremidade ou uma porta e um protocolo específicos. Geralmente, o protocolo usado com o WSDL é o SOAP, e não o HTTP. O protocolo SOAP fornece uma maneira de codificar métodos e tipos orientados ao objeto.
WSDL 2.0 é uma revisão significativa do protocolo WSDL.
Para obter mais informações consulte Noções básicas do WSDL.
Sobre o provedor de tipo de WSDL
O provedor de tipo do WSDL permite que você programe em um serviço Web com um conjunto de tipos gerados automaticamente. Nos bastidores, o compilador executa svcutil.exe para gerar os tipos que podem ser usados para acessar o serviço da Web. Eles são gerados pela declaração do provedor de tipo no código F# para o serviço. As linhas de código a seguir ilustram isso:
type terraService = WsdlService<"http://www.terraserver-usa.com/TerraServer2.asmx?WSDL">
let terraClient = terraService.GetTerraServiceSoap ()
O objeto de serviço oculta os detalhes do protocolo SOAP e expõe a funcionalidade do servidor Web ao código do cliente. O objeto de serviço é conhecido como um cliente SOAP porque seu trabalho é interagir com o servidor usando o protocolo SOAP para chamar operações do serviço Web. É análogo aos tipos criados executando wsdl.exe e herda de ClientBase. Os objetos de cliente contêm não somente os métodos herdados de sua classe base, mas também os métodos da Web fornecidos pelo serviço Web.
Os argumentos estáticos DataContractOnly, EnableDataBinding, MessageContract, Async, CollectionType e DataContractSerializer afetam os argumentos de linha de comando com os nomes semelhantes fornecidos a svcutil.exe. Para obter mais informações sobre o efeito destes argumentos, consulte Ferramenta Utilitário de Metadados ServiceModel (Svcutil.exe). Os tipos necessários para o serviço são gerados no tipo WsdlService em ServiceTypes.
Você deve adicionar uma referência ao assembly System.ServiceModel para usar o provedor de tipo WsdlService. Você também pode precisar de System.Runtime.Serialization.
Os tipos que são usados para os métodos da Web são incluídos em uma série de tipos aninhados em ServiceTypes.
Exemplo
O exemplo a seguir mostra como usar o provedor de tipo WsdlService para chamar um método em um serviço Web, nesse caso, o site TerraServer publicado pela 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
Saída
Plataformas
Windows 8, Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Informações de versão
Versões da biblioteca principal F#
Suportado em: 2.0, 4.0, Portátil
Consulte também
Tarefas
Instruções passo a passo: acessando um serviço Web por meio de provedores de tipos (F#)
Referência
Namespace Microsoft.FSharp.Data.TypeProviders (F#)
Conceitos
Ferramenta Utilitário de Metadados ServiceModel (Svcutil.exe)