ServiceDescription and WSDL Reference
Este tópico descreve como o WCF (Windows Communication Foundation) mapeia documentos de linguagem WSDL de e para instâncias ServiceDescription.
Como o ServiceDescription mapeia para WSDL 1.1
Você pode usar o WCF para exportar documentos de WSDL de uma instância ServiceDescription para o seu serviço. Os documentos de WSDL são gerados automaticamente para o serviço quando você publica pontos de extremidade de metadados.
Você também pode importar instâncias ServiceEndpoint, ContractDescription e Binding de documentos de WSDL usando o tipo WsdlImporter
.
Os documentos de WSDL, exportados pelo WCF, importam quaisquer definições de esquema XML usadas de documentos de esquema XML externos. Um documento de esquema XML separado é exportado para cada namespace de destino que os tipos de dados usam no serviço. Da mesma forma, um documento de WSDL separado é exportado para cada namespace de destino que os contratos de serviço usam.
ServiceDescription
Uma instância ServiceDescription é mapeada para um elemento wsdl:service
. Uma instância ServiceDescription contém uma coleção de instâncias ServiceEndpoint que cada uma mapeia para elementos wsdl:port
individuais.
Propriedades | Mapeamento de WSDL |
---|---|
Name |
O valor wsdl:service /@name para o serviço. |
Namespace |
O targetNamespace para a definição wsdl:service do serviço. |
Endpoints |
As definições wsdl:port para o serviço. |
ServiceEndpoint
Uma instância ServiceEndpoint é mapeada para um elemento wsdl:port
. Uma instância ServiceEndpoint contém um endereço, uma associação e um contrato.
Comportamentos de ponto de extremidade que implementam a interface IWsdlExportExtension podem modificar o elemento wsdl:port
para o ponto de extremidade ao qual estão anexados.
Propriedades | Mapeamento de WSDL |
---|---|
Name |
O valor wsdl:port /@name para o ponto de extremidade e o valor wsdl:binding /@name para a associação de ponto de extremidade. |
Address |
O endereço para a definição wsdl:port do ponto de extremidade.O transporte para o ponto de extremidade determina o formato do endereço. Por exemplo, para transportes compatíveis com WCF, pode ser um endereço SOAP ou uma referência de ponto de extremidade. |
Binding |
A definição wsdl:binding do ponto de extremidade.Ao contrário das definições wsdl:binding , as associações no WCF não estão vinculadas a nenhum contrato. |
Contract |
A definição wsdl:portType do ponto de extremidade. |
Behaviors |
Comportamentos de ponto de extremidade que implementam a interface IWsdlExportExtension podem modificar o wsdl:port para o ponto de extremidade. |
Associações
A instância de associação de uma instância ServiceEndpoint
é mapeada para uma definição wsdl:binding
. Ao contrário das definições wsdl:binding
, que devem ser associadas a uma definição wsdl:portType
específica, as associações WCF são independentes de qualquer contrato.
Uma associação é composta por uma coleção de elementos de associação. Cada elemento descreve alguns aspectos de como o ponto de extremidade se comunica com os clientes. Além disso, uma associação tem um MessageVersion que indica o EnvelopeVersion e o AddressingVersion para o ponto de extremidade.
Propriedades | Mapeamento de WSDL |
---|---|
Name |
Usado no nome padrão de um ponto de extremidade, que é o nome de associação com o nome do contrato acrescentado separado por um sublinhado. |
Namespace |
O targetNamespace para a definição wsdl:binding .Na importação, se uma política estiver anexada à porta WSDL, o namespace de associação importado será mapeado para o targetNamespace para a definição wsdl:port . |
BindingElementCollection , conforme retornado pelo método CreateBindingElements () |
Várias extensões específicas do domínio para a definição wsdl:binding , normalmente declarações de política. |
MessageVersion |
O EnvelopeVersion e o AddressingVersion para o ponto de extremidade.Quando MessageVersion.None é especificado, a associação WSDL não contém uma associação SOAP e a porta WSDL não contém conteúdo do WS-Addressing. Essa configuração normalmente é usada para pontos de extremidade XML (POX) antigos simples. |
BindingElements
Os elementos de associação de um mapa de associação de ponto de extremidade para várias extensões WSDL no wsdl:binding
, como declarações de política.
A associação TransportBindingElement determina o URI (Uniform Resource Identifier) de transporte para uma associação SOAP.
AddressingVersion
O AddressingVersion
em uma associação é mapeado para a versão de endereçamento usada no wsd:port
. O WCF dá suporte a endereços SOAP 1.1 e SOAP 1.2 e referências de ponto de extremidade WS-Addressing 08/2004 e WS-Addressing 1.0.
EnvelopeVersion
O EnvelopeVersion
em uma associação é mapeado para a versão de SOAP usada no wsdl:binding
. O WCF dá suporte a associações SOAP 1.1 e SOAP 1.2.
Contratos
A instância ContractDescription de uma instância ServiceEndpoint
é mapeada para um wsdl:portType
. Uma instância ContractDescription
descreve todas as operações de um determinado contrato.
Propriedades | Mapeamento de WSDL |
---|---|
Name |
O valor wsdl:portType /@name para o contrato. |
Namespace |
O targetNamespace para a definição wsdl:portType . |
SessionMode |
O valor wsdl:portType /@msc:usingSession para o contrato. Esse atributo é uma extensão WCF para WSDL 1.1. |
Operations |
As definições wsdl:operation do contrato. |
Operations
Por exemplo, OperationDescription é mapeado para um wsdl:portType
/wsdl:operation
. Um OperationDescription
contém uma coleção de instâncias MessageDescription
que descrevem as mensagens para a operação.
Dois comportamentos de operação participam fortemente de como um OperationDescription
é mapeado para um documento de WSDL: DataContractSerializerOperationBehavior
e XmlSerializerOperationBehavior
.
Propriedades | Mapeamento de WSDL |
---|---|
Name |
O valor wsdl:portType /wsdl:operation /@name para a operação. |
ProtectionLevel |
Declarações de proteção na política de segurança anexadas às mensagens wsdl:binding/wsdl:operation para essa operação. |
IsInitiating |
O valor wsdl:portType /wsdl:operation /@msc:isInitiating para a operação. Esse atributo é uma extensão WCF para WSDL 1.1. |
IsTerminating |
O valor wsdl:portType /wsdl:operation /@msc:isTerminating para a operação. Esse atributo é uma extensão WCF para WSDL 1.1. |
Messages |
As mensagens wsdl:portType /wsdl:operation /wsdl:input e wsdl:portType /wsdl:operation /wsdl:output para a operação. |
Faults |
As definições wsdl:portType /wsdl:operation /wsdl:fault para a operação. |
Behaviors |
O DataContractSerializerOperationBehavior e XmlSerializerOperationBehavior tratam a associação da operação e as mensagens da operação. |
O DataContractSerializerOperationBehavior
O DataContractSerializerOperationBehavior
para uma operação é uma implementação IWsdlExportExtension
que exporta as mensagens de WSDL e a associação para essa operação. Os tipos de esquema XML são exportados usando o XsdDataContractExporter
. O DataContractSerializerOperationBehavior
também determina o uso, o estilo e o exportador de esquema e o importador a serem usados para essa operação.
Propriedades | Mapeamento de WSDL |
---|---|
DataContractFormatAttribute |
A propriedade Style desse atributo é mapeada para o valor wsdl:binding /wsdl:operation /soap:operation /@style da operação.O DataContractSerializerOperationBehavior dá suporte apenas ao uso literal dos tipos de esquema no WSDL. |
The XmlSerializerOperationBehavior
O XmlSerializerOperationBehavior
para uma operação é uma implementação IWsdlExportExtension
que exporta as mensagens de WSDL e a associação para essa operação. Os tipos de esquema XML são exportados usando o XmlSchemaExporter
. O XmlSerializerOperationBehavior
também determina o uso, o estilo e o exportador de esquema e o importador a serem usados para essa operação.
Propriedades | Mapeamento de WSDL |
---|---|
XmlSerializerFormatAttribute |
A propriedade Style desse atributo é mapeada para o valor wsdl:binding /wsdl:operation /soap:operation /@style da operação.A propriedade Use desse atributo é mapeada para os valores wsdl:binding /wsdl:operation /soap:operation /*/@use para todas as mensagens na operação. |
Mensagens
Uma instância MessageDescription
é mapeada para um wsdl:message
referenciado por uma mensagem wsdl:portType
/wsdl:operation
/wsdl:input
ou wsdl:portType
/wsdl:operation
/wsdl:output
em uma operação. Um MessageDescription
tem um corpo e cabeçalhos.
Propriedades | Mapeamento de WSDL |
---|---|
Action |
A ação SOAP ou WS-Addressing para a mensagem. Observe que as operações que usam a cadeia de caracteres de ação "*" não são representadas no WSDL. |
Direction |
O MessageDirection.Input é mapeado para wsdl:input .O MessageDirection.Output é mapeado para wsdl:output . |
ProtectionLevel |
Declarações de proteção na política de segurança anexadas à definição wsdl:message para essa mensagem. |
Body |
O corpo da mensagem para a mensagem. |
Headers |
Os cabeçalhos para a mensagem. |
ContractDescription.Name , OperationContract.Name |
Na exportação, usado para derivar o valor wsdl:message /@name. |
Corpo da mensagem
Uma instância MessageBodyDescription
é mapeada para as definições wsdl:message
/wsdl:part
para o corpo de uma mensagem. O corpo da mensagem pode estar encapsulado ou nu.
Propriedades | Mapeamento de WSDL |
---|---|
WrapperName |
Se o estilo não for RPC, os mapas WrapperName serão mapeados para o nome do elemento referenciado pelo wsdl:message /wsdl:part com @name definido como "parâmetros". |
WrapperNamespace |
Se o estilo não for RPC, os mapas WrapperNamespace serão mapeados para o nome do elemento namespace para o wsdl:message /wsdl:part com @name definido como "parâmetros". |
Parts |
As partes da mensagem para esse corpo da mensagem. |
ReturnValue |
O elemento filho do elemento wrapper se existir um elemento wrapper (estilo encapsulado de documento ou estilo RPC), caso contrário, o primeiro wsdl:message /wsdl:part na mensagem. |
Partes da mensagem
Uma instância MessagePartDescription
mapeia para um wsdl:message
/wsdl:part
e o tipo de esquema XML ou elemento para o qual a parte da mensagem aponta.
Propriedades | Mapeamento de WSDL |
---|---|
Name |
O valor wsd:message /wsdl:part /@name para a parte da mensagem e o nome do elemento para o qual a parte da mensagem aponta. |
Namespace |
O namespace do elemento para o qual a parte da mensagem aponta. |
Index |
O índice do wsdl:message /wsdl:part para a mensagem. |
ProtectionLevel |
Declarações de proteção na política de segurança anexadas à definição wsdl:message para essa parte da mensagem. A política é parametrizada para apontar para a parte específica da mensagem. |
MessageType |
O tipo de esquema XML do elemento para o qual a parte da mensagem aponta. |
Cabeçalhos da mensagem
Uma instância MessageHeaderDescription
é uma parte de mensagem que também é mapeada para uma associação soap:header
para a parte da mensagem.
Falhas
Uma instância FaultDescription
é mapeada para uma definição wsdl:portType
/wsdl:operation
/wsdl:fault
e sua definição wsdl:message
associada. O wsdl:message
é adicionado ao mesmo namespace de destino que seu tipo de porta WSDL associado. O wsdl:message
tem uma única parte de mensagem chamada "detalhe" que aponta para o elemento XML Schema que corresponde ao valor da propriedade DefaultType
da instância FaultDescription
.
Propriedades | Mapeamento de WSDL |
---|---|
Name |
O valor wsdl:portType /wsdl:operation /wsdl:fault /@name para a falha. |
Namespace |
O namespace do elemento XML Schema para o qual a parte da mensagem de detalhes de falha aponta. |
Action |
A ação SOAP ou WS-Addressing para a falha. |
ProtectionLevel |
Declarações de proteção na política de segurança anexadas à definição wsdl:message para essa falha. |
DetailType |
O tipo de esquema XML do elemento para o qual a parte da mensagem de detalhes aponta. |
Name, ContractDescription.Name, OperationDescription.Name, |
Usado para derivar o valor wsdl:message /@name para a mensagem de falha. |