.Net下分布式事务处理的配置
时间:2010-12-02 来源:天空是蓝的
二、解决方案
使用.NET Framework2.0中的事务处理类TransactionScope 类,在程序中需要添加事务处添加事务处理代码。
三、使用方式及源码
1、配置数据库服务器环境:
- 从“开始”菜单中,选择“运行”,输入“dcomcnfg”,回车。
- 展开“组件服务”对话框,选择“组件服务->计算机->我的电脑->Distributed Transaction Coordinator”,右击本地DTC属性,展开如下配置视窗。
配置如下:
2、配置开发服务器 MSDTC 以允许传出网络事务:
1从“开始”菜单中,选择“运行”,输入“dcomcnfg”,回车。
2展开“组件服务”对话框,选择“组件服务->计算机->我的电脑”,右击我的电脑属性,展开如下配置视窗。
- 在“MSDTC”选项卡上,单击“安全配置”,配置如下。
3、代码调用
(1)引入命名空间:System.Transactions。
(2)添加事务处理代码如下(只是一个测试实例)
using (TransactionScope scope = new TransactionScope()){
string strCache = @"Data Source=192.168.128.33;Initial Catalog=MLEC_CACHE;Persist Security Info=True;User ID=sa;Password=admin_123456;connection reset=false;connection lifetime=50;min pool size=1;max pool size=500";
string strFormal = @"Data Source=192.168.128.33;Initial Catalog=MLEC_FORMAL;Persist Security Info=True;User ID=sa;Password=admin_123456;connection reset=false;connection lifetime=50;min pool size=1;max pool size=500";
string strSqlCache = "Update SalesMix Set prdDesVendor='bb' Where id=25";
string strSqlFormal = "Update SalesMix Set prdDesVendor='cc' Where id=27";
SqlConnection connCache = new SqlConnection( strCache );
SqlConnection connFormal = new SqlConnection( strFormal );
SqlCommand commandCache = new SqlCommand( strSqlCache, connCache );
SqlCommand commandFormal = new SqlCommand( strSqlFormal, connFormal );
try
{
connCache.Open();
connFormal.Open();
commandCache.ExecuteScalar();
commandFormal.ExecuteScalar();
connCache.Close();
connFormal.Close();
scope.Complete();
}
catch (Exception)
{
}
finally
{
if (connCache.State != System.Data.ConnectionState.Closed)
{
connCache.Close();
}
if (connFormal.State != System.Data.ConnectionState.Closed)
{
connFormal.Close();
}
}
return 1;
}
四、总结
使用上述方式代码调用方便简单,可以解决.Net程序中简单的的分布式事务处理问题(数据库服务器与应用程序服务器在同一域内,可以直接按照上述方式处理。如果在不同域内,还需要另外配置)。TransactionScope 还有许多可配置的属性,MSDN中有相关内容,在此不一一列举了。
相关阅读 更多 +