【发布时间】:2015-06-05 16:26:03
【问题描述】:
[ServiceContract]
public interface Iservice2
{
[OperationContract]
[TransactionFlow(TransactionFlowOption.Allowed)]
void UpdateService2();
}
[ServiceContract]
public interface Iservice1
{
[OperationContract]
[TransactionFlow(TransactionFlowOption.Allowed)]
void upload();
}
客户代码
using (var scope = new TransactionScope())
{
IserviceClient client = new Iservice1Client();
client.upload();
Iservice2 test = new Iservice2Client();
test.UpdateService2();
MessageBox.Show("All is well!!!");
scope.Complete();
}
我想详细了解 WCF 上的 2 阶段或 3 阶段提交。
我从理论上理解 2 阶段提交的架构。
了解
- service1 和 service2 托管在不同的 URL 中
- 上面做了一个分布式事务
问题
当 WCF 配置为 PerCall 时,分布式事务如何在 WCF 内部发生 - 它是否会暂时将状态保存到会话,以便在调用实际提交时可以提交?
那么在事务完成之前,状态会话是否从客户端保持活动状态? - 是否保留数据库事务的引用?
当您收到并发请求时,WCF 是否保证 2 个请求将具有 2 个不同的事务并且不会将它们组合在一起 - 如果是这样,它如何知道它是 2 个不同的请求?
这个问题可能是初级的,但是我希望了解上述概念来为我的项目设计解决方案。
【问题讨论】:
-
我找到了关于分布式事务如何工作的答案stackoverflow.com/a/494593/799329
标签: .net wcf transactions