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:servicevalor /@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:portvalor /@name para o ponto de extremidade e o wsdl:bindingvalor /@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 CreateBindingElementsmé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:portTypearquivo . Uma ContractDescription instância descreve todas as operações de um determinado contrato.

Propriedades Mapeamento WSDL
Name O wsdl:portTypevalor /@name para o contrato.
Namespace O targetNamespace para a wsdl:portType definição.
SessionMode O wsdl:portTypevalor /@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:operationarquivo . 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:operationvalor /@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:operationvalor /@msc:isInitiating para a operação. Este atributo é uma extensão WCF para WSDL 1.1.
IsTerminating O wsdl:portType/wsdl:operationvalor /@msc:isTerminating para a operação. Este atributo é uma extensão WCF para WSDL 1.1.
Messages As wsdl:portType//wsdl:inputwsdl:operatione wsdl:portType/wsdl:operation/wsdl:output mensagens para a operação.
Faults As wsdl:portType//wsdl:operationwsdl: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:operationwsdl: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:operationwsdl:binding/wsdl:operation/ valor /@style para a operação.

A Use propriedade para este atributo mapeia para ossoap:operationwsdl: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:operationwsdl:input/wsdl:portType/ ou umawsdl:outputwsdl: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:messagevalor /@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:partwsdl: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:partvalor /@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:portTypewsdl: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:operationwsdl:faultvalor /@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:messagevalor /@name para a mensagem de falha.

Consulte também