Partilhar via


Configuração de transação ServiceModel

O Windows Communication Foundation (WCF) fornece três atributos para configurar transações para um serviço: transactionFlow, transactionProtocole transactionTimeout.

Configurando o transactionFlow

A maioria das associações predefinidas fornecidas pelo WCF contém os transactionFlow atributos e transactionProtocol para que você possa configurar a associação para aceitar transações de entrada para um ponto de extremidade específico usando um protocolo de fluxo de transação específico. Além disso, você pode usar o transactionFlow elemento e seu transactionProtocol atributo para criar sua própria associação personalizada. Para obter mais informações sobre como definir os elementos de configuração, consulte <Vinculação> e esquema de configuração do WCF.

O transactionFlow atributo especifica se o fluxo de transações está habilitado para pontos de extremidade de serviço que usam a associação.

Configurando o transactionProtocol

O transactionProtocol atributo especifica o protocolo de transação a ser usado com pontos de extremidade de serviço que usam a associação.

A seguir está um exemplo de uma seção de configuração que configura a associação especificada para dar suporte ao fluxo de transações, bem como um uso do protocolo WS-AtomicTransaction.

<netNamedPipeBinding>  
   <binding name="test"  
      closeTimeout="00:00:10"  
      openTimeout="00:00:20"
      receiveTimeout="00:00:30"  
      sendTimeout="00:00:40"  
      transactionFlow="true"  
      transactionProtocol="WSAtomicTransactionOctober2004"  
      hostNameComparisonMode="WeakWildcard"  
      maxBufferSize="1001"  
      maxConnections="123"
      maxReceivedMessageSize="1000">  
   </binding>  
</netNamedPipeBinding>  

Configurando transactionTimeout

Você pode configurar o transactionTimeout atributo para seu serviço WCF no behavior elemento do arquivo de configuração. O código a seguir demonstra como fazer isso.

<configuration>  
   <system.serviceModel>  
      <behaviors>  
         <behavior name="NewBehavior" transactionTimeout="00:01:00" /> <!-- 1 minute timeout -->  
      </behaviors>  
   </system.serviceModel>  
</configuration>  

O transactionTimeout atributo especifica o período de tempo dentro do qual uma nova transação criada no serviço deve ser concluída. Ele é usado como o TransactionScope tempo limite para qualquer operação que estabeleça uma nova transação e, se OperationBehaviorAttribute for aplicada, a TransactionScopeRequired propriedade será definida como true.

O tempo limite especifica a duração do tempo desde a criação da transação até a conclusão da fase 1 no protocolo de confirmação de duas fases.

Se esse atributo for definido dentro de uma service seção de configuração, você deverá aplicar pelo menos um método do serviço correspondente com OperationBehaviorAttribute, no qual a TransactionScopeRequired propriedade está definida como true.

Observe que o valor de tempo limite usado é o menor valor entre essa transactionTimeout configuração e qualquer TransactionTimeout propriedade.

Consulte também