电脑维修第一互动门户_www.PC106.com 为了方便您再次访问电脑维修站,请点击收藏本站!设为首页
操作系统 · 硬件学院 · 软件学院 · 网络学院 · DIY 经验 · 数据恢复 · 网站技术 · 维修网点 · IT 黄 页 · 大师答疑
故障症状 · 电脑优化 · 病毒快报 · 黑客安全 · 维修宝典 · 电脑保养 · 服 务 器 · 在线杀毒 · 在线电视 · 网址服务
维修 CPU·主板·硬盘·内存·显卡·显示器·键盘鼠标·声卡音箱·软驱光驱·打印机·机箱电源·BIOS·网卡·局域网·浏览器
您现在的位置: 电脑维修 >> 网站技术 >> ASP技术 >> ASP基础 >> 网站技术正文
COM+事务和IIS
作者:佚名 文章来源:不详 点击数: 更新时间:2007-2-3 12:51:43


     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事件,回滚事务。





上网速度更快更爽、更安全下载使用Firefox火狐浏览器

网站技术录入:admin    责任编辑:admin 
  • 上一篇网站技术:

  • 下一篇网站技术:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

     IT图片报道

    14万元天价!640GB闪存硬盘美国问

    双核独显19寸液晶惠普PC机只卖49

    佳能MP160售价仅580元

    神舟双核液晶电脑3999起
     IT热点报道

    普通IT报道 中国电信称三年内实现光纤到户
    普通IT报道 广达个人电脑宣布已开始在江苏投入量产
    普通IT报道 14万元天价!640GB闪存硬盘美国问世
    普通IT报道 节后病毒猖獗系统瘫痪
    普通IT报道 AMD推出6款节能处理器
    推荐IT报道 双核独显19寸液晶惠普PC机只卖4999元
    普通IT报道 微软无奈下调Vista销售预期 XP仍是主角
    普通IT报道 佳能MP160售价仅580元
    推荐IT报道 神舟双核液晶电脑3999起
    推荐IT报道 4999元玩Vista 七喜12寸轻薄本升级
    关于公司 | 免责声明 | 广告服务 | 招贤纳士 | 联系我们 | 友情链接 1 2 3
    Copyright©2005 - 2007  http://www.PC106.com  All Right Reserved   
    桂ICP备06015569号