[ServiceContract]
public interface Iservice2
{
[OperationContract]
[TransactionFlow(TransactionFlowOption.Allowed)]
void UpdateService2();
}
[ServiceContract]
public interface Iservice1
{
[OperationContract]
[TransactionFlow(TransactionFlowOption.Allowed)]
void upload();
}
客戶端代碼的2期或3階段提交的作品在WCF
using (var scope = new TransactionScope())
{
IserviceClient client = new Iservice1Client();
client.upload();
Iservice2 test = new Iservice2Client();
test.UpdateService2();
MessageBox.Show("All is well!!!");
scope.Complete();
}
內部細節我想明白了2期或3期詳細了WCF提交。
我從理論上理解2階段提交的體系結構。
理解
- 服務1和服務2在不同的網址
- 託管上面做了分佈式事務
問題
當WCF配置爲PerCall,分佈式事務如何在WCF內部發生 - 確實如此它會暫時將狀態保存到會話中,以便在實際提交被調用時它可以提交?
那麼從客戶那裏直到交易完成的狀態會一直保持嗎? - 它是否保留數據庫事務的參考?
當你得到併發請求時,WCF保證2請求將有2個不同的事務並且不會將它們聚集在一起 - 如果是的話它怎麼知道它是2個不同的請求?
這個問題可能是基本的,但我期待了解上述概念,爲我的項目設計解決方案。
我找到了分佈式事務如何工作的答案http://stackoverflow.com/a/494593/799329 – user799329 2015-04-07 11:20:19