Configuration des transactions ServiceModel
Windows Communication Foundation (WCF) fournit trois attributs pour la configuration de transactions pour un service : transactionFlow
, transactionProtocol
et transactionTimeout
.
Configuration de transactionFlow
La plupart des liaisons prédéfinies fournies par WCF contiennent les attributs transactionFlow
et transactionProtocol
afin de vous permettre de configurer la liaison pour qu’elle accepte des transactions entrantes pour un point de terminaison spécifique à l’aide d’un protocole de flux de transaction spécifique. Par ailleurs, l’élément transactionFlow
et son attribut transactionProtocol
vous permettent de générer votre propre liaison personnalisée. Pour plus d’informations sur la définition des éléments de configuration, consultez <Liaison> et Schéma de configuration WCF.
L'attribut transactionFlow
spécifie si le flux de transaction est activé pour les points de terminaison de service qui utilisent la liaison.
Configuration de transactionProtocol
L'attribut transactionProtocol
spécifie le protocole de transaction à utiliser avec les points de terminaison de service qui utilisent la liaison.
L'exemple suivant présente une section de configuration qui configure la liaison spécifiée pour prendre en charge le flux de transaction, ainsi qu'une utilisation du protocole 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>
Configuration de transactionTimeout
Vous pouvez configurer l’attribut transactionTimeout
pour votre service WCF dans l’élément behavior
du fichier de configuration. Le code suivant montre comment procéder.
<configuration>
<system.serviceModel>
<behaviors>
<behavior name="NewBehavior" transactionTimeout="00:01:00" /> <!-- 1 minute timeout -->
</behaviors>
</system.serviceModel>
</configuration>
L’attribut transactionTimeout
spécifie le délai dans lequel une nouvelle transaction créée au niveau du service doit se terminer. Il est utilisé comme délai d’attente TransactionScope pour toute opération qui établit une nouvelle transaction ; si OperationBehaviorAttribute est appliqué, la propriété TransactionScopeRequired a la valeur true
.
Le délai d'attente spécifie la durée entre la création de la transaction et l'exécution de la phase 1 du protocole de validation en deux phases.
Si cet attribut est défini dans une section de configuration de service
, vous devez appliquer au moins une méthode du service correspondant avec OperationBehaviorAttribute, dans lequel la propriété TransactionScopeRequired a la valeur true
.
Notez que la valeur du délai d'attente utilisée est toujours la plus petite entre le paramètre de configuration transactionTimeout
et la propriété TransactionTimeout.