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


     特别应当注意:Visual C++向导仍采用术语“MTS”,Visual C++头文件和静态库名称中仍含有“mtx”。因此,本节中我们使用术语“MTS/COM+”,而不只是“COM+”。
    Visual C++在两个方面提供MTS/COM+支持:一是在创建项目时,二是在项目中使用指定的组件时。
    首先来看一下MTS/COM +对于项目的支持。当编译和链接项目时,便转换为DLL或EXE。在项目中使用MTS/COM+服务时,必须链接指定的库。Visual C++ AppWizard可帮助完成此项任务。
    在你第一次创建项目时,可能已注意到了Support MTS复选框,如图18 - 5所示。

    如果选定此复选框,不会产生附加代码,但向导改变项目设置使其“启用COM+”。特别是,向链接线增加了mtx.lib、mtxguid.lib和delayimp.lib库。因此,如果没有对上述复选框进行选定,仍可通过如图1 8 - 6所示的方式在链接线中添加这些文件名,使现有的组件“启用COM+”。

    另一个选择是创建启用COM+的组件。当在项目上添加一个新的ATL组件时,选择MSTransaction Server Component,如图1 8 - 7所示。

    单击属性页将出现图1 8 - 8所示的内容。

    创建MTS/COM+对象时,向导将在项目中添加代码,下面看一下这种配置产生的附加代码。
    在新组件的头文件中,你可看到增加了一个包含文件:
    #include <mtx.h>
    和用于ASP内置对象的包含文件类似,此文件包含在C++组件中使用MTS/COM+组件所需的常数和定义。组件中头文件还有一处改变:
    DECLARE_NOT_AGGREGATABLE(CTableStorage2)
    MTS/COM+对象不能作为其他对象集合体的一部分使用。因此,必须插入代码防止这种情况发生。
    如果不使用AppWizard创建组件,使组件“启用COM+”是非常容易的。如果选择IObjectControl支持,应该在项目中插入下列附加代码。组件的头文件中也有些改变。
    首先,组件继承IObjectControl接口,因此它必须实现该接口定义的方法:


    确保向导声明了IObjectControl的方法和ObjectContext的指针。

    向导在源文件中实现这些方法。当第一次使用对象时调用Activate方法,并自动生成ObjectContext的指针。

    如果选择IObjectControl支持,而没有缓冲对象,CanBePooled方法将返回FALSE:

    后面将详细讨论对象缓冲问题。最后,当对象不再使用时,将释放对IObjectContext的引用。

    对于服务器组件,有许多MTS/COM+接口可用。下面以IObjectContext接口为例进行讨论。
18.2.1 IObjectContext的事务处理
    每个MTS/COM+对象均有相应的环境。环境隐含着与对象相关的状态,包含对象的执行环境信息和参与的事务的信息。
    IObjectContext可完成下列功能:
    ? 声明工作完成。
    ? 不允许提交暂时的或永久的事务。
    ? 在当前事务范围内开始新的MTS/COM+对象。
    ? 检查调用者的角色。
    ? 检查安全性。
    ? 检查事务状态。
    在前一节中,组件已经有一个对IObjectContext接口的引用。我们将实现Clear方法,从组件中删除所有数据。对ITableStorage2接口添加一个不带任何参数的Clear()方法,用下列代码填写此方法的主体中:

    这个方法的目的是删除组件中的所有数据。必须检查ObjectContext的引用是否确实存在。如果在COM+以外使用组件,这个指针的值不存在,进行引用会引起组件崩溃。在这个例子中,调用SetComplete方法告诉COM+“不再保持状态,可以释放。”
    18.2.2 IObjectControl的对象缓冲
    IObjectControl接口用于对象缓冲,可增强应用程序的性能。当超出对象的使用范围时,被缓冲的对象不会真的破坏,只是处于无效状态。当请求这种类型的对象时,可以重新使用这个对象,组件被循环使用。性能增强的原因是当一个对象无效时,对象没有完全损坏,因此就不需执行很多工作。同样,激活一个无效对象也不需执行很多工作。
   在创建MTS/COM+对象时,对象缓冲可通过ATL Object Wizard Properties对话框启用,如图1 8 - 9所示。

    注意Can be pooled选项只能在选定Support IObjectControl后才能选定。另一种方式是将CanBePooled方法中的返回值改为TURE:

    使用对象缓冲所需做的工作仅此而已。
    上面讲述了组件如何与ASP和COM+相互作用,下面我们讲述组件如何访问永久性数据





上网速度更快更爽、更安全下载使用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号