Udostępnij za pośrednictwem


Konfiguracja transakcji modelu ServiceModel

Program Windows Communication Foundation (WCF) udostępnia trzy atrybuty służące do konfigurowania transakcji dla usługi: transactionFlow, transactionProtocoli 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 truewartość .

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ą.

Zobacz też