.net分布式事务例子

分布式

using System;//引用系统命名空间
using System.Data.OleDb;//引用ADO.net命名空间
using System.Data;//引用数据空间
using System.Runtime.InteropServices;//为了调用GUID
using System.EnterpriseServices;//引用COM+名命空间
using System.Runtime.CompilerServices;//运行时编译服务器
using System.Reflection;//用些全局属性取得强名属性
using System.Data.SqlClient;
[assembly: ApplicationName("COMLibrary")]
//强名文件名和文件属性。用sn.exe生成,用法 sn -k clsStock.snk
//[assembly: AssemblyKeyFileAttribute("clsStock.snk")]
//[assembly: AssemblyKeyName("clsStock.snk")]
[assembly: AssemblyKeyFileAttribute("..\\..\\clsStock.snk")]
[assembly: AssemblyKeyName("..\\..\\clsStock.snk")]
namespace COMLibrary
{
[Transaction(TransactionOption.Required)]
public class DBOperation:ServicedComponent
{

private SqlConnection myConnection;
private SqlCommand myCommand;

/// <summary>
/// connect database
/// </summary>
/// <param name=”connection”>database config infomation
/// formatting : datasource=..;user id=..;password=...
/// </param>
/// <returns></returns>
public void Connect()
{
string connection="workstation id=YANLIXIN;packet size=4096;user id=sa;data source=\"yanlixin\\scgl\";p" +
"ersist security info=True;initial catalog=scgl;password=scgl";
//
myConnection = new SqlConnection( connection );
myConnection.Open();

myCommand = new SqlCommand();
myCommand.Connection = myConnection;

return;
}

/// <summary>
/// Execute one insert statement and insert one record into the table
/// </summary>
/// <param name=”connection”>database config infomation
/// formatting : datasource=..;user id=..;password=...
/// </param>
/// <returns></returns>

public int CommandExcute(string commandstring)
{

int returnValue = 0;

myCommand.CommandText = commandstring;
returnValue = myCommand.ExecuteNonQuery();

return returnValue;

}

/// <summary>
/// Commit the com+ transaction
/// </summary>

public void Commit()
{

ContextUtil.SetComplete();

if(myConnection!=null)
myConnection.Close();

}

/// <summary>
/// Roolback the com+ transaction
/// </summary>

public void Abort()
{

ContextUtil.SetAbort();

if(myConnection!=null)
myConnection.Close();

}

}
}

时间: 2024-12-12 16:56:09

.net分布式事务例子的相关文章

分布式事务

分布式      总体来看,如果所有数据的修改仅依靠单个数据源就能完成,则这个事务就相当简单了.然而,随着商业需求的日益增加,应用程序变得越来越复杂,经常需要访问多个数据库,这些数据库通常分布在不同的地方,这就是分布式事务.分布式事务修改的数据存储在多个或多种类型的数据源中,这些数据源分布在多台机器上,甚至更复杂的情况.    设想有一个事务,要求数据变化发生在两个分离的数据库中,仍然要求所有的ACID特性测试能够满足.基本的事务处理不能满足要求,因为如果其中一个数据库服务器失败,无法确保另外一

ADO.NET 系列 quiz 2 关于分布式事务

ado|分布式 问题:关于分布式事务的例子: 数据库A 和数据库B 上各有一个bank 表 ( 实际情况下A 和 B 分别在不同的机器上,不同类型的数据库(支持dtc))表结构如下BankAccount, Amount A 数据库中的记录:A 1000 B 数据库中的数据B 1000 为了测试方便,没有用 COM+,而是直接在 web service 中测试.代码如下: <WebMethod(TransactionOption:=EnterpriseServices.TransactionOpt

说说分布式事务

分布式事务 分布式事务说的就是一个事务的两个或者多个操作不是在一个数据库中进行的,而是在多个数据库中执行. 这个时候,如何保证事务操作的原子性和一致性? 举个支付的例子,支付进行买东西.事务由两个行为组成,我的购买商品数据表数据+1,支付金额表数据-1. 如果这两个都是在同一库中,没啥问题. try { 事务开始 购买商品数据表数据+1 支付金额表数据-1 事务结束 } catch 事务失败 { 事务回滚 } 但是这两个表是在两个库中,那么就用到二阶段提交了 二阶段提交 二阶段提交(2PC)增加

分布式事务系列(3.2)jotm分布式事务源码分析

1 系列目录 分布式事务系列(开篇)提出疑问和研究过程 分布式事务系列(1.1)Spring事务管理器PlatformTransactionManager源码分析 分布式事务系列(1.2)Spring事务体系 分布式事务系列(2.1)分布式事务模型与接口定义 分布式事务系列(3.1)jotm的分布式案例 分布式事务系列(3.2)jotm分布式事务源码分析 分布式事务系列(4.1)Atomikos的分布式案例 2 了解xapool 我们在前一篇文章中了解到jotm配合xapool共同完成了分布式事

分布式事务系列(1.2)Spring的事务体系

1 系列目录 分布式事务系列(开篇)提出疑问和研究过程 分布式事务系列(1.1)Spring事务管理器PlatformTransactionManager源码分析 分布式事务系列(1.2)Spring事务体系 分布式事务系列(2.1)分布式事务模型与接口定义 分布式事务系列(3.1)jotm的分布式案例 分布式事务系列(3.2)jotm分布式事务源码分析 分布式事务系列(4.1)Atomikos的分布式案例 2 三种事务模型 三种事务模型如下: 本地事务模型 编程式事务模型 声明式事务模型 先来

分布式事务云市场分析

背景 全局事务服务GTS上个月开始在阿里云上公测,之前我们也发表了一篇「破解世界性技术难题!GTS让分布式事务简单高效」的文章,引起了业界广泛关注,接受了大量的咨询,故希望通过本文让大家对GTS有更深入的理解. GTS在目前在阿里内外部已经有较大规模的应用,有100多个用户,其中专有云大用户就有10多个,预计今年将有更大规模的市场需求爆发. 用户诉求是什么 分布式事务解决的用户最本质诉求是什么?数据一致. 大中企业有一个共同的诉求是数据一致,几乎覆盖到各个行业. 比如说零售行业,库存与出货的数据

分布式事务系列(2.1)分布式事务的概念

1 系列目录 分布式事务系列(开篇)提出疑问和研究过程 分布式事务系列(1.1)Spring事务管理器PlatformTransactionManager源码分析 分布式事务系列(1.2)Spring事务体系 分布式事务系列(2.1)分布式事务模型与接口定义 分布式事务系列(3.1)jotm的分布式案例 分布式事务系列(3.2)jotm分布式事务源码分析 分布式事务系列(4.1)Atomikos的分布式案例 2 X/Open DTP DTP全称是Distributed Transaction P

分布式事务(两阶段提交)模型详解

这一几天一直在回顾事务相关的知识,也准备把以前了解皮毛的知识进行一些深入总结,虽然这一些知识并没有用到,但是了解其实现原理还是很有必要的,因为知道了原理,你也能把它实现出来. 在上一节事务的编程模型里面,主要说明了三种编程模型,一般情况下,我们都接触的是单一资源的事务,也就是单独对一个数据库进行操作.如果需要跨多个资源保证事务一致性 举个例子:在ATM机取钱的时候,需要对用户的账户进行扣款处理,然后发送一条消息给消息服务器(假设消息服务器是用JMS实现的),由消息服务器异步通过短信通知用户.如果

大白话聊聊分布式事务

大白话聊聊分布式事务 什么是分布式事务 简单的来说就是,一个大的操作由两个或者更多的小的操作共同完成.而这些小的操作又分布在不同的网络主机上.这些操作,要么全部成功执行,要么全部不执行. 拿转账的例子来说下什么是分布式事务.张三和李四在不同的城市,存储他们账户信息的服务器也在不同的网络主机上.张三有30元钱,李四有30元钱.张三给李四转账5元就是一个事务.完成这个事务,需要两个操作.首先得从张三账户上扣5元,然后再给李四账户上加5元.事务执行完毕后,必须是两个操作都执行成功,要么都失败. 事务的