COM+事务处理简介.docx

COM+事务处理简介.docx

ID:48475475

大小:24.21 KB

页数:5页

时间:2020-02-04

COM+事务处理简介.docx_第1页
COM+事务处理简介.docx_第2页
COM+事务处理简介.docx_第3页
COM+事务处理简介.docx_第4页
COM+事务处理简介.docx_第5页
资源描述:

《COM+事务处理简介.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、.NETFramework依靠MTS/COM+服务来支持自动事务处理。COM+使用MicrosoftDistributedTransactionCoordinator(DTC)作为事务管理器和事务协调器在分布式环境中运行事务。这样可使.NET应用程序运行跨多个资源结合不同操作(例如将定单插入SQLServer数据库、将消息写入Microsoft消息队列(MSMQ)队列,以及从Oracle数据库检索数据)的事务。要实现COM+事务处理的类则必须继承System.EnterpriseServices.ServicedComponent,这些类需要是

2、公共的,并且需要提供一个公共的默认的构造器。其实WebService就是继承ServicedComponent,所以WebService也支持COM+事务。要在类定义之前加属性[Transaction(TransactionOption.Required)]。类里面的每个方法都会运行在一个事务中。定义一个COM+事务处理的类:首先引用:usingSystem.EnterpriseServices;。然后,继承ServicedComponent。[Transaction(TransactionOption.Required)]publicclas

3、sOrderData:ServicedComponent{}TransactionOption枚举类型支持5个值:Disabled、NotSupported、Required、RequiresNew和Supported,如表5-3所示。表5-3TransactionOption枚举类型支持5个值值说明Disabled忽略当前上下文中的任何事务NotSupported使用非受控事务在上下文中创建组件Required如果事务存在则共享事务,并且如有必要则创建新事务RequiresNew使用新事务创建组件,而与当前上下文的状态无关Supported如

4、果事务存在,则共享该事务一般来说COM+中的组件需要Required或Supported。当组件用于记录或查账时RequiresNew很有用,因为组件应该与活动中其他事务处理的提交或回滚隔离开来。派生类可以重载基类的任意属性。如OrderData选用Required,派生类仍然可以重载并指定RequiresNew或其他值。COM+事务有手动处理和自动处理两种方式,自动处理就是在所需要自动处理的方法前加上[AutoComplete],根据方法的正常或抛出异常决定提交或回滚。手动处理就是调用ContextUtil类中的EnableCommit、Se

5、tComplete和SetAbort方法。实现步骤如下。1.给程序添加强名1)创建一对密钥用来创建密钥的工具是称为sn.exe的共享工具。通常通过命令提示运行它,该工具可执行各种任务以生成并提取密钥。我们需要用以下方式来运行sn.exe。sn–kc:key.snk其中key.snk代表将保存密钥的文件的名称。它的名称可以是任意的,不过习惯上带有.snk后缀名。2)签名这个文件必须在AssemblyKeyFile属性中引用,签名通常是在编译时进行的。签名时,用户可利用C#属性通知编译器应该使用正确的密钥文件对DLL进行签名。要做到这一点用户需要

6、打开工程中的AssemblyInfo.cs文件并进行修改。[assembly:AssemblyKeyFile(“..\..\key.snk”)] 注意key.snk文件和项目文件在同一个文件夹内。2.手动事务处理创建一个项目用以实现事务处理的业务类ClassTran。代码示例:(示例位置:光盘codech054ClassTranOrderData1)usingSystem;usingSystem.Data.SqlClient;usingSystem.EnterpriseServices;//企业级服务COM+事务namespac

7、eClassTran{[Transaction(TransactionOption.Required)]publicclassOrderData1:ServicedComponent{//手动事务publicstringWorkTran(){try{ContextUtil.EnableCommit();Work1();Work2();ContextUtil.SetComplete();return"成功!";}catch(Exceptionex){ContextUtil.SetAbort();return"失败!";}}privatevoidW

8、ork1(){stringconString="datasource=127.0.0.1;database=codematic;userid=sa;p

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。