Konfiguracja transakcji modelu ServiceModel
Program Windows Communication Foundation (WCF) udostępnia trzy atrybuty służące do konfigurowania transakcji dla usługi: transactionFlow
, transactionProtocol
i transactionTimeout
.
Konfigurowanie przepływu transakcji
Większość wstępnie zdefiniowanych powiązań WCF zawiera transactionFlow
atrybuty i transactionProtocol
, dzięki czemu można skonfigurować powiązanie tak, aby akceptowały przychodzące transakcje dla określonego punktu końcowego przy użyciu określonego protokołu przepływu transakcji. Ponadto możesz użyć elementu i jego transactionProtocol
atrybutu do utworzenia transactionFlow
własnego powiązania niestandardowego. Aby uzyskać więcej informacji na temat ustawiania elementów konfiguracji, zobacz <binding and WCF Configuration Schema (Schemat konfiguracji programu> WCF).
Atrybut transactionFlow
określa, czy przepływ transakcji jest włączony dla punktów końcowych usługi, które używają powiązania.
Konfigurowanie transakcjiProtocol
Atrybut transactionProtocol
określa protokół transakcji do użycia z punktami końcowymi usługi, które używają powiązania.
Poniżej przedstawiono przykład sekcji konfiguracji, która konfiguruje określone powiązanie w celu obsługi przepływu transakcji, a także użycie protokołu 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>
Konfigurowanie transakcjiTimeout
Atrybut dla usługi WCF można skonfigurować transactionTimeout
w behavior
elemrybucie pliku konfiguracji. Poniższy kod pokazuje, jak to zrobić.
<configuration>
<system.serviceModel>
<behaviors>
<behavior name="NewBehavior" transactionTimeout="00:01:00" /> <!-- 1 minute timeout -->
</behaviors>
</system.serviceModel>
</configuration>
Atrybut transactionTimeout
określa okres, w którym musi zostać ukończona nowa transakcja utworzona w usłudze. Jest on używany jako TransactionScope limit czasu dla każdej operacji, która ustanawia nową transakcję, a jeśli OperationBehaviorAttribute jest stosowana, właściwość jest ustawiona TransactionScopeRequired na true
wartość .
Limit czasu określa czas od utworzenia transakcji do zakończenia fazy 1 w protokole zatwierdzania dwufazowego.
Jeśli ten atrybut jest ustawiony w service
sekcji konfiguracji, należy zastosować co najmniej jedną metodę odpowiedniej usługi z parametrem OperationBehaviorAttribute, w którym TransactionScopeRequired właściwość jest ustawiona na true
.
Należy pamiętać, że użyta wartość limitu czasu jest mniejszą wartością między tym transactionTimeout
ustawieniem konfiguracji a dowolną TransactionTimeout właściwością.