[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