动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   Asp → 阅读文章
  

 与COM+进行接口

作者来源: 
阅读 2656 人次 , 2006-4-3 0:50:00 


特别应当注意: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组件时,选择ms transaction 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+相互作用,下面我们讲述组件如何访问永久性数据。

 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:数据访问
· 下一篇:与ASP进行接口
· 谈谈sql查询的between
· ASP内建对象Application 和 Session
· ASP实用大全-ASP服务器组件(3)
· WEB服务有待实践的检验
· 用ASP开发一个在线考试程序(八)


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077