




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.NET分布式事务处理的应用摘要本文阐述了事务处理的重要性与.net事务处理的演变,以具体的实例讲述了分布式事务在.net编程中的应用。为处理分布式事务应用设计提供了完善的解决方案和具体的操作步骤。关键词事务分布式事务处理引言事务是执行一连串工作的逻辑单元,事务具有不可分性,事务中的所有工作项目完成,才算是一个完整的事务,假设事务中有1000项工作,其中的999项完成,只有一项没有完成都算事务失败。事务中的各项工作组成了一个整体,事务完成后全部的数据必须保持稳定的一致性状态,事务完成后数据必须正确无误。并行事务间相互隔离,并行事务所作的修改,必须与任何其他并行事务所做的修改隔离,事务所辨认的数据不能处于另一事务修改之前的状态,只能是其他事务的完成状态。这样才能够保证业务处理中数据的正确。事务处理最为典型的实例是银行处理两个账户间的转账业务。假设需要从A账户转账10000元到B账户。我们需要做的是将A账户减去10000元,同时需要在B账户加10000元。这两步工作就需要在一个事务中完成。才能保证转账的成功或者失败,以有效的避免只减不加与只加不减错误发生。事务处理最早是在数据库系统中应用的,在一个数据库中数据库系统提供了事务处理,为正确的进行数据业务处理提供了可能。然而随着应用需求的扩大。业务处理常常需要对存放在不同数据库中的数据进行事务化处理,也就是需要进行分布式事务处理。为了适应新需求,微软.NET开发工具在不断的改进与提高事务处理技术,以适应新的需求。.net在2008版与2003版就有明显的改进。在NET2008中事务处理更加简单易用。分布式事务处理在应用开发中常需要对存放在同一个物理服务器中不同数据库的数据进行事务化处理,或者是需要对分布在不同地域的多台数据库中的数据进行事务化处理,以上两种功能情况都需要进行分布式事务处理,其中的数据库系统可能结构不同,如一个应用sqlserver库,另一个应用oracle数据库。假如我们需要在两家银行间进行转账业务,两家银行应用的数据库服务器不同,进行转账业务就需要分布式事务处理,以保证两个银行账户间的收支平衡。不发生错误的业务处理。(实际在两个银行间的转账业务会用到3台服务器的,两个银行都是通过银联来转账的,这样可以避免一家银行处理与多家银行间进行业务处理复杂性),同样应用需求还很多,其共同的特点是需要在保证多台服务间的数据能够同时正确修改,或者不做修改。保护数据的完整性。分布式事务处理就是专门解决这类问题的技术系列。ADO.NET事务处理的演变传统的.net事务处理分显式事务与EnterpriseServices声明式两种。显式事务具有速度快消耗资源少等特点,但是其功能简单,只能管理单一对象和单一持久资源间的事务,只能应付单一SqlConnection对单一SqlServer间的事务(或oracle及其他数据库),{{也就是说只能处理所有数据在一个数据库中存放的应用系统开发,不能处理具有多个SqlConnection对多个SqlServer间的分布事务。EnterpriseServices的声明式事务通过COM+形式来提供事务服务,并且需要调用分布式事务协调处理器MSTDC(MicrosoftDistributedTrannsactionCoordinator)来协调分布事务,其事务功能强大,但是需要昂贵的成本代价,同时事务执行速度慢。为了克服传统事务处理在应用中的局限,微软在.NET2008中推出了新的事务处理机制,当然在类的命名空间上还是沿用了.NET2003的System.Transactions,其构成如下,系统提供了隐式事务处理程序编写模型与显式事务处理编程模型两种实现方案。处理分布式事务还用到了MSDTC。隐式事务处理编程模型如下//声明TransactionScope隐式事务Using(TransactionScopets=newTransactionScope()){•…ADO.NET程序语句ts.Complete();}Catch(TransactionAbotedExceptionex)//错误处理语句}应用时只需要定义TransactionScope,其中的各种语句将自动的被.NET编译在一个事务中完成。同时在事务处理中不需要象传统事务处理进行Commit与Rollback操作。TransactionScope对象可以自动确保事务执行或回退。银行转账业务实现如下//声明TransactionScope隐式事务Using(TransactionScopets=newTransactionScope()){SqlConnectioncon1=newSqlConnection(connectstring1);returnValue=command1.ExecuteNonQuery();SqlConnectioncon2=newSqlConnection(connectstring2)returnValue=command2.ExecuteNonQuery();ts.Complete();}Catch(TransactionAbotedExceptionex){//错误处理语句}隐式事务处理具备了处理分布事务的能力,同时应用较为简单。不过在应用需要注意的是在数据库连接字符串中加入Enlist=true,保证数据库连接添加到TransactionScope的作用范围中,否则事务不能正常提交。另一种显式事务处理程序编写模型CommittableTransaction对象,其编程模型如下:Using(CommittableTransactiontran=newCommittableTransaction())Connl.open();〃启动数据库连接1Connl.EnlistTransaction();//将数据连接1加入显式事务Conn2.open();〃启动数据库连接2Conn2.EnlistTransaction();//将数据连接2加入显式事务try{…tran.Commit();〃事务提交}catch{…tran.Rollback();〃事务回退}}显式事务处理的特点是sqlconnection对象必须用EnlistTransaction方法加入到事务中,否则事务不能正常的发挥作用。在显式事务处理中还需要进行事务提交与事务回退操作。无论是隐式事务还是显式事务处理,系统都首先按LocalTransaction来处理,当LocalTransaction无法应付事务需求时系统自动的将事务处理升级为分不布式事务处理,并有MSDTC来负责事务的协调。MSDTC的配置方法.NET2008更新了事务处理机制,当事务升级到分布式事务时,系统就用到MSDTC,MSDTC是微软操作系统间保持事务同步的技术,MSDTC的安装配置步骤如下:1检查操作系统是否安装DTC组件。XP默认安装,Win2003默认不安装。安装步骤如下:“开始”|“控制面板”|“添加/删除程序”|“添加/删除Windows组件”,
选择“应用程序服务器”,单击“详细信息”,选择“启用网络DTC访问”,单击“确定”|“下一步”|“完成”。如图:停止并重启MSDTC服务(命令:netstopmsdtc和netstartmsdtc)。停止参与分布式事务的任何资源管理器服务。如MicrosoftSQLServer或MicrosoftMessageQueueServer然后重新予以启动。2.设置MSDTC组件。a.“开始”|“运行”,输入“dcomcnfg”,或者“控制面板”|“管理工具”|“组件服务”,打开“组件服务”窗口,如图:
b.“组件服务”|“计算机”|“我的电脑”,右键“属性”|“MSDTC”。勾选“使用本地协调器”,单击“安全性配置”,弹出“安全配置”窗口,勾选“网络DTC访问”、“允许远程客户端”、“允许远程管理”、“允许入站”、“允许出站”、“不要求进行验证”、“启用事务Inernet协议(TIP)事务”和“启用XA事务”,“允许入站”和“允许出站”。服务器端机器必须“允许入站”。客户端机器必须“允许出站”,DTC登陆账号必须是“NTAUTHORITY"NetworkService”。如图:服务器端机器
如图:客户端机器3.配置防火墙以允许与Msdtc.exe服务的网络通讯,将防火墙安全等级设为中级即可。4.检查两台机器能够相互ping通Hostname。Hostname是机器名,而不是IP。若不可以,进行如下设置:用文本编辑器修改系统的hosts文件,不同版本的windows的hosts文件的存放目录不同,(windows2003存放在C:\WINDOWS\system32\drivers\etc目录下),在hosts中加入写上IP和HostName,女口“16lenovo07-884gb6.”,保存hosts。5.启动SQLServer的分布式远程连接。(1)SQLServer2000:①“开始”|“所有程序”|“MicrosoftSQLServer”|“企业管理器”,鼠标选中SQLServer实例。例如:SPRING-UKC6DDAM,右键“属性”,弹出“SQLServer属性(配置)”窗口,“连接”|“远程服务器连接”,选中“允许其他SQLServer使用RPC远程连接到本SQLServer”和“强制分布式事务处理(MTS)”,点击确定。如图:6.SQLServer是否安装必须的补丁。如如图:6.SQLServer是否安装必须的补丁。如SQLServer2000
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年道路运输驾驶员疲劳驾驶监测系统应用考核试卷
- 2025年危险废物处理处置技术专利分析考核试卷
- 14.工业机器人润滑系统维护技术考核试卷
- 2025年制造业与工业2025专项能力测试高端装备制造技术(新能源汽车电机控制器制造)考核试卷
- 综合解析苏科版八年级物理下册《从粒子到宇宙》难点解析试卷(含答案详解)
- 考点解析人教版八年级物理上册第6章质量与密度-质量综合练习试题(含详细解析)
- 考点解析人教版八年级物理上册第5章透镜及其应用-透镜专项训练练习题(含答案解析)
- 考点解析人教版八年级上册物理光现象《光的反射》综合测评试题(含答案解析)
- 解析卷-人教版八年级物理上册第5章透镜及其应用-5.5显微镜和望远镜综合练习试卷(含答案详解版)
- 重难点解析人教版八年级物理上册第6章质量与密度-质量综合测试试题(含答案及解析)
- 西安教师入编协议书
- 《高龄卧床高危静脉血栓栓塞症防治中国专家共识》解读
- 比亚迪汽车出口合同协议
- 2025至2030年中国LNG加气站行业深度调研及投资前景预测报告(上下卷)
- 招投标程序审计报告范文
- 《劳动教育》 课件 专题二 夯实劳动技能 第三节 提高社会技能
- 课题开题报告:生成式人工智能在教育的应用现状与优化策略研究
- 《光学教程》姚启钧原著-第四章
- 高中英语新课标3000词汇表(新高考)
- 野外作业安全培训课件
- 《子宫内膜异位》课件
评论
0/150
提交评论