ServiceModel-tranzakció konfigurálása
A Windows Communication Foundation (WCF) három attribútumot biztosít egy szolgáltatás tranzakcióinak konfigurálásához: transactionFlow
, transactionProtocol
és transactionTimeout
.
A transactionFlow konfigurálása
A WCF által biztosított előre definiált kötések többsége tartalmazza azokat transactionFlow
és transactionProtocol
az attribútumokat, így konfigurálhatja a kötést úgy, hogy egy adott végpont bejövő tranzakcióit fogadja el egy adott tranzakciós folyamatprotokoll használatával. Emellett az elemet és annak transactionFlow
attribútumát transactionProtocol
is használhatja saját egyéni kötés létrehozásához. A konfigurációs elemek beállításáról további információt a kötés> és a WCF konfigurációs sémája című témakörben talál<.
Az transactionFlow
attribútum azt határozza meg, hogy a tranzakciós folyamat engedélyezve van-e a kötést használó szolgáltatásvégpontok esetében.
A transactionProtocol konfigurálása
Az transactionProtocol
attribútum megadja a kötést használó szolgáltatásvégpontokhoz használandó tranzakcióprotokollt.
Az alábbiakban egy olyan konfigurációs szakasz látható, amely konfigurálja a megadott kötést a tranzakciós folyamat támogatásához, valamint a WS-AtomicTransaction protokoll használatát.
<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>
A transactionTimeout konfigurálása
A WCF-szolgáltatás attribútumát a behavior
konfigurációs fájl elemében konfigurálhatjatransactionTimeout
. Az alábbi kód bemutatja, hogyan teheti ezt meg.
<configuration>
<system.serviceModel>
<behaviors>
<behavior name="NewBehavior" transactionTimeout="00:01:00" /> <!-- 1 minute timeout -->
</behaviors>
</system.serviceModel>
</configuration>
Az transactionTimeout
attribútum azt az időszakot határozza meg, amelyen belül a szolgáltatásban létrehozott új tranzakciónak befejeződnie kell. A rendszer időtúllépésként használja az TransactionScope új tranzakciót létesítő műveleteknél, és ha OperationBehaviorAttribute alkalmazva van, a tulajdonság értéke true
.TransactionScopeRequired
Az időtúllépés a tranzakció létrehozásának és a kétfázisú véglegesítési protokoll 1. fázisának befejezéséig eltelt időt adja meg.
Ha ez az attribútum egy service
konfigurációs szakaszon belül van beállítva, akkor a megfelelő szolgáltatásnak OperationBehaviorAttributelegalább egy metódusát kell alkalmaznia, amelyben a TransactionScopeRequired tulajdonság be van állítva true
.
Vegye figyelembe, hogy a használt időtúllépési érték a konfigurációs beállítás és bármely TransactionTimeout tulajdonság közötti transactionTimeout
kisebb érték.