[转].net试用分布式数据库事务com+

 
如果我们想实现分布式数据库事务操作,那么在.NET Framework中可以依靠MTS/COM+服务来支持自动事务操作。COM+使用DTC(Microsoft Distribution Transaction Coordinator)作为事务管理器和事务协调器在分布式环境中运行事务,这样就可以使.NET来跨越多个资源进行操作了。具体做法如下:
首先新建一个“类库”项目,然后在这个项目中,我们自己的类继承ServicedComponent这个类,并将它的属性标记为“Transaction”(事务),代码如下:
[Transaction (TransactionOption.Required)]
public class MyDTC : ServicedComponent
然后我们就可以使用Enterprise Library提供的ContextUtil中的方法来实现多数据库操作的回滚。代码如下:
try
{
myconn1.Open();
Console.WriteLine("Connection1 is successful!");
mycmd1.CommandText = "spInsertMyInfo";
mycmd1.Parameters.Add("@id", 6);
mycmd1.Parameters.Add("@name", "Remy");
mycmd1.ExecuteNonQuery();

myconn2.Open();
Console.WriteLine("Connection2 is successful!");
mycmd2.CommandText = "spInsertValue";
mycmd2.Parameters.Add("@num", 11);
mycmd2.Parameters.Add("@systemtime", "2005-5-31");
mycmd2.Parameters.Add("@numtest", 19);
mycmd2.ExecuteNonQuery();

ContextUtil.SetComplete();
}
catch (Exception)
{
ContextUtil.SetAbort();
}
finally
{
myconn1.Dispose();
myconn2.Dispose();
}
最后要注意的是我们必须要对Assembly设置一些必须的属性以确保它能够被正确的注册为COM+服务,代码如下:
using System;
using System.Data;
using System.Data.SqlClient;
using System.EnterpriseServices;
using System.Reflection;
using System.Runtime.CompilerServices;

[assembly: ApplicationName("MyDTC")]
[assembly: AssemblyKeyFileAttribute("C:\\mydtc.snk")]
[assembly: ApplicationActivation(ActivationOption.Server)]
然后我们利用regsvcs xxx.dll将我们的组建注册为COM+服务,最后我们只要自己编写一个Client端来调用这个COM+服务就可以实现多数据库事务操作了。
以下是我查找到的一些相关资料:
“Serviced Component Overview”: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconservicedcomponentoverview.asp
“Writing Serviced Components”: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconwritingservicedcomponents.asp

转载于:https://www.cnblogs.com/wxwx110/archive/2009/02/26/1398724.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值