通行证: 用户 密码
域名空间  下载中心 社区论坛 信息公告 my小屋
联系我们
设为首页
加入收藏
热门:qq挂机,asp,php,jsp,xml
,sql,.net,编程 程序 网页图象
首页>网络编程>asp专区>正文 百度拟向个人用户收费 转移网易盛   google网站遭恶意仿冒 律师已开始   intelcore品牌明年推出 “奔腾”   ie暴出漏洞 google调整自家产品协   中国黑客群攻击美政府网站 拿到部   微软计划开放office文件格式 消除   腾讯联合八部门严厉打击挂机网站   神六载人飞行圆满成功   美国会要求nasa彻底完成空间站建   google中国研究院有望落户清华   
热 点 排 行
dll文件下载
qq挂机的n种快速方法
刘亦菲 变性人、堕胎,自称
双系统卸载完全攻略
长白山天池怪兽再现 一分钟
腾讯qq调整升级条件 不再诱
新开放qq免费挂级网站
qq挂级程序,qq免费挂机源程
扫描与破解adsl帐号
ape歌曲的播放、转换和刻录
“反间谍专家”试用手记
亲身体验!让桌面不再粗糙
exe文件打不开——恢复exe
用通通通作代理在局域网上
photoshop通道抠图:给秀发
推 荐 新 闻
易特网祝大家圣诞快乐
微软推多视角俯瞰城市地图
“老人参”变脸“后天” 伺
中国黑客群攻击美政府网站
bittorrent被好莱坞招安盗
网站建设中,关键词选择技
神六载人飞行圆满成功
国庆长假上网慎防“移动杀
连环起诉google 传统媒体欲
最强秘籍 ie7最新使用技巧
神六完成总装可接航天器 外
adobe ceo痛斥微软 称其管
微软急调张亚勤回中国 千里
微软宣布重大重组方案 将划
腾讯qq 2005 beta3火热发布
相 关 新 闻
首页>网络编程>asp专区>正文

com+事务和iis


http://www.iyit.net  日期:2006-4-15 9:02:05  来源:  点击:
microsoft已经紧密地集成了iis和com+的功能,这使我们能非常容易地在事务性web页面编程中利用事务处理应用程序。有许多不同方式集成com+和iis的事务特性,这些例子包括:
? 事务性asp。
? asp 中的objectcontext。
? 事务性事件。
开发者可以在使用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=value %>
对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事件,回滚事务。
上一篇:asp实现批量录入数据的实现
下一篇:没有了

[发送给好友] [打印本页] [关闭窗口] [返回顶部] 转载请注明来源:http://www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 投稿作者:
信息来源: 录入时间: 2006-4-15 9:02:05
浏览次数: 投稿信箱: shtghy@163.com
  友情链接
设置首页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
copyrights ?2004-2005 iyit.net all rights reserved.
网站合作、广告联系qq:147007642、466949678
易特网络技术 点击这里给我发消息