關於WCF服務中的事務,我應該在使用服務的客戶端應用程序中還是在服務代碼中使用TransactionScope對象?請解釋原因。WCF服務或客戶端代理中的TransactionScope?
0
A
回答
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以確保交易是從客戶端傳遞到服務器。然後它將自動在分佈式事務中進行推廣。
相關問題
- 1. 爲Java中的WCF Web服務生成代理客戶端
- 2. WCF wrap代理客戶端
- 3. 在WCF Web服務內部處理WCF Windows服務客戶端
- 4. WCF服務客戶端
- 5. WCF:與客戶端的代理包裝共享服務合同
- 6. 識別WCF服務中的客戶端
- 7. 客戶端的安全代理服務?
- 8. 將WCF服務公開給asmx客戶端和WCF客戶端
- 9. WCF的服務器/客戶端conected客戶服務器
- 10. 創建WCF Json/RESTful服務客戶端代理
- 11. 使用客戶端代理對象從jQuery調用WCF服務
- 12. WCF客戶端+ Windows服務+ ISA =(407)需要代理驗證
- 13. 尋找WCF客戶端包裝(代理到其他服務器)
- 14. 檢查WCF服務而不創建客戶端代理
- 15. 從代理客戶端將參數傳遞給WCF服務Ctor
- 16. WCF客戶端掛起服務中斷
- 17. java web服務代理客戶端
- 18. Windows服務代理客戶端訪問IIS 7託管的WCF服務器
- 19. 用於ASP .NET客戶端的WCF客戶端代理
- 20. 客戶端上的代理WCF嚮導
- 21. 禁用WCF客戶端的Web代理?
- 22. C# - 客戶端的WCF REST服務JSON
- 23. 用於Java客戶端的WCF服務
- 24. .Net WCF服務的Java客戶端
- 25. gSOAP客戶端的WCF服務
- 26. 在Azure上的ASP.NET中緩存WCF ChannelFactory或客戶端代理?
- 27. 靜態WCF服務客戶端對象或標準WCF服務客戶端對象?
- 28. 如何在WCF客戶端服務代理上設置HTTP代理(WebProxy)?
- 29. WCF:服務中或客戶端的異步方法?
- 30. asp.net驗證客戶端或客戶端或服務器端