2011-08-19 52 views
0

是否有任何支持排隊WCF服務請求並在事務(服務器端)提交它們的現成支持?例如。WCF隊列和事務功能

Begin 
Insert 
Insert 
Delete 
Edit 
Commit 

的comsumer將通過調用開始,調用多個服務請求,並通過調用commit提交啓動隊列/交易。

請注意,這應該只綁定到應用程序層而不是數據庫。

在此先感謝!

回答

1

這是可能的。

您應該使用WCF的會話和事務流功能。

使用會話,您可以通過標記哪個操作應該啓動會話以及哪個操作應該結束會話,來控制操作必須在會話中被調用的順序。

交易流程將使您在客戶端創建的交易保持在服務器端並維護它。

有關更多詳細信息,請參閱Enabling Transaction FlowWCF Transaction PropagationSessions, Instancing and Concurrency

但是,我不知道如何解開數據層的應用程序事務。保持無法控制數據庫事務的應用程序事務是沒有意義的。

+0

同意,您確實希望將交易一直流到數據庫,否則;您需要編寫代碼來手動實現「回滾」邏輯。大多數主要商業數據庫都支持分佈式事務處理,因此不應該成爲限制。當然,這些交易會由於數據庫鎖定而妨礙應用程序的可擴展性,因此總是存在折衷。 –

+0

我很希望客戶端不必創建會話客戶端,只需調用Begin方法服務器端。 – jaspernygaard

+0

電話和5分鐘。後來......我很希望客戶端不必創建一個會話客戶端,只需調用Begin方法服務器端。關於應用程序與數據庫事務,我擔心的是使用ODP.NET與Oracle數據庫進行通信。我當然會使用事務來提交服務調用,但是與WCF事務分離。我不確定ODP.NET如何掛入WCF。從我的理解我的建議方案是不可行的。正確? – jaspernygaard