다음을 통해 공유


ServiceModel 트랜잭션 구성

WCF(Windows Communication Foundation)는 서비스에 대한 트랜잭션을 구성하기 위한 세 가지 특성인 transactionFlow, transactionProtocoltransactionTimeout을 제공합니다.

transactionFlow 구성

WCF에서 제공하는 대부분의 미리 정의된 바인딩에는 transactionFlowtransactionProtocol 특성이 포함되어 있으므로, 특정 트랜잭션 흐름 프로토콜을 사용하여 특정 엔드포인트에 대해 들어오는 트랜잭션을 허용하도록 바인딩을 구성할 수 있습니다. 또한 transactionFlow 요소와 해당 transactionProtocol 특성을 사용하여 고유의 사용자 지정 바인딩을 만들 수 있습니다. 구성 요소 설정에 대한 자세한 내용은 <바인딩>WCF 구성 스키마를 참조하세요.

ph x="1" /> 특성은 바인딩을 사용하는 서비스 엔드포인트에 대해 트랜잭션 흐름을 사용할지 여부를 지정합니다.

transactionProtocol 구성

ph x="1" /> 특성은 바인딩을 사용하는 서비스 엔드포인트에서 사용할 트랜잭션 프로토콜을 지정합니다.

다음은 지정된 바인딩에서 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>  

transactionTimeout 구성

구성 파일의 behavior 요소에서 WCF 서비스에 대한 transactionTimeout 특성을 구성할 수 있습니다. 다음 코드에서는 이 작업을 수행하는 방법에 대해 설명합니다.

<configuration>  
   <system.serviceModel>  
      <behaviors>  
         <behavior name="NewBehavior" transactionTimeout="00:01:00" /> <!-- 1 minute timeout -->  
      </behaviors>  
   </system.serviceModel>  
</configuration>  

transactionTimeout 특성은 서비스에서 만들어진 새 트랜잭션이 완료되어야 하는 기간을 지정합니다. 새 트랜잭션을 설정하는 작업에 대한 TransactionScope 시간 제한으로 사용됩니다. OperationBehaviorAttribute가 적용되면 TransactionScopeRequired 속성이 true로 설정됩니다.

시간 제한은 트랜잭션을 만든 시점으로부터 2단계 커밋 프로토콜의 1단계를 완료할 때까지의 기간을 지정합니다.

service 구성 섹션에 이 특성이 설정되어 있으면 OperationBehaviorAttribute를 사용하여 해당 서비스에 대한 하나 이상의 메서드를 적용해야 합니다. 여기서 TransactionScopeRequired 속성은 true로 설정됩니다.

transactionTimeout 구성 설정과 TransactionTimeout 속성 사이에서 더 작은 값이 시간 제한 값으로 사용됩니다.

참고 항목