Desenvolvimento de serviço de fluxo de trabalho de primeiro contrato
A partir do .NET Framework 4.5, o WF (Windows Workflow Foundation) apresenta melhor integração entre serviços Web e fluxos de trabalho na forma de desenvolvimento de fluxo de trabalho de primeiro contrato. A ferramenta de desenvolvimento de fluxo de trabalho de primeiro contrato permite que você crie o contrato no código primeiro. A ferramenta em seguida gera automaticamente um modelo de atividade na caixa de ferramentas para as operações no contrato. Este tópico fornece uma visão geral de como as atividades e as propriedades em um mapa do serviço de fluxo de trabalho para os atributos de um contrato de serviço. Para obter um exemplo passo a passo da criação de um serviço de fluxo de trabalho de primeiro contrato, consulte Como criar um serviço de fluxo de trabalho que consome um contrato de serviço existente.
Neste tópico
Atributos de contrato de serviço de mapeamento para atributos de fluxo de trabalho
As tabelas nas seções a seguir especificam os atributos de WCF diferentes e as propriedades e como eles são mapeados para as atividades e as propriedades de mensagem em um fluxo de trabalho de primeiro contrato.
Atributos de contrato de serviço
Nome da propriedade | Com suporte | Descrição | Validação de WF |
---|---|---|---|
CallbackContract | No | Obtém ou define o tipo de contrato de retorno de chamada quando o contrato é do tipo duplex. | (N/D) |
ConfigurationName | No | Obtém ou define o nome usado para localizar o serviço em um arquivo de configuração do aplicativo. | (N/D) |
HasProtectionLevel | Sim | Obtém um valor que indica se o membro tem um nível de proteção atribuído. | Receive.ProtectionLevel não pode ser nulo. |
Nome | Sim | Obtém ou define o nome do elemento <portType> na linguagem WSDL (Web Services Description Language). | Receive.ServiceContractName.LocalName deve corresponder. |
Namespace | Sim | Obtém ou define o namespace do elemento <portType> na linguagem WSDL (Web Services Description Language). | Receive.ServiceContractName.NameSpace deve corresponder |
ProtectionLevel | Sim | Especifica se a associação para o contrato deve oferecer suporte ao valor da propriedade ProtectionLevel. | Receive.ProtectionLevel deve corresponder. |
SessionMode | No | Obtém ou define se as sessões são permitidas, não são permitidas ou são necessárias. | (N/D) |
TypeId | No | Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Atributo. (Herdada de atributo.) | (N/D) |
Inserir o corpo da subseção aqui.
Atributos de contrato de operação
Nome da propriedade | Com suporte | Descrição | Validação de WF |
---|---|---|---|
Ação | Sim | Obtém ou define a ação WS-Addressing da mensagem de solicitação. | Receive.Action deve corresponder. |
AsyncPattern | No | Indica que uma operação é implementada de forma assíncrona usando um par de métodos Begin<methodName> e End<methodName> em um contrato de serviço. | (N/D) |
HasProtectionLevel | Sim | Obtém um valor que indica se as mensagens para essa operação devem ser criptografadas, assinadas ou ambos. | Receive.ProtectionLevel não pode ser nulo. |
IsInitiating | No | Obtém ou define um valor que indica se o método implementa uma operação que pode iniciar uma sessão no servidor (se essa sessão existir). | (N/D) |
IsOneWay | Sim | Obtém ou define um valor que indica se uma operação retorna uma mensagem de resposta. | (Nenhum SendReply para este Receive OR nenhum ReceiveReply para este Send). |
IsTerminating | No | Obtém ou define um valor que indica se a operação de serviço faz o servidor fechar a sessão depois que a mensagem de resposta, se houver, for enviada. | (N/D) |
Nome | Sim | Obtém ou define o nome da operação. | Receive.OperationName deve corresponder. |
ProtectionLevel | Sim | Obtém ou define um valor que especifica se as mensagens de uma operação devem ser criptografadas, assinadas ou ambos. | Receive.ProtectionLevel deve corresponder. |
ReplyAction | Sim | Obtém ou define o valor da ação de SOAP para a mensagem de resposta da operação. | SendReply.Action deve corresponder. |
TypeId | No | Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Atributo. (Herdada de atributo.) | (N/D) |
Atributos de contrato de mensagem
Nome da propriedade | Com suporte | Descrição | Validação de WF |
---|---|---|---|
HasProtectionLevel | Sim | Obtém um valor que indica se a mensagem tem um nível de proteção. | Sem validação (Receive.Content e SendReply.Content devem corresponder ao tipo do contrato de mensagem). |
IsWrapped | Sim | Obtém ou define um valor que especifica se o corpo da mensagem tem um elemento wrapper. | Sem validação (Receive.Content e Sendreply.Content devem corresponder ao tipo do contrato de mensagem). |
ProtectionLevel | No | Obtém ou define um valor que especifica se a mensagem deve ser criptografada, assinada ou ambos. | (N/D) |
TypeId | Sim | Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Atributo. (Herdada de atributo.) | Sem validação (Receive.Content e SendReply.Content devem corresponder ao tipo do contrato de mensagem). |
WrapperName | Sim | Obtém ou define o nome do elemento wrapper do corpo da mensagem. | Sem validação (Receive.Content e SendReply.Content devem corresponder ao tipo do contrato de mensagem). |
WrapperNamespace | No | Obtém ou define o namespace do elemento wrapper do corpo da mensagem. | (N/D) |
Atributos de contrato de dados
Nome da propriedade | Com suporte | Descrição | Validação de WF |
---|---|---|---|
IsReference | No | Obtém ou define um valor que indica se deve preservar os dados de referência do objeto. | (N/D) |
Nome | Sim | Obtém ou define o nome do contrato de dados para o tipo. | Sem validação (Receive.Content e SendReply.Content devem corresponder ao tipo do contrato de mensagem). |
Namespace | Sim | Obtém ou define o namespace para o contrato de dados para o tipo. | Sem validação (Receive.Content e SendReply.Content devem corresponder ao tipo do contrato de mensagem). |
TypeId | No | Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Atributo. (Herdada de atributo.) | (N/D) |
Atributos de contrato de falha
Nome da propriedade | Com suporte | Descrição | Validação de WF |
---|---|---|---|
Ação | Sim | Obtém ou define a ação da mensagem de falha de SOAP que é especificada como parte do contrato de operação. | SendReply.Action deve corresponder. |
DetailType | Sim | Obtém o tipo de um objeto serializável que contém informações de erro. | SendReply.Content deve corresponder ao tipo |
HasProtectionLevel | No | Obtém um valor que indica se a mensagem de falha de SOAP tem um nível de proteção atribuído. | (N/D) |
Name | No | Obtém ou define o nome da mensagem de falha na linguagem WSDL. | (N/D) |
Namespace | No | Obtém ou define o namespace da falha de SOAP. | (N/D) |
ProtectionLevel | No | Especifica o nível de proteção que a falha de SOAP exige da associação. | (N/D) |
TypeId | No | Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Atributo. (Herdada de atributo.) | (N/D) |
Informações adicionais de suporte e implementação
Recursos sem suporte do contrato de serviço
O uso de tarefas de TPL (Task Parallel Library) nos contratos não tem suporte.
A herança em contratos de serviço não tem suporte.
Geração de atividades configuradas de mensagem
Dois métodos estáticos públicos são adicionados às atividades Receive e SendReply para dar suporte à geração de atividades de mensagens pré-configuradas ao usar serviços de fluxo de trabalho de primeiro contrato.
A atividade gerada por esses métodos deve passar a validação do contrato e, consequentemente, esses métodos são usados internamente como parte da lógica de validação para Receive e SendReply. OperationName, ServiceContractName, Action, SerializerOption, ProtectionLevel e KnownTypes são todos pré-configurados para corresponder ao contrato importado. Na página de propriedades de conteúdo para as atividades no designer de fluxo de trabalho, as seções Mensagem ou Parâmetros também são pré-configuradas para corresponder ao contrato.
Os contratos de falha do WCF também são manipulados com o retorno de um conjunto separado de atividades SendReply configuradas para cada uma das falhas que aparecem na Faults FaultDescriptionCollection.
Para outras partes de OperationDescription que não têm suporte pelos serviços do WF atualmente (por exemplo, comportamentos WebGet/WebInvoke ou comportamentos de operação personalizados), a API ignorará esses valores como parte da geração e da configuração. Nenhuma exceção será gerada.