跨不同的AppDomains和进程使用System.Transactions(主要是TransactionScope)是真的吗?
相关交易 http://msdn.microsoft.com/en-us/library/system.transactions.dependenttransaction.aspx只能在一个 AppDomain 内工作。
是的,它有效。我们通过 WCF 传输事务,调用进程外事务 COM+ 组件,并手动将事务从 .NET 2.0 asmx Web 服务传递到 WCF 服务。
这并不是说设置不挑剔。我认为大多数问题都与在所有服务器上正确设置 MSDTC 有关。
UPDATE
我们不使用DependentClone
。我们使用以下方法将交易作为字节数组传递GetTransactionFromTransmitterPropagationToken
。与第二个例子非常相似跨 AppDomain 传播事务 http://blogs.microsoft.co.il/blogs/sasha/archive/2010/04/30/propagating-a-transaction-across-appdomains.aspx.
举个例子:
Client:
public void CallOutOfProcessAndPassTransaction
{
Client client = new Client();
client.DoSomethingTransactional(
System.Transactions.TransactionInterop.GetTransmitterPropagationToken(
System.Transactions.Transaction.Current)
);
}
Service:
public void DoSomethingTransactional(byte[] tx)
{
using (TransactionScope ts = new TransactionScope(
TransactionInterop.GetTransactionFromTransmitterPropagationToken(tx)))
{
// Do Something
// vote to commit the transaction if the caller also agrees
ts.Complete();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)