ServiceDescription e referência WSDL
Este tópico descreve como o Windows Communication Foundation (WCF) mapeia documentos WSDL (Web Services Description Language) de e ServiceDescription para instâncias.
Como ServiceDescription mapeia para WSDL 1.1
Você pode usar o WCF para exportar documentos WSDL de uma ServiceDescription instância para seu serviço. Os documentos WSDL são gerados automaticamente para o seu serviço quando você publica pontos de extremidade de metadados.
Você também pode importar ServiceEndpoint instâncias, ContractDescription instâncias e Binding instâncias de documentos WSDL usando o WsdlImporter
tipo.
Os documentos WSDL, exportados pelo WCF, importam quaisquer definições de esquema XML usadas de documentos externos do esquema XML. 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 WSDL separado é exportado para cada namespace de destino usado pelos contratos de serviço.
Descrição do Serviço
Uma ServiceDescription instância é mapeada para um wsdl:service
elemento. Uma ServiceDescription instância contém uma coleção de ServiceEndpoint instâncias que cada uma mapeia para elementos individuais wsdl:port
.
Propriedades | Mapeamento WSDL |
---|---|
Name |
O wsdl:service valor /@name para o serviço. |
Namespace |
O targetNamespace para a wsdl:service definição do serviço. |
Endpoints |
As wsdl:port definições para o serviço. |
ServiceEndpoint
Uma ServiceEndpoint instância é mapeada para um wsdl:port
elemento. Uma ServiceEndpoint instância contém um endereço, uma vinculação e um contrato.
Os comportamentos de ponto de extremidade que implementam a IWsdlExportExtension interface podem modificar o wsdl:port
elemento para o ponto de extremidade ao qual estão anexados.
Propriedades | Mapeamento WSDL |
---|---|
Name |
O wsdl:port valor /@name para o ponto de extremidade e o wsdl:binding valor /@name para a ligação do ponto de extremidade. |
Address |
O endereço para a wsdl:port definição do ponto de extremidade.O transporte para o ponto de extremidade determina o formato do endereço. Por exemplo, para transportes suportados por WCF, pode ser um endereço SOAP ou uma referência de ponto de extremidade. |
Binding |
A wsdl:binding definição para o ponto de extremidade.Ao contrário wsdl:binding das definições, as vinculações no WCF não estão vinculadas a nenhum contrato. |
Contract |
A wsdl:portType definição para o ponto de extremidade. |
Behaviors |
Os comportamentos de ponto de extremidade que implementam a IWsdlExportExtension interface podem modificar o wsdl:port para o ponto de extremidade. |
Enlaces
A instância de vinculação para uma ServiceEndpoint
instância é mapeada para uma wsdl:binding
definição. Ao contrário wsdl:binding
das definições, que devem ser associadas a uma definição específica wsdl:portType
, as vinculações WCF são independentes de qualquer contrato.
Uma ligação é composta por uma coleção de elementos de ligação. Cada elemento descreve algum aspeto 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 AddressingVersion para o ponto de extremidade.
Propriedades | Mapeamento WSDL |
---|---|
Name |
Usado no nome padrão de um ponto de extremidade, que é o nome da vinculação com o nome do contrato anexado separado por um sublinhado. |
Namespace |
O targetNamespace para a wsdl:binding definição.Na importação, se uma política estiver anexada à porta WSDL, o namespace de vinculação importado será mapeado para o targetNamespace para a wsdl:port definição. |
BindingElementCollection , conforme retornado pelo CreateBindingElements método () |
Várias extensões específicas de domínio para a wsdl:binding definição, normalmente asserções de política. |
MessageVersion |
O EnvelopeVersion e AddressingVersion para o ponto final.Quando MessageVersion.None é especificada, a ligação WSDL não contém uma ligação SOAP e a porta WSDL não contém conteúdo WS-Addressing. Essa configuração é normalmente usada para pontos de extremidade XML (POX) antigos simples. |
BindingElements
Os elementos de ligação para um mapa de vinculação de ponto de extremidade para várias extensões WSDL no wsdl:binding
, como asserções de política.
O TransportBindingElement for the binding determina o URI (Uniform Resource Identifier) de transporte para uma associação SOAP.
AddressingVersion
O AddressingVersion
em um maquete de ligação para a versão de endereçamento usada no wsd:port
. O WCF suporta 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
on a binding mapeia para a versão do SOAP usada no wsdl:binding
. WCF suporta ligações SOAP 1.1 e SOAP 1.2.
Contratos
A ContractDescription instância de uma ServiceEndpoint
instância é mapeada para um wsdl:portType
arquivo . Uma ContractDescription
instância descreve todas as operações de um determinado contrato.
Propriedades | Mapeamento WSDL |
---|---|
Name |
O wsdl:portType valor /@name para o contrato. |
Namespace |
O targetNamespace para a wsdl:portType definição. |
SessionMode |
O wsdl:portType valor /@msc:usingSession para o contrato. Este atributo é uma extensão WCF para WSDL 1.1. |
Operations |
As wsdl:operation definições do contrato. |
Operações
Uma OperationDescription instância é mapeada para um wsdl:portType
/wsdl:operation
arquivo . Um OperationDescription
contém uma coleção de MessageDescription
instâncias que descrevem as mensagens para a operação.
Dois comportamentos de operação participam fortemente de como um OperationDescription
é mapeado para um documento WSDL: DataContractSerializerOperationBehavior
e XmlSerializerOperationBehavior
.
Propriedades | Mapeamento WSDL |
---|---|
Name |
O wsdl:portType /wsdl:operation valor /@name para a operação. |
ProtectionLevel |
Asserções de proteção na política de segurança anexadas às wsdl:binding/wsdl:operation mensagens para esta operação. |
IsInitiating |
O wsdl:portType /wsdl:operation valor /@msc:isInitiating para a operação. Este atributo é uma extensão WCF para WSDL 1.1. |
IsTerminating |
O wsdl:portType /wsdl:operation valor /@msc:isTerminating para a operação. Este atributo é uma extensão WCF para WSDL 1.1. |
Messages |
As wsdl:portType //wsdl:input wsdl:operation e wsdl:portType /wsdl:operation /wsdl:output mensagens para a operação. |
Faults |
As wsdl:portType //wsdl:operation wsdl:fault definições para a operação. |
Behaviors |
O DataContractSerializerOperationBehavior e XmlSerializerOperationBehavior lidar com a vinculação de operação e as mensagens de operação. |
O DataContractSerializerOperationBehavior
O DataContractSerializerOperationBehavior
for an operation é uma IWsdlExportExtension
implementação que exporta as mensagens WSDL e a vinculação para essa operação. Os tipos de esquema XML são exportados usando o XsdDataContractExporter
. O DataContractSerializerOperationBehavior
também determina o uso, estilo e esquema exportador e importador a ser usado para essa operação.
Propriedades | Mapeamento WSDL |
---|---|
DataContractFormatAttribute |
A Style propriedade para este atributo mapeia para osoap:operation wsdl:binding /wsdl:operation / valor /@style para a operação.O DataContractSerializerOperationBehavior suporta apenas o uso literal dos tipos de esquema no WSDL. |
O XmlSerializerOperationBehavior
O XmlSerializerOperationBehavior
for an operation é uma IWsdlExportExtension
implementação que exporta as mensagens WSDL e a vinculação para essa operação. Os tipos de esquema XML são exportados usando o XmlSchemaExporter
. O XmlSerializerOperationBehavior
também determina o uso, estilo e esquema exportador e importador a ser usado para essa operação.
Propriedades | Mapeamento WSDL |
---|---|
XmlSerializerFormatAttribute |
A Style propriedade para este atributo mapeia para osoap:operation wsdl:binding /wsdl:operation / valor /@style para a operação.A Use propriedade para este atributo mapeia para ossoap:operation wsdl:binding /wsdl:operation / valores /*/@use para todas as mensagens na operação. |
Mensagens
Uma MessageDescription
instância é mapeada para um wsdl:message
que é referenciado por umawsdl:operation
wsdl:input
/wsdl:portType
/ ou umawsdl:output
wsdl:portType
/wsdl:operation
/mensagem em uma operação. A MessageDescription
tem um corpo e cabeçalhos.
Propriedades | Mapeamento 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 |
MessageDirection.Input mapeia para wsdl:input .MessageDirection.Output mapeia para wsdl:output . |
ProtectionLevel |
Asserções de proteção na política de segurança anexadas à wsdl:message definição para esta mensagem. |
Body |
O corpo da mensagem. |
Headers |
Os cabeçalhos da mensagem. |
ContractDescription.Name , OperationContract.Name |
Na exportação, usado para derivar o wsdl:message valor /@name. |
Corpo da Mensagem
Uma MessageBodyDescription
instância é mapeada para as wsdl:message
/wsdl:part
definições do corpo de uma mensagem. O corpo da mensagem pode estar encapsulado ou nu.
Propriedades | Mapeamento WSDL |
---|---|
WrapperName |
Se o estilo não for RPC, o mapeia WrapperName para o nome do elemento referenciado wsdl:message /wsdl:part pelo com @name definido como "parâmetros". |
WrapperNamespace |
Se o estilo não for RPC, o WrapperNamespace será mapeado para o namespace do elemento para owsdl:part wsdl:message /com @name definido como "parameters". |
Parts |
As partes da mensagem para este corpo da mensagem. |
ReturnValue |
O elemento filho do elemento wrapper se existir um elemento wrapper (estilo wrapped do documento ou estilo RPC), caso contrário, o primeiro wsdl:message /wsdl:part na mensagem. |
Partes da mensagem
Uma MessagePartDescription
instância mapeia para um wsdl:message
/wsdl:part
e o tipo ou elemento do esquema XML para o qual a parte da mensagem aponta.
Propriedades | Mapeamento WSDL |
---|---|
Name |
O wsd:message /wsdl:part valor /@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 |
Asserções de proteção na política de segurança anexadas wsdl:message à definição para esta 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 de mensagens
Uma MessageHeaderDescription
instância é uma parte de mensagem que também mapeia para uma soap:header
associação para a parte de mensagem.
Falhas
Uma FaultDescription
instância é mapeada para umawsdl:operation
//wsdl:portType
wsdl:fault
definição e sua definição associada.wsdl:message
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 "detail" que aponta para o elemento XML Schema que corresponde ao valor da DefaultType
propriedade para a FaultDescription
instância.
Propriedades | Mapeamento WSDL |
---|---|
Name |
O wsdl:portType //wsdl:operation wsdl:fault valor /@name para a falha. |
Namespace |
O namespace do elemento Esquema XML para o qual a parte da mensagem de detalhes da falha aponta. |
Action |
A ação SOAP ou WS-Addressing para a falha. |
ProtectionLevel |
Asserções de proteção na política de segurança anexadas à wsdl:message definição para esta falha. |
DetailType |
O tipo de esquema XML do elemento para o qual a parte da mensagem detalhada aponta. |
Name, ContractDescription.Name, OperationDescription.Name, |
Usado para derivar o wsdl:message valor /@name para a mensagem de falha. |