2012-01-19 83 views

回答

1

製作服務事務感知意味着,如果通過了一項交易,將在它

誰消耗的服務,無論是爭取一個客戶端應用程序或其他服務,必須創建一個交易(或已經在事務中運行流向他們)以便服務徵用 - 因此他們必須在TransactionScope中調用服務(明確地或隱式地通過使事務流向它們)。

如果該操作被標記爲TransactionFlow(TransactionFlowOption.Allowed)那麼消費者不必有交易,但隨後如果該操作被標記爲TransactionFlow的服務將不會在流動的TRANSATION

執行( TransactionFlowOption.Mandatory),那麼客戶端必須流動一個事務,並且假設其他位對齊(OperationBehavior創建自動登錄等),那麼操作將在相同的分佈式事務中運行

2

這取決於您的使用場景。如果您的服務功能執行應該在一個事務中進行分組多次調用,你應該在你的服務功能

使用Transaction使用Transaction在客戶端代碼是有用的,當你的客戶端調用應該在一個共同捆綁多種服務功能交易。

因此,例如:

public void MyServiceFunction1() 
{ 
    using (TransactionScope transaction = new TransactionScope()) 
    { 
     // execute some logic inside this service function that should be in a transaction 
    } 
} 

public void MyServiceFunction2() 
{ 
    using (TransactionScope transaction = new TransactionScope()) 
    { 
     // execute some logic inside this service function that should be in a transaction 
    } 
} 

public void MyClientFunction() 
{ 
    using (TransactionScope transaction = new TransactionScope()) 
    { 
     // Bundle both service calls in one transaction 
     MyService service = new MyService(); 
     service.MyServiceFunction1(); 
     service.MyServiceFunction2(); 
    } 
} 

注意但是,你需要正確configure your WCF bindings以確保交易是從客戶端傳遞到服務器。然後它將自動在分佈式事務中進行推廣。

相關問題