Konfigurace transakcí ServiceModel
Windows Communication Foundation (WCF) poskytuje tři atributy pro konfiguraci transakcí pro službu: transactionFlow
, transactionProtocol
a transactionTimeout
.
Konfigurace toku transakcí
Většina předdefinovaných vazeb WCF obsahuje atributy transactionFlow
a transactionProtocol
atributy, abyste mohli nakonfigurovat vazbu tak, aby přijímala příchozí transakce pro konkrétní koncový bod pomocí konkrétního protokolu toku transakcí. Kromě toho můžete použít transactionFlow
element a jeho transactionProtocol
atribut k vytvoření vlastní vazby. Další informace o nastavení elementů konfigurace naleznete v tématu <vazby> a schéma konfigurace WCF.
Atribut transactionFlow
určuje, zda je tok transakce povolen pro koncové body služby, které používají vazbu.
Konfigurace transactionProtocol
Atribut transactionProtocol
určuje transakční protokol, který se má použít s koncovými body služby, které používají vazbu.
Následuje příklad oddílu konfigurace, který konfiguruje zadanou vazbu pro podporu toku transakcí a také použití protokolu 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>
Konfigurace transactionTimeoutu
Atribut pro službu WCF můžete nakonfigurovat transactionTimeout
v behavior
elementu konfiguračního souboru. Následující kód ukazuje, jak to provést.
<configuration>
<system.serviceModel>
<behaviors>
<behavior name="NewBehavior" transactionTimeout="00:01:00" /> <!-- 1 minute timeout -->
</behaviors>
</system.serviceModel>
</configuration>
Atribut transactionTimeout
určuje časové období, během kterého se musí dokončit nová transakce vytvořená ve službě. Používá se jako TransactionScope časový limit pro jakoukoli operaci, která vytváří novou transakci, a pokud OperationBehaviorAttribute je použita, TransactionScopeRequired vlastnost je nastavena na true
.
Časový limit určuje dobu od vytvoření transakce do dokončení fáze 1 v protokolu dvoufázového potvrzení.
Pokud je tento atribut nastaven v rámci service
oddílu konfigurace, měli byste použít alespoň jednu metodu odpovídající služby s OperationBehaviorAttribute, ve které TransactionScopeRequired je vlastnost nastavena .true
Všimněte si, že použitá hodnota časového limitu je menší hodnotou mezi tímto transactionTimeout
nastavením konfigurace a libovolnou TransactionTimeout vlastností.