microsoft已经紧密地集成了iis和com+的功能,这使我们能非常容易地在事务性web页面编程中利用事务处理应用程序。有许多不同方式集成com+和iis的事务特性,这些例子包括:
1. 事务性asp。
2.asp 中的objectcontext。
3.事务性事件。
开发者可以在使用iis和com+的应用程序中使用一个或多个这些特性。因为它们是紧密集成的,开发者只进行少量的工作,就能充分利用这些服务。事实上,在com+ 中objectcontext封装了一个事务,可以直接用于事务中的asp页面。
19.4.1 事务性asp
由
于iis
4.0和mts的集成,开发者可以在一个事务中包含asp脚本。这些asp网页可以包含对服务器组件的调用,这些组件也将参与相同的事务。同所有的事务一
样,如果事务的任一部分失败,将回滚整个事务。事务性asp脚本所增加的优点就是使得把多个组件绑定到单个事务中变得简单化。
当处理一个终止的事
务时,使用事务性脚本有一个问题。通过数据库的资源管理器访问数据库产生的改变将被自动地回滚,然而,
com+不能回滚脚本自身产生的变化。例如,使用脚本产生的任何变化,如对session或application变量的改变,将不会自动地回滚。以后你
将看到如何使用事务性事件通知事务已经终止。当处理这个事件时,能手工地回滚com+不能自动回滚的变化。这种限制的原因是com+事务只能回滚与ms
dtc相容的服务产生的变化。
在iis 5.0中有一个新特性。开发者具有使得一个事务跨越多个asp脚本网页的能力。这归功于在server对象上新增的execute和transfer方法。
然
而,正常情况下,单个事务的所有处理可以在单个asp网页中完成。例如,如果一个应用程序有一个组件从一个帐户中提款,而另一个组件在一个帐户中存款。为
了把资金从一个帐户转到另一个帐户,创建asp脚本,利用提款组件从帐户中取出资金,使用存款组件把资金存入新的帐户。将所有这些功能放入一个事务性
asp网页中,如果事务过程的任一部分失败,就回滚所有的变化,帐户余额回到其初始值。
为声明一个网页是事务性的,使用下列指令:
对transaction指令可能的设置有:
? disabled:告诉com+不希望在事务中涉及组件。
? requires_new:即使已存在一个事务,也启动一个新的事务。
? required:如果不存在事务就启动一个新的,如果存在就参与到其中。
? supported:不启动一个事务,但是如果事务已经存在就参与它。
? not_supported:即使存在事务,也不参与事务。
这些值与使用组件服务浏览器为每个组件设置的transaction support属性的作用相同。
transaction
指令必须处在asp页面脚本的第一行,通常由language指令包含。如果这之前在页面中有任何内容,将产生脚本错误。如同组件中的事务一样,如果到达
代码的最后一行,还没有提交或终止,则com+假定提交,并把变化写入磁盘。另外,由页面调用的每个对象能够使用同一asp页面的
objectcontext对象参与事务,通常就是这么做的。
19.4.2 事务性asp中的objectcontext对象
当编写一个
事务性asp脚本时,你可能想直接影响脚本的事务的结果。像为事务编写的组件一样,asp页也能利用objectcontext对象。自从发表了asp
2.0以后,就可以利用这个对象,它为开发者需要的所有事务处理例程提供功能。服务器组件参与事务时访问的就是这个对象,它包含setabort和
setcomplete方法。
下列代码显示了在一个事务性web页中如何实例化两个com对象和一个事务,并在这两个对象上调用一个方法。
注意,页面顶部的事务设置表明请求一个事务。正是该设置使该页面像com组件一样参与同一事务。事实上,只要com组件的transaction support属性为required或supported,它们就变成由asp页启动的事务的一部分。
随着asp页执行,调用每个com类的一个方法。当执行每个方法时,其返回值用于决定处理是否成功。如果任一方法返回一个非零值, asp页务。否则, asp页将提交事务并将变化存入磁盘。
这个例子的要点是所有的方法调用随着asp页面一调用objectcontext对象中的setabort方法,回滚事起进入到同一事务中。
上述的例子还可以改写,使得com组件中的方法从内部调用setcomplete和setabort方法。这将从asp页中删除一些逻辑,并嵌入到com组件中。用这种方式编写事务的唯一问题是asp页不知道将要提交还是终止事务。然而,这可以通过实现事务事件来解决。
19.4.3 事务事件
asp页也具有侦听com+的能力,可以了解事务何时将提交或终止。这是通过在com+提交或终止事务前iis调用两个例程来实现的。这两个方法称为o transaction commit和on transactionabort。
ontransactioncommit方法在com+提交事务之前、准备阶段之后被触发。只要事务中没有任何部分终止,将触发ontransactioncommit例程(事件),提交事务。如果事务被终止,则触发ontransactionabort事件:
同大多数事务性asp页一样,上述例子的开始外声明它要求一个事务,接下来脚本调用一个事务性com对
象的方法。一旦完成该页,
com+将通过检查是否有事务的某一部分调用了setabort方法来决定事务的结果。如果没有调用setabort方法,就触发
ontransactioncommit事件,并且提交该事务;如果调用了setabort方法,则触发ontransactionabort事件,回滚
事务。
分享到:
相关推荐
COM+事务处理是微软在集成IIS和COM+功能时引入的一种高级事务管理机制,它使得在Web应用程序中实现事务处理变得更加便捷。COM+利用Microsoft Distributed Transaction Coordinator (DTC)作为事务管理器,能够在...
在SQL Server的安装过程中,有时会遇到与IIS(Internet Information Services)和COM+相关的警告。这些警告通常意味着系统在配置或依赖项方面存在问题,可能导致SQL Server无法正确地与IIS或COM+集成。本文将深入...
COM+,全称为Component Object Model Plus,是微软在Windows操作系统中提供的一种分布式应用程序开发框架,它基于Microsoft Component Services,进一步扩展和完善了COM(Component Object Model)技术。COM+旨在...
COM+(Component Object Model Plus)是Microsoft提供的一种组件服务模型,用于创建、管理、部署和运行基于组件的应用程序。它不仅支持传统的COM组件,还引入了更高级的服务,如事务处理、安全性和对象池化等。在SQL...
COM+是Microsoft Windows 2003 Server操作系统中的一种组件服务技术,用于构建分布式应用程序,它在企业级软件开发和部署中发挥着重要作用。本文档详细介绍了如何在Windows 2003 Server环境下配置和管理COM+服务器。...
控制面板-管理工具”中打开组件服务,在“组件服务”中依次单击“控制台根目录-组件服务-计算机-我的电脑-COM+应用程序”,如果滑有启动“MSDTC服务,此时会弹出一个“COM+”无法与Microsoft分布式事务协调程序...
wamreg.dll与COM+紧密集成,负责将IIS的Web应用程序注册到COM+目录服务中,从而使得这些应用程序可以利用COM+提供的服务,如事务处理、安全性以及资源管理。 标签"**wamreg**"提示我们关注的重点是与wamreg.dll相关...
在文件列表中,"My-First-COM-Serviced-Component.pdf"很可能是关于创建和管理COM+服务组件的教程或指南,它可能会涵盖组件的生命周期、安全性设置、事务管理和错误处理等内容。而"smtpbtnmail_src.zip"可能包含了一...
除了匿名访问用户(Anonymous)外,IIS中的FTP将使用Windows 2000自带的用户库(可在“开始→程序→管理工具→计算机管理”中找到“用户”一项来进行用户库的管理)。 最后,关键一步还有就是将你的电脑变为网络中的...
- 检查`COM+ 应用程序`中是否有“IISOut-Of-ProcessPooledApplications”这个组件,如果没有则需要手动添加。 - 如果在尝试访问“COM+ 应用程序”时收到错误代码`8004E00F`,这通常意味着COM+服务出现问题。此时...
安装IIS通常需要在Windows操作系统中进行,可以通过控制面板添加角色和功能完成。 **4.2.5 IIS的基本配置** 配置IIS的基本参数,包括站点名称、绑定信息等。 **4.3 WWW服务器的建设管理** **4.3.1 创建新的Web...
3. **处理iisOut-Of-ProcessPooledApplications问题**:通过调整COM+应用程序设置,具体操作是在控制面板中找到“COM+应用程序”,然后定位到“iisOut-Of-ProcessPooledApplications”,进行相应的配置。 ### 配置...
COM+是微软为企业级应用程序提供的一个组件模型,它扩展了Component Object Model (COM)的概念,增加了诸如事务处理、安全性、并发控制和资源管理等高级服务。在AutoTickets中,COM+组件可能被用于创建可重用的服务...
4. **服务启动失败**:如果默认网站无法启动,可能是COM+应用程序或分布式事务协调器(MSDTC)出现问题,需要检查并修复这些服务的配置。 5. **找不到组件**:如果缺少"IIS Out-Of-Process Pooled",可能需要运行`...
1. 启动IIS中的服务扩展,如Active Server Pages和Asp.Net,根据实际应用需求选择。 2. 修改默认网站属性,延长“连接超时”至900秒,以支持长时间的事务处理。 **安装后的配置** 1. 安装中间层时,K3系统会自动...