怎样响应CreateObject创建的对象的事件

sxqvb 2008-12-11 03:06:54
怎样响应用CreateObject创建的对象的事件,找了好久一直未果,请高手指点,谢谢!
...全文
379 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
嗷嗷叫的老马 2008-12-17
  • 打赏
  • 举报
回复
TO 阿花:

看看这里,方法以及示例加工具都有,帮大家整理了一下:

http://topic.csdn.net/u/20081217/00/8bd3078e-cb65-42d4-bb47-0eceb77ae1b9.html
sxqvb 2008-12-17
  • 打赏
  • 举报
回复
谢谢各位,特别是老马,接分
fj182 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 myjian 的回复:]
引用 17 楼 fj182 的回复:
难道你在接口库中就不需要引用 Winsock 吗?
是的,不需要引用.
...
[/Quote]

难道你在TLB中就不需要知道Winsock中的接口?
qqlpp 2008-12-16
  • 打赏
  • 举报
回复
帮顶
嗷嗷叫的老马 2008-12-16
  • 打赏
  • 举报
回复
需要知道,但不需要引用WINSOCK控件.

接口使用EDITTLB工具保存一下即可.

这样的话如果CreateObject出错,那么说明目标对象在机器上不存在或未注册,可以有选择地提示用户.
pushregistration 2008-12-15
  • 打赏
  • 举报
回复
up
ooily 2008-12-15
  • 打赏
  • 举报
回复
up
qap22 2008-12-14
  • 打赏
  • 举报
回复
mark
  • 打赏
  • 举报
回复
帮顶
wap21 2008-12-14
  • 打赏
  • 举报
回复
帮顶
嗷嗷叫的老马 2008-12-14
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 fj182 的回复:]
难道你在接口库中就不需要引用 Winsock 吗?[/Quote]
是的,不需要引用.

接口库里面只是声明了一个"接口",与实际的对象接口相同即可.

本来我之前是打算学习ODL语法来自己写,结果发现了EditTlb工具,于是.............

PS:

库里面还可以声明API,常量,类型等,并不仅仅是用于声明接口......记得那个超级winapi.tlb吧?就是声明了上千个API的库....就这样做的
嗷嗷叫的老马 2008-12-13
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 fj182 的回复:]
老马的方案跟直接引用有何不同?
[/Quote]
引用的是库里的接口呀.

这样的好处是可以编写好事件处理代码,然后使用CreateObject动态建立对象.

对象事先没注册也没关系,可以先处理注册之类的问题再创建对象实例.

主要是用于程序的强壮性......因为有的对象可能在别人机器没有,那么程序可以给出提示,或者自己处理一下,比如释放相应组件并注册等.....
fj182 2008-12-13
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 myjian 的回复:]
引用 11 楼 fj182 的回复:
老马的方案跟直接引用有何不同?

引用的是库里的接口呀.

这样的好处是可以编写好事件处理代码,然后使用CreateObject动态建立对象.

对象事先没注册也没关系,可以先处理注册之类的问题再创建对象实例.

主要是用于程序的强壮性......因为有的对象可能在别人机器没有,那么程序可以给出提示,或者自己处理一下,比如释放相应组件并注册等.....
[/Quote]

难道你在接口库中就不需要引用 Winsock 吗?
  • 打赏
  • 举报
回复
帮顶
wap21 2008-12-13
  • 打赏
  • 举报
回复
帮顶
qap22 2008-12-13
  • 打赏
  • 举报
回复
up
wap21 2008-12-13
  • 打赏
  • 举报
回复
mark
fj182 2008-12-11
  • 打赏
  • 举报
回复
老马的方案跟直接引用有何不同?
xrongzhen 2008-12-11
  • 打赏
  • 举报
回复
DuiXiang是对象,JieKou是自己定义的接口,在VB中使用


Public objDll As Object

Private Sub Form_Load()

Set objDll = CreateObject("DuiXiang.JieKou")

End Sub



在ASP中使用可以嵌入vb代码:


<%
dim objDll
set objDll=Server.CreateObject("DuiXiang.JieKou")
%>



嗷嗷叫的老马 2008-12-11
  • 打赏
  • 举报
回复
你要在ASP里用恐怕就不行了

但如果在EXE里要这么折腾,就可以用这个方案:

http://www.m5home.com/blog2/blogview.asp?logID=329&cateID=2

这是使用类型库声明你的对象,这样就可以直接定义相应的接口(前期绑定)

然后再对这个接口赋值为对象实例.
加载更多回复(8)
第1章 Internet与HTML概述 1.1 Internet的基本情况 1.1.1 Internet的起源与商业化发展 1.1.2 Internet的服务内容 1.1.3 TCP/IP协议 1.1.4 Internet中的主机管理与域名系统 1.1.5 Internet的工作原理 1.2 有关概念及HTML简介 1.2.1 超文本传输协议——HTTP 1.2.2 统一资源定位器——URL 1.2.3 网页、网站及其相关概念 1.2.4 对象事件、属性和方法 1.2.5 HTML简介 1.2.6 客户端和服务器端的脚本语言 1.2.7 ActiveX组件简介 1.2.8 脚本引擎 第2章 VBScript基础 2.1 使用VBScript 2.1.1 VBScript及其主要功能 2.1.2 在HTML中页面使用VBScript 2.2 VBScript数据类型 2.3 VBScript变量 2.3.1 声明变量 2.3.2 变量的命名规则 2.3.3 给变量赋值 2.3.4 标量变量和数组变量 2.4 VBScript常量 2.4.1 声明自定义常量 2.4.2 使用固有常量 2.5 VBScript的表达式与运算符 2.5.1 算术运算符 2.5.2 关系运算符 2.5.3 逻辑运算符 2.5.4 连接运算符 2.5.5 运算符优先级 第3章 VBScript语句和过程 3.1 VBScript语句中的基本语句 3.1.1 选择语句 3.1.2 循环语句 3.2 VBScript语句中的过程 3.2.1 Sub过程 3.2.2 Function过程 3.2.3 参数说明 3.2.4 相关语句的语法 3.3 综合例子 第4章 VBScript的函数 4.1 VBScript函数综述 4.1.1 数据类型判断 4.1.2 格式化函数 4.1.3 数据类型转换函数 4.1.4 数学运算函数 4.1.4 日期时间处理函数 4.1.5 字符串处理函数 4.2 程序范例:Hello 4.2.1 范例介绍 4.2.2 函数介绍——MsgBox函数 4.2.3 程序清单 4.3 程序范例:色彩 4.3.1 范例介绍 4.3.2 代码讲解 4.3.3 函数介绍 4.3.4 程序清单 4.4 程序范例:计数器 4.4.1 范例介绍 4.4.2 代码讲解 4.4.3 函数介绍 4.4.4 程序清单 4.5 程序范例:定单设计 4.5.1 范例介绍 4.5.2 代码讲解 4.5.3 函数介绍 4.5.4 程序清单 4.6 程序范例:使用Cookie 4.6.1 范例介绍 4.6.2 代码讲解 4.6.3 函数介绍 4.6.4 程序清单 第5章 VBScript的对象和集合 5.1 VBScript的对象和集合 5.1.1 关于组件 5.1.2 VBScript中的对象 5.1.3 Err对象 5.1.4 VBScript中的集合 5.2 程序范例:使用对象 5.2.1 范例介绍 5.2.2 代码讲解 5.2.3 函数介绍——CreateObject函数 5.2.4 对象介绍——Dictionary对象 5.2.5 程序清单 5.3 程序范例:驱动器信息 5.3.1 范例介绍 5.3.2 代码讲解 5.3.3 对象介绍 5.3.4 程序清单 5.4 程序范例:文件信息 5.4.1 范例介绍 5.4.2 代码讲解 5.4.3 对象介绍 5.4.4 程序清单 5.5 程序范例:文件管理 5.5.1 范例介绍 5.5.2 代码讲解 5.5.3 对象介绍——TextStream对象 5.5.4 程序清单 第6章 VBScript与ASP 6.1 ASP及其工作方式 6.2 运行ASP的环境要求 6.3 IIS的安装与基本配置 6.3.1 IIS响应客户请求的方法 6.3.2 IIS的支持服务 6.3.3 IIS的服务帐号 6.3.4 IIS的安装 6.3.5 IIS的基本配置 6.4 WWW服务器的建设管理 6.4.1 创建新的Web站点 6.4.2 配置Web站点 6.4.3 配置主目录 6.4.4 配置虚拟目录 6.4.5 设置主页文件 6.4.6 目录安全设置 6.4.7 Web站点负载的多台IIS服务器分布 6.4.8 单站点服务器配置多个Web站点 6.5 PWS的安装与Web服务器配置 6.5.1 PWS的安装 6.5.2 PWS的设置 6.6 ASP中对VBScript等脚本程序的引用 6.6.1 客户端脚本的引用 6.6.2 服务器端脚本的引用 6.6.3 服务器端脚本语言声明 6.6.4 <% =表达式 %>与Response.Write两种输出方式简介 6.6.5 使用#include命令包含文件 6.6.6 ASP内建对象和ActiveX组件的引用 6.7 Global.asa文件 6.8 ASP的Web运行机制 第7章 认识JScript 7.1 JScript语言 7.2 开始使用JScript 7.3 JScript的嵌入位置 7.4 用JScritp编写客户端脚本和服务器端脚本 7.4.1 如何确定脚本在客户端运行还是在服务器端运行 7.4.2 客户端脚本与服务器端脚本在JScript中的处理 第8章 JScript语言基础 8.1 JScript的变量 8.1.1 变量的声明 8.1.2 强制类型转换 8.1.3 变量的作用域 8.1.4 变量的命名 8.2 JScript的数据类型 8.2.1 数值类型 8.2.2 字符串类型 8.2.3 对象类型 8.2.4 布尔类型 8.2.5 空类型 8.2.6 未定义类型 8.3 JScript的操作符 8.3.1 算术操作符 8.3.2 逻辑操作符 8.3.3 位操作符 8.3.4 赋值操作符 8.3.5 混合操作符 第9章 JScript的程控流程 9.1 条件语句 9.1.1 If语句和if…else语句 9.1.2 switch语句 9.2 循环语句 9.2.1 for语句 9.2.2 while语句 9.2.3 do…while语句 9.2.4 for…in语句 9.3 break语句和continue语句 第10章 JScript的函数 10.1 JScript内建函数 10.1.1 escape( )函数和unescape( )函数 10.1.2 eval( )函数 10.2 JScript的用户自定义函数 第11章 JScript的对象 11.1 JScript的内建对象 11.1.1 原型与构造器 11.1.2 数组对象(Array Object) 11.1.3 布尔对象(Boolean Object) 11.1.4 日期对象(Data Object) 11.1.5 数学对象(Math Object) 11.1.6 字符串对象(String Object) 11.1.7 函数对象(Function Object) 11.1.8 Object对象(Object Object) 11.1.9 数值对象(Number Object) 11.1.10 全局对象(Globe Object) 11.2 浏览器对象 11.2.1 window对象 11.2.2 document对象 11.2.3 navigator对象 11.2.4 location对象 11.2.5 history对象 11.3 用户自定义对象 11.3.1 定义对象及其属性 11.3.2 定义对象的方法 第12章 窗体的使用 12.1 窗体及其控件 12.2 文本框控件 12.2.1 文本框的属性 12.2.2 文本框的方法 12.2.3 文本框的事件 12.3 按钮控件 12.3.1 一般按钮 12.3.2 提交按钮(Submit Button) 12.3.3 重置按钮(Reset Button) 12.4 隐藏控件 12.5 文本区控件 12.6 单选框控件和复选框控件 12.6.1 单选框控件 12.6.2 复选框控件 12.7 选择列表控件 12.8 其他控件 12.8.1 图像控件 12.8.2 文件控件 12.9 小结 第13章 鼠标和键盘事件处理 13.1 event对象 13.2 鼠标事件的处理 13.2.1 鼠标事件 13.2.2 鼠标事件的处理 13.3 键盘事件的处理 13.4 小结 第14章 客户端脚本和服务器端脚本 14.1 JScript与ASP 14.1.1 将JScript脚本加入ASP文件 14.1.2 ASP的对象 14.1.3 ASP的组件 14.2 ASP的数据库处理功能 14.2.1 和数据库连接 14.2.2 执行SQL语句 14.2.3 获取SQL语句的执行结果 小 结
书名: ASP 3高级编程 英文原书名: Professional Active Server Pages 3.0 作者: Richard Anderson Chris Blexrud 译者: 刘福太 张立民 金慧琴 梁发麦 书号: 7-111-07678-8 页码: 925 定价: ¥89.00 会员价: ¥80.10 币值: 801 出版社: 机械工业出版社 出版日期: 2000-10-30 包含在Windows 2000中的Active Server Pages 3.0 (ASP 3.0)是Microsoft公司推出的又一个支持Internet的功能强大的网页制作软件包,除了继续保持其适应于各种浏览器的基本特征外,与ASP 2.0相比,功能更加强大,目前已成为开发Internet应用程序的理想选择。本书第1~7章介绍了ASP的基础知识、ASP 3.0的变化、ASP的对象模型、使用ASP脚本和外部组件的所要求的基本概念。第8~12章介绍了通用数据的访问和连接问题,包括ADO、UDA和XML。第13~18章介绍了使用ASP建立组件的问题,以及COM和COM+如何改变组件的环境。第19~23章是关于ASP与BackOffice类应用软件的结合问题,如Microsoft Message Queue Server、Collaborative Data Objects、Microsoft Exchange和Active Directory等等。第24~27章是在企业环境中使用ASP的安全性、性能和可扩展性等问题。第28章和附录提供了一个XML驱动的在线报纸示例和大量以表格形式给出的相关资料。本书不仅为Internet开发人员提供了详实的开发编程指导,也是致力于Internet网络应用与开发的广大科技人员和大专院校相关专业师生的一本重要的自学、教学参考书。 译者序 前言 第1章 ASP基础 1 1.1 ASP的起源 1 1.1.1 HTML的起源 2 1.1.2 动态页面的起源 2 1.2 ASP如何与IIS连接 5 1.2.1 关于应用程序的映射 5 1.2.2 处理一个ASP文件 7 1.3 相关设置问题和管理 12 1.3.1 IIS的安装 12 1.3.2 IIS管理工具 15 1.3.3 常见的管理任务 18 1.4 ASP 3.0对象模型概要 22 1.4.1 对象环境概念 22 1.4.2 ASP内置的对象 23 1.5 ASP 3.0中的新特性 24 1.5.1 ASP 3.0新特性概要 24 1.5.2 对ASP 2.0的改进 26 1.5.3 VBScript 5.0中的新特性 28 1.5.4 JScript 5.0中的新特性 30 1.5.5 其他的新特性 31 1.6 小结 32 第2章 请求和响应的处理 33 2.1 客户端和服务器的交流 33 2.2 Request和Response对象 35 2.2.1 Request对象成员的概述 35 2.2.2 Response对象成员概述 36 2.3 使用Form和QueryString集合 38 2.3.1 访问ASP集合的一般技术 38 2.3.2 访问和更新Cookies集合 44 2.3.3 Form和QueryString的差异 46 2.3.4 查看Request和Response对象内容 47 2.3.5 ASP中cookie的使用 52 2.4 使用ServerVariables集合 53 2.4.1 “自引用”页面 54 2.4.2 检测浏览器的版本 55 2.4.3 检测浏览器的语言 56 2.4.4 其他有用的ServerVariables集合的值 57 2.5 其他Request和Response技巧 57 2.5.1 连接、缓冲和页面重定向的管理 58 2.5.2 操作HTTP报头 60 2.5.3 使用客户证书 65 2.5.4 读写二进制数据 67 2.5.5 创建定制的日志消息 67 2.6 小结 69 第3章 ASP应用程序与会话 70 3.1 Web上的状态管理 70 3.1.1 状态的准确定义 70 3.1.2 状态的重要性 71 3.1.3 在Web上创建状态 71 3.2 Web应用程序的定义 73 3.2.1 ASP应用程序的定义 73 3.2.2 ASP会话的定义 81 3.3 ASP的Application对象和Session对象 83 3.3.1 ASP的Application对象成员概述 84 3.3.2 ASP的Session对象成员概述 85 3.3.3 使用Application和Session的事件 86 3.3.4 活动中的ASP Application对象 89 3.3.5 活动中的ASP Session对象 93 3.4 小结 96 第4章 服务器进程和ASP Server对象 98 4.1 动态页中服务器端的处理 98 4.2 服务器端的包含指令 100 4.2.1 不可思议的ASP #include指令 100 4.2.2 服务器端包含指令概要 102 4.2.3 服务器端包含指令的例子 104 4.3 ASP Server对象 109 4.3.1 ASP Server对象成员概述 109 4.3.2 创建其他对象的实例 110 4.3.3 执行其他的网页 114 4.3.4 Server对象的错误处理 118 4.3.5 获取Server对象的路径信息 125 4.3.6 使用Server对象格式化数据 127 4.4 小结 132 第5章 脚本运行期库对象 134 5.1 脚本对象的定义 134 5.1.1 不同类型的对象和组件 134 5.1.2 VBScript和JScript脚本对象 135 5.2 创建对象和组件实例 136 5.2.1 使用Server.CreateObject方法 136 5.2.2 使用<OBJECT>元素 136 5.2.3 Server.CreateObject与<OBJECT>的 区别 138 5.2.4 组件线程模型 138 5.2.5 引用对象类型库 139 5.2.6 在客户端上创建对象实例 140 5.3 Scripting.Dictionary对象 141 5.3.1 创建和使用Dictionary对象 141 5.3.2 Dictionary对象示例 143 5.4 Scripting.FileSystemObject对象 148 5.4.1 FileSystemObject对象成员概要 149 5.4.2 使用驱动器 151 5.5 Scripting.TextStream对象 161 5.5.1 创建TextStream对象的方法 161 5.5.2 TextStream对象成员概要 163 5.5.3 TextStream对象举例 165 5.6 小结 168 第6章 活动服务器组件 169 6.1 脚本对象与服务器组件的比较 169 6.2 ASP/IIS可安装组件 171 6.2.1 使用示例页面 172 6.2.2 Content Linking组件 173 6.2.3 Ad Rotator组件 177 6.2.4 Counters组件 182 6.2.5 Browser Capabilities组件 184 6.2.6 Content Rotator组件 188 6.2.7 Page Counter组件 190 6.2.8 Permission Checker组件 191 6.2.9 MyInfo 组件 194 6.2.10 Tools组件 195 6.2.11 Logging Utility组件 200 6.3 第三方服务器组件 204 6.3.1 BrowserHawk组件 204 6.3.2 SA-FileUp组件 206 6.3.3 RegEx注册表访问组件 207 6.4 小结 209 第7章 调试和错误处理 210 7.1 错误的种类 211 7.1.1 语法或“编译”错误 211 7.1.2 语义或“运行期”错误 215 7.2 各种运行期错误 218 7.2.1 逻辑错误 219 7.2.2 脚本运行期错误 220 7.2.3 ASP和SSI的运行期错误 221 7.2.4 客户端脚本错误 222 7.3 防止错误 224 7.4 处理错误 229 7.4.1 ASP缺省错误处理器 229 7.4.2 VBScript错误处理 230 7.4.3 JScript错误处理 232 7.4.4 使用IIS错误页面 232 7.5 程序调试—发现及处理错误 238 7.5.1 常规调试技术 238 7.5.2 Microsoft Script Debugger 239 7.5.3 获得ASP的帮助和支持 242 7.6 小结 243 第8章 ADO基础 244 8.1 ADO的定义 244 8.1.1 OLE DB和ADO的体系结构 245 8.1.2 消费者与提供者 246 8.1.3 提供者和驱动程序 247 8.2 ADO 2.5对象模型 248 8.2.1 Connection对象 248 8.2.2 Command对象 249 8.2.3 Recordset对象 249 8.2.4 Record对象 249 8.2.5 Stream对象 250 8.2.6 集合 250 8.2.7 ADO常数 252 8.3 连接到数据存储 252 8.3.1 连接字符串 253 8.3.2 使用包含文件 256 8.3.3 使用连接状态 256 8.3.4 连接语法 257 8.3.5 连接的例子 257 8.3.6 连接缓冲池 257 8.4 记录集 258 8.4.1 光标 258 8.4.2 锁定 260 8.4.3 创建记录集 261 8.4.4 过滤记录集 265 8.4.5 查找记录 266 8.4.6 修改记录 267 8.5 管理错误 269 8.5.1 Errors集合 269 8.5.2 ASP页面中的ADO错误 270 8.6 小结 272 第9章 连接、命令和过程 273 9.1 Connection对象 273 9.1.1 返回一个记录集 273 9.1.2 操作命令 274 9.2 Command对象 274 9.2.1 返回记录集 274 9.2.2 操作命令 275 9.2.3 存储过程 276 9.3 优化 289 9.3.1 常用的ADO技巧 289 9.3.2 对象变量 289 9.3.3 高速缓存大小 290 9.3.4 数据库设计 290 9.3.5 数据高速缓存 291 9.4 数据整形 293 9.4.1 使用数据整形 294 9.4.2 性能 297 9.5 小结 298 第10章 ASP与客户端数据 299 10.1 断开连接的记录集 299 10.2 远程数据服务 300 10.2.1 RDS服务器组件 300 10.2.2 RDS客户组件 301 10.2.3 支持RDS的浏览器 301 10.2.4 数据源对象 301 10.2.5 数据绑定 308 10.2.6 更新数据 316 10.3 在服务器和客户之间传输数据 319 10.3.1 基于服务器的组件 319 10.3.2 DataSpace对象 320 10.3.3 使用服务器端组件的优点 322 10.3.4 注册服务器端组件 322 10.3.5 自定义处理器 323 10.4 记录集分页 326 10.4.1 利用ASP页面分页记录集 327 10.4.2 利用ADO分页 330 10.4.3 利用SQL Server完成记录集分页 333 10.4.4 数据分页小结 336 10.5 使用数据库中的图像 337 10.6 小结 338 第11章 使用XML数据 339 11.1 XML的定义 339 11.1.1 XML和HTML的差别 340 11.1.2 标记和元素 343 11.1.3 模式和文档类型定义 346 11.1.4 名称空间 347 11.1.5 文档对象模型 348 11.2 ADO和IE5中的XML 354 11.2.1 存储为XML形式的ADO记录集 354 11.2.2 ADO记录集名称空间 355 11.2.3 ADO记录集模式 355 11.2.4 IE数据岛和绑定 358 11.2.5 以XML数据格式保存记录集 361 11.2.6 打开记录集 365 11.3 用XSL来设计XML 367 11.4 相关的领域 371 11.5 用于SQL Server的XML技术预览 372 11.6 小结 373 第12章 通用数据访问 375 12.1 UDA的构想 375 12.2 OLE DB提供者 376 12.2.1 Indexing Service 376 12.2.2 活动目录 383 12.2.3 Exchange Server 386 12.2.4 定制的提供者 386 12.3 半结构化的数据 389 12.3.1 Record对象 390 12.3.2 Internet 发布 390 12.3.3 WebDAV 401 12.4 企业数据 401 12.4.1 Access和SQL Server二者取一 402 12.4.2 SNA Server和传统数据访问 404 12.5 企业中的ASP 405 12.6 小结 407 第13章 组件和网络应用程序结构 408 13.1 分布式应用程序的结构 408 13.1.1 分层应用程序 408 13.1.2 Windows DNA 410 13.1.3 Windows DNA服务 411 13.1.4 网络结构 413 13.2 组件 415 13.2.1 组件定义 415 13.2.2 COM和COM+ 415 13.2.3 组件服务 416 13.2.4 以数据为中心的组件 417 13.2.5 业务组件 417 13.2.6 用户界面组件 418 13.3 组件应用程序设计 418 13.3.1 转换到组件 419 13.3.2 应用程序设计 419 13.3.3 设计网络组件 420 13.3.4 组件设计 422 13.3.5 组件集成 423 13.3.6 建立组件 424 13.4 应用程序设计范例的研究 425 13.4.1 明确问题 425 13.4.2 应用程序的设计 426 13.4.3 设计权衡 430 13.4.4 设计小结 431 13.5 小结 432 第14章 COM、COM+和ASP 433 14.1 COM的内容 433 14.1.1 COM无处不在 434 14.1.2 COM+的三个方面 434 14.1.3 COM开发工具 436 14.2 接口 437 14.2.1 组件 438 14.2.2 缺省接口 438 14.2.3 GUID—实体的确定名称 439 14.2.4 接口的详细内容 439 14.2.5 IUnknown接口 442 14.2.6 使用IDispatch—后期绑定 442 14.2.7 组件信息的中央存储库 444 14.3 COM+运行期的变化 446 14.3.1 配置的和非配置的组件 447 14.3.2 COM+类别 447 14.4 创建一个ASP COM组件 447 14.4.1 组件的接口 449 14.4.2 创建组件 449 14.5 小结 457 第15章 COM+应用程序 458 15.1 微软组件服务(COM+) 458 15.1.1 拦截原理 459 15.1.2 COM+结构 461 15.1.3 组件/对象的生存期和状态 464 15.2 单元和线程模型 467 15.2.1 线程 467 15.2.2 单元 468 15.2.3 线程模型的属性 470 15.2.4 线程模型和范围 472 15.3 COM+应用程序 476 15.3.1 ObjectContext接口 476 15.3.2 Visual Basic COM+组件 479 15.4 组件服务 487 15.5 组件的调试 494 15.6 小结 496 第16章 ASP脚本组件 497 16.1 使用WSC的环境 497 16.2 一个Windows脚本组件 498 16.2.1 发展历史 498 16.2.2 HelloWorld WSC 499 16.3 WSC的结构 499 16.3.1 描述层 500 16.3.2 脚本层 503 16.3.3 运行期层 504 16.4 可用的接口 504 16.5 编写一个ASP脚本组件 505 16.5.1 AspTable组件 506 16.5.2 使用AspTable对象 511 16.6 ASP脚本组件的特点 513 16.6.1 选择正确的工具 513 16.6.2 脚本组件与VBScript类的比较 513 16.7 小结 514 第17章 用C++建立ASP组件 515 17.1 C++语言 515 17.1.1 C++简史 515 17.1.2 使用C++的原因 516 17.1.3 不使用C++的原因 517 17.1.4 把ASP技巧转到C++上 517 17.2 VC++库 518 17.2.1 微软基础类库 518 17.2.2 活动模板库 519 17.2.3 标准模板库 519 17.3 建立一个C++服务器组件 521 17.3.1 问题 522 17.3.2 设计 522 17.3.3 实现 522 17.3.4 测试 531 17.3.5 错误处理 533 17.3.6 调试 535 17.4 小结 537 第18章 对C++组件的进一步讨论 538 18.1 与ASP进行接口 538 18.2 与COM+进行接口 543 18.2.1 IObjectContext的事务处理 546 18.2.2 IObjectControl的对象缓冲 547 18.3 数据访问 547 18.3.1 通过C++使用ADO 548 18.3.2 OLE DB消费者模板 553 18.3.3 使用ADO,还是使用OLE DB消费者 模板 557 18.4 小结 557 第19章 ASP和事务性Web应用程序 558 19.1 事务处理的定义 558 19.1.1 保持应用程序的完整性 558 19.1.2 ACID属性 559 19.2 分布式事务 560 19.3 事务性COM+应用程序 562 19.3.1 Transaction Support属性 562 19.3.2 活动与同步 564 19.3.3 事务的生存期 567 19.3.4 事务访问自定义资源 573 19.4 COM+事务和IIS 574 19.4.1 事务性ASP 574 19.4.2 事务性ASP中的ObjectContext 对象 575 19.4.3 事务事件 576 19.5 用ASP和COM+进行联机订购 577 19.5.1 业务需要 577 19.5.2 设计 577 19.5.3 实现 578 19.5.4 程序验证 585 19.6 小结 586 第20章 ASP和消息队列服务器 587 20.1 消息排队的定义 587 20.1.1 MSMQ的定义 588 20.1.2 使用MSMQ和ASP的原因 589 20.2 MSMQ结构 591 20.2.1 服务器类型 591 20.2.2 客户类型 592 20.2.3 站点布局图 593 20.2.4 投递选项 593 20.3 管理MSMQ 594 20.3.1 增加队列 594 20.3.2 消息队列的属性 596 20.3.3 消息属性 597 20.4 MSMQ对象模型 599 20.4.1 MSMQApplication对象 600 20.4.2 MSMQQuery对象 600 20.4.3 MSMQQueueInfos集合 601 20.4.4 MSMQQueueInfo对象 601 20.4.5 MSMQQueue对象 602 20.4.6 MSMQMessage对象 603 20.4.7 MSMQEvent对象 605 20.4.8 MSMQTransaction对象 605 20.4.9 MSMQTransactionDispenser对象 605 20.4.10 MSMQCoordinatedTransaction Dispenser对象 606 20.4.11 访问MSMQ的其他方式 606 20.5 用于MSMQ的MS DTC事务 606 20.6 高级MSMQ消息 606 20.7 COM+队列化组件 609 20.8 扩展联机订货的示例 610 20.8.1 在组件中添加MSMQ 610 20.8.2 处理队列化订单 612 20.9 小结 614 第21章 ADSI和AD介绍 615 21.1 ADSI的用途 615 21.2 必需的软件 616 21.3 AD的内部结构 617 21.3.1 目录里的对象和属性 617 21.3.2 对象的类 618 21.3.3 容器和叶 619 21.3.4 模式 619 21.3.5 继承 620 21.4 目录的特征 622 21.4.1 优化查找 622 21.4.2 查找功能 622 21.4.3 开放性 622 21.4.4 事务处理 622 21.4.5 复制 623 21.5 常见目录 623 21.5.1 Netscape目录服务器 623 21.5.2 IIS元数据库 623 21.5.3 Exchange Server目录和站点服务器 成员目录 623 21.5.4 Netware目录服务 623 21.5.5 WinNT 623 21.6 ADSI的适用范围 624 21.7 LDAP的适用范围 625 21.8 绑定到一个ADSI对象 626 21.8.1 ADSI对象和Directory对象 626 21.8.2 查看ADSI对象的属性 627 21.9 浏览目录:枚举容器的所有子对象 628 21.10 使用模式定义的属性 631 21.11 Get和GetEx 634 21.12 PropertyBrowseEx示例 634 21.13 AD与WinNT提供者比较 636 21.14 属性缓存 638 21.15 设置属性的值 639 21.16 目录的验证 639 21.17 查找 641 21.17.1 用以查找ADSI目录的命令字符串 644 21.17.2 查找过滤器 645 21.18 小结 646 第22章 ASP和用于NT服务器的CDO 647 22.1 CDO是什么 647 22.2 使用CDO的原因 647 22.2.1 NT服务器下的CDO 648 22.2.2 CDO与CDONTS的比较 648 22.2.3 CDO for Windows 2000 649 22.3 CDONTS库 649 22.3.1 引用类型库 650 22.3.2 NewMail对象 651 22.3.3 其他的CDONTS对象 658 22.3.4 设置SMTP Service 666 22.3.5 SMTP Service配置 667 22.4 在ASP应用程序中使用CDONTS 670 22.4.1 简单邮箱应用程序 671 22.4.2 Inbox应用程序 676 22.5 小结 683 第23章 ASP、CDO与Exchange Server 684 23.1 CDO库 684 23.1.1 通用/共享对象 684 23.1.2 Session对象 695 23.1.3 文件夹 697 23.1.4 地址列表 698 23.1.5 信息存储 699 23.1.6 消息 699 23.1.7 通用属性 704 23.2 邮件客户端应用程序 705 23.2.1 概述 705 23.2.2 服务器配置 705 23.2.3 类型库 707 23.2.4 Login.asp 707 23.2.5 FrameSet.asp 708 23.2.6 FolderList.asp 709 23.2.7 MessageList.asp 712 23.2.8 ViewMessage.asp 715 23.2.9 SendMessage.asp 719 23.2.10 SendMail.asp 722 23.2.11 Logout.asp 725 23.3 小结 725 第24章 服务器防护 726 24.1 安全的定义 726 24.1.1 Internet上的安全问题 726 24.1.2 安全策略 728 24.2 Windows 2000的防护 730 24.2.1 磁盘格式 730 24.2.2 Window 2000安全检查列表 730 24.2.3 防火墙和代理服务器 737 24.3 IIS 5.0的防护 739 24.3.1 IIS的安全配置 739 24.3.2 验证方法 742 24.4 SQL Server 7.0和ODBC的安全 744 24.4.1 保护sa帐号 744 24.4.2 为数据库访问建立替代帐号 744 24.5 建立自己的ASP安全系统 746 24.6 小结 755 第25章 证书的使用 756 25.1 安全性、一致性和可靠性 756 25.2 证书与证书机构 759 25.3 从证书机构获取证书 762 25.4 使用证书 768 25.4.1 使用服务器证书 768 25.4.2 使用个人证书 768 25.4.3 使用软件发行者证书 769 25.4.4 客户证书映射 769 25.4.5 证书的生存期 772 25.5 管理证书 772 25.5.1 证书存储 772 25.5.2 IIS证书管理 774 25.5.3 IE证书管理 775 25.5.4 Outlook Express证书管理 776 25.6 证书与ASP 776 25.7 成为自己的证书机构 777 25.7.1 Certificate Services 778 25.7.2 建立证书机构 779 25.7.3 管理证书机构 779 25.7.4 与证书机构的交互 780 25.8 小结 781 第26章 优化ASP的性能 782 26.1 衡量工作性能的标准 782 26.1.1 吞吐量 782 26.1.2 响应时间 783 26.1.3 衡量性能的其他指标 784 26.2 改善服务器的硬件性能 786 26.2.1 内存 786 26.2.2 硬盘 787 26.2.3 网络带宽 787 26.2.4 CPU 787 26.2.5 更多的服务器 787 26.3 性能的调整 787 26.3.1 解决性能问题 787 26.3.2 强度工具 788 26.3.3 脚本优化 789 26.3.4 会话和应用程序状态 789 26.3.5 安全套接字层 793 26.3.6 进程隔离 793 26.3.7 缓存技术和字典 794 26.3.8 数据库性能 795 26.3.9 真正充足的时间:MSMQ 796 26.3.10 脚本与组件的比较 796 26.3.11 多处理器的可扩展性 798 26.3.12 线程闸门 800 26.3.13 设置元数据库 801 26.3.14 性能计数器 802 26.4 各种小技巧 805 26.4.1 Stm的重命名技巧 805 26.4.2 避免嵌套的包含 806 26.4.3 不使用非脚本映射的文件扩展名 806 26.4.4 关闭脚本调试器 806 26.4.5 最小化脚本块转换 806 26.4.6 不要混用脚本引擎 807 26.4.7 在“费时”操作前使用Response.Is Client Connected 807 26.4.8 使用<OBJECT>标记 808 26.4.9 不使用OnStartPage和OnEndPage 808 26.4.10 发挥客户端的作用 808 26.5 小结 808 第27章 建立多服务器网站 810 27.1 多服务器网站 810 27.1.1 Web阵的不足 811 27.1.2 Web阵基础 812 27.2 负载平衡模式 813 27.2.1 DNS循环复用法 813 27.2.2 硬件负载平衡 814 27.2.3 TCP/IP Network Load Balancing 817 27.2.4 复合方式 819 27.2.5 High Availability Clustering Service 820 27.2.6 COM+Dynamic Load Balancing 822 27.3 状态管理 824 27.3.1 不管理状态 824 27.3.2 客户端存储 824 27.3.3 亲和性 824 27.3.4 在一个中心服务器上存储状态 826 27.4 安全 826 27.5 小结 827 第28章 XML驱动的报纸实例 829 28.1 报纸的剖析 829 28.1.1 作者写稿 831 28.1.2 编辑修改 832 28.1.3 读者阅读 834 28.1.4 结构要求 835 28.2 网站的大脑:settings.xml 835 28.2.1 元素 836 28.2.2 元素 836 28.2.3 元素 836 28.2.4 准备global.asa 837 28.2.5 插入导航 838 28.2.6 元素 840 28.3 网站的躯干:headlines.asp 841 28.3.1 ShowHeadlines过程 842 28.3.2 ShowBlurbs过程 843 28.3.3 ShowBriefs过程 844 28.3.4 ShowStory过程 846 28.3.5 使用ShowStory过程 849 28.3.6 主页 852 28.4 管理工具 854 28.4.1 setting_stories.asp 854 28.4.2 setting_glossary.asp 858 28.4.3 关于admin文件夹的其他内容 861 28.5 系统集成 861 28.6 小结 864 附录A ASP 3.0的对象模型 865 附录B 脚本运行期库对象 871 附录C 微软服务器组件 877 附录D 错误代码 881 附录E ADO 2.5对象模型 893 附录F ADO 2.5常量 902 附录G 有用的资料 920 附录H p2p.wrox.com 926
书名: ASP 3高级编程 英文原书名: Professional Active Server Pages 3.0 作者: Richard Anderson Chris Blexrud 译者: 刘福太 张立民 金慧琴 梁发麦 书号: 7-111-07678-8 页码: 925 定价: ¥89.00 会员价: ¥80.10 币值: 801 出版社: 机械工业出版社 出版日期: 2000-10-30 包含在Windows 2000中的Active Server Pages 3.0 (ASP 3.0)是Microsoft公司推出的又一个支持Internet的功能强大的网页制作软件包,除了继续保持其适应于各种浏览器的基本特征外,与ASP 2.0相比,功能更加强大,目前已成为开发Internet应用程序的理想选择。本书第1~7章介绍了ASP的基础知识、ASP 3.0的变化、ASP的对象模型、使用ASP脚本和外部组件的所要求的基本概念。第8~12章介绍了通用数据的访问和连接问题,包括ADO、UDA和XML。第13~18章介绍了使用ASP建立组件的问题,以及COM和COM+如何改变组件的环境。第19~23章是关于ASP与BackOffice类应用软件的结合问题,如Microsoft Message Queue Server、Collaborative Data Objects、Microsoft Exchange和Active Directory等等。第24~27章是在企业环境中使用ASP的安全性、性能和可扩展性等问题。第28章和附录提供了一个XML驱动的在线报纸示例和大量以表格形式给出的相关资料。本书不仅为Internet开发人员提供了详实的开发编程指导,也是致力于Internet网络应用与开发的广大科技人员和大专院校相关专业师生的一本重要的自学、教学参考书。 译者序 前言 第1章 ASP基础 1 1.1 ASP的起源 1 1.1.1 HTML的起源 2 1.1.2 动态页面的起源 2 1.2 ASP如何与IIS连接 5 1.2.1 关于应用程序的映射 5 1.2.2 处理一个ASP文件 7 1.3 相关设置问题和管理 12 1.3.1 IIS的安装 12 1.3.2 IIS管理工具 15 1.3.3 常见的管理任务 18 1.4 ASP 3.0对象模型概要 22 1.4.1 对象环境概念 22 1.4.2 ASP内置的对象 23 1.5 ASP 3.0中的新特性 24 1.5.1 ASP 3.0新特性概要 24 1.5.2 对ASP 2.0的改进 26 1.5.3 VBScript 5.0中的新特性 28 1.5.4 JScript 5.0中的新特性 30 1.5.5 其他的新特性 31 1.6 小结 32 第2章 请求和响应的处理 33 2.1 客户端和服务器的交流 33 2.2 Request和Response对象 35 2.2.1 Request对象成员的概述 35 2.2.2 Response对象成员概述 36 2.3 使用Form和QueryString集合 38 2.3.1 访问ASP集合的一般技术 38 2.3.2 访问和更新Cookies集合 44 2.3.3 Form和QueryString的差异 46 2.3.4 查看Request和Response对象内容 47 2.3.5 ASP中cookie的使用 52 2.4 使用ServerVariables集合 53 2.4.1 “自引用”页面 54 2.4.2 检测浏览器的版本 55 2.4.3 检测浏览器的语言 56 2.4.4 其他有用的ServerVariables集合的值 57 2.5 其他Request和Response技巧 57 2.5.1 连接、缓冲和页面重定向的管理 58 2.5.2 操作HTTP报头 60 2.5.3 使用客户证书 65 2.5.4 读写二进制数据 67 2.5.5 创建定制的日志消息 67 2.6 小结 69 第3章 ASP应用程序与会话 70 3.1 Web上的状态管理 70 3.1.1 状态的准确定义 70 3.1.2 状态的重要性 71 3.1.3 在Web上创建状态 71 3.2 Web应用程序的定义 73 3.2.1 ASP应用程序的定义 73 3.2.2 ASP会话的定义 81 3.3 ASP的Application对象和Session对象 83 3.3.1 ASP的Application对象成员概述 84 3.3.2 ASP的Session对象成员概述 85 3.3.3 使用Application和Session的事件 86 3.3.4 活动中的ASP Application对象 89 3.3.5 活动中的ASP Session对象 93 3.4 小结 96 第4章 服务器进程和ASP Server对象 98 4.1 动态页中服务器端的处理 98 4.2 服务器端的包含指令 100 4.2.1 不可思议的ASP #include指令 100 4.2.2 服务器端包含指令概要 102 4.2.3 服务器端包含指令的例子 104 4.3 ASP Server对象 109 4.3.1 ASP Server对象成员概述 109 4.3.2 创建其他对象的实例 110 4.3.3 执行其他的网页 114 4.3.4 Server对象的错误处理 118 4.3.5 获取Server对象的路径信息 125 4.3.6 使用Server对象格式化数据 127 4.4 小结 132 第5章 脚本运行期库对象 134 5.1 脚本对象的定义 134 5.1.1 不同类型的对象和组件 134 5.1.2 VBScript和JScript脚本对象 135 5.2 创建对象和组件实例 136 5.2.1 使用Server.CreateObject方法 136 5.2.2 使用<OBJECT>元素 136 5.2.3 Server.CreateObject与<OBJECT>的 区别 138 5.2.4 组件线程模型 138 5.2.5 引用对象类型库 139 5.2.6 在客户端上创建对象实例 140 5.3 Scripting.Dictionary对象 141 5.3.1 创建和使用Dictionary对象 141 5.3.2 Dictionary对象示例 143 5.4 Scripting.FileSystemObject对象 148 5.4.1 FileSystemObject对象成员概要 149 5.4.2 使用驱动器 151 5.5 Scripting.TextStream对象 161 5.5.1 创建TextStream对象的方法 161 5.5.2 TextStream对象成员概要 163 5.5.3 TextStream对象举例 165 5.6 小结 168 第6章 活动服务器组件 169 6.1 脚本对象与服务器组件的比较 169 6.2 ASP/IIS可安装组件 171 6.2.1 使用示例页面 172 6.2.2 Content Linking组件 173 6.2.3 Ad Rotator组件 177 6.2.4 Counters组件 182 6.2.5 Browser Capabilities组件 184 6.2.6 Content Rotator组件 188 6.2.7 Page Counter组件 190 6.2.8 Permission Checker组件 191 6.2.9 MyInfo 组件 194 6.2.10 Tools组件 195 6.2.11 Logging Utility组件 200 6.3 第三方服务器组件 204 6.3.1 BrowserHawk组件 204 6.3.2 SA-FileUp组件 206 6.3.3 RegEx注册表访问组件 207 6.4 小结 209 第7章 调试和错误处理 210 7.1 错误的种类 211 7.1.1 语法或“编译”错误 211 7.1.2 语义或“运行期”错误 215 7.2 各种运行期错误 218 7.2.1 逻辑错误 219 7.2.2 脚本运行期错误 220 7.2.3 ASP和SSI的运行期错误 221 7.2.4 客户端脚本错误 222 7.3 防止错误 224 7.4 处理错误 229 7.4.1 ASP缺省错误处理器 229 7.4.2 VBScript错误处理 230 7.4.3 JScript错误处理 232 7.4.4 使用IIS错误页面 232 7.5 程序调试—发现及处理错误 238 7.5.1 常规调试技术 238 7.5.2 Microsoft Script Debugger 239 7.5.3 获得ASP的帮助和支持 242 7.6 小结 243 第8章 ADO基础 244 8.1 ADO的定义 244 8.1.1 OLE DB和ADO的体系结构 245 8.1.2 消费者与提供者 246 8.1.3 提供者和驱动程序 247 8.2 ADO 2.5对象模型 248 8.2.1 Connection对象 248 8.2.2 Command对象 249 8.2.3 Recordset对象 249 8.2.4 Record对象 249 8.2.5 Stream对象 250 8.2.6 集合 250 8.2.7 ADO常数 252 8.3 连接到数据存储 252 8.3.1 连接字符串 253 8.3.2 使用包含文件 256 8.3.3 使用连接状态 256 8.3.4 连接语法 257 8.3.5 连接的例子 257 8.3.6 连接缓冲池 257 8.4 记录集 258 8.4.1 光标 258 8.4.2 锁定 260 8.4.3 创建记录集 261 8.4.4 过滤记录集 265 8.4.5 查找记录 266 8.4.6 修改记录 267 8.5 管理错误 269 8.5.1 Errors集合 269 8.5.2 ASP页面中的ADO错误 270 8.6 小结 272 第9章 连接、命令和过程 273 9.1 Connection对象 273 9.1.1 返回一个记录集 273 9.1.2 操作命令 274 9.2 Command对象 274 9.2.1 返回记录集 274 9.2.2 操作命令 275 9.2.3 存储过程 276 9.3 优化 289 9.3.1 常用的ADO技巧 289 9.3.2 对象变量 289 9.3.3 高速缓存大小 290 9.3.4 数据库设计 290 9.3.5 数据高速缓存 291 9.4 数据整形 293 9.4.1 使用数据整形 294 9.4.2 性能 297 9.5 小结 298 第10章 ASP与客户端数据 299 10.1 断开连接的记录集 299 10.2 远程数据服务 300 10.2.1 RDS服务器组件 300 10.2.2 RDS客户组件 301 10.2.3 支持RDS的浏览器 301 10.2.4 数据源对象 301 10.2.5 数据绑定 308 10.2.6 更新数据 316 10.3 在服务器和客户之间传输数据 319 10.3.1 基于服务器的组件 319 10.3.2 DataSpace对象 320 10.3.3 使用服务器端组件的优点 322 10.3.4 注册服务器端组件 322 10.3.5 自定义处理器 323 10.4 记录集分页 326 10.4.1 利用ASP页面分页记录集 327 10.4.2 利用ADO分页 330 10.4.3 利用SQL Server完成记录集分页 333 10.4.4 数据分页小结 336 10.5 使用数据库中的图像 337 10.6 小结 338 第11章 使用XML数据 339 11.1 XML的定义 339 11.1.1 XML和HTML的差别 340 11.1.2 标记和元素 343 11.1.3 模式和文档类型定义 346 11.1.4 名称空间 347 11.1.5 文档对象模型 348 11.2 ADO和IE5中的XML 354 11.2.1 存储为XML形式的ADO记录集 354 11.2.2 ADO记录集名称空间 355 11.2.3 ADO记录集模式 355 11.2.4 IE数据岛和绑定 358 11.2.5 以XML数据格式保存记录集 361 11.2.6 打开记录集 365 11.3 用XSL来设计XML 367 11.4 相关的领域 371 11.5 用于SQL Server的XML技术预览 372 11.6 小结 373 第12章 通用数据访问 375 12.1 UDA的构想 375 12.2 OLE DB提供者 376 12.2.1 Indexing Service 376 12.2.2 活动目录 383 12.2.3 Exchange Server 386 12.2.4 定制的提供者 386 12.3 半结构化的数据 389 12.3.1 Record对象 390 12.3.2 Internet 发布 390 12.3.3 WebDAV 401 12.4 企业数据 401 12.4.1 Access和SQL Server二者取一 402 12.4.2 SNA Server和传统数据访问 404 12.5 企业中的ASP 405 12.6 小结 407 第13章 组件和网络应用程序结构 408 13.1 分布式应用程序的结构 408 13.1.1 分层应用程序 408 13.1.2 Windows DNA 410 13.1.3 Windows DNA服务 411 13.1.4 网络结构 413 13.2 组件 415 13.2.1 组件定义 415 13.2.2 COM和COM+ 415 13.2.3 组件服务 416 13.2.4 以数据为中心的组件 417 13.2.5 业务组件 417 13.2.6 用户界面组件 418 13.3 组件应用程序设计 418 13.3.1 转换到组件 419 13.3.2 应用程序设计 419 13.3.3 设计网络组件 420 13.3.4 组件设计 422 13.3.5 组件集成 423 13.3.6 建立组件 424 13.4 应用程序设计范例的研究 425 13.4.1 明确问题 425 13.4.2 应用程序的设计 426 13.4.3 设计权衡 430 13.4.4 设计小结 431 13.5 小结 432 第14章 COM、COM+和ASP 433 14.1 COM的内容 433 14.1.1 COM无处不在 434 14.1.2 COM+的三个方面 434 14.1.3 COM开发工具 436 14.2 接口 437 14.2.1 组件 438 14.2.2 缺省接口 438 14.2.3 GUID—实体的确定名称 439 14.2.4 接口的详细内容 439 14.2.5 IUnknown接口 442 14.2.6 使用IDispatch—后期绑定 442 14.2.7 组件信息的中央存储库 444 14.3 COM+运行期的变化 446 14.3.1 配置的和非配置的组件 447 14.3.2 COM+类别 447 14.4 创建一个ASP COM组件 447 14.4.1 组件的接口 449 14.4.2 创建组件 449 14.5 小结 457 第15章 COM+应用程序 458 15.1 微软组件服务(COM+) 458 15.1.1 拦截原理 459 15.1.2 COM+结构 461 15.1.3 组件/对象的生存期和状态 464 15.2 单元和线程模型 467 15.2.1 线程 467 15.2.2 单元 468 15.2.3 线程模型的属性 470 15.2.4 线程模型和范围 472 15.3 COM+应用程序 476 15.3.1 ObjectContext接口 476 15.3.2 Visual Basic COM+组件 479 15.4 组件服务 487 15.5 组件的调试 494 15.6 小结 496 第16章 ASP脚本组件 497 16.1 使用WSC的环境 497 16.2 一个Windows脚本组件 498 16.2.1 发展历史 498 16.2.2 HelloWorld WSC 499 16.3 WSC的结构 499 16.3.1 描述层 500 16.3.2 脚本层 503 16.3.3 运行期层 504 16.4 可用的接口 504 16.5 编写一个ASP脚本组件 505 16.5.1 AspTable组件 506 16.5.2 使用AspTable对象 511 16.6 ASP脚本组件的特点 513 16.6.1 选择正确的工具 513 16.6.2 脚本组件与VBScript类的比较 513 16.7 小结 514 第17章 用C++建立ASP组件 515 17.1 C++语言 515 17.1.1 C++简史 515 17.1.2 使用C++的原因 516 17.1.3 不使用C++的原因 517 17.1.4 把ASP技巧转到C++上 517 17.2 VC++库 518 17.2.1 微软基础类库 518 17.2.2 活动模板库 519 17.2.3 标准模板库 519 17.3 建立一个C++服务器组件 521 17.3.1 问题 522 17.3.2 设计 522 17.3.3 实现 522 17.3.4 测试 531 17.3.5 错误处理 533 17.3.6 调试 535 17.4 小结 537 第18章 对C++组件的进一步讨论 538 18.1 与ASP进行接口 538 18.2 与COM+进行接口 543 18.2.1 IObjectContext的事务处理 546 18.2.2 IObjectControl的对象缓冲 547 18.3 数据访问 547 18.3.1 通过C++使用ADO 548 18.3.2 OLE DB消费者模板 553 18.3.3 使用ADO,还是使用OLE DB消费者 模板 557 18.4 小结 557 第19章 ASP和事务性Web应用程序 558 19.1 事务处理的定义 558 19.1.1 保持应用程序的完整性 558 19.1.2 ACID属性 559 19.2 分布式事务 560 19.3 事务性COM+应用程序 562 19.3.1 Transaction Support属性 562 19.3.2 活动与同步 564 19.3.3 事务的生存期 567 19.3.4 事务访问自定义资源 573 19.4 COM+事务和IIS 574 19.4.1 事务性ASP 574 19.4.2 事务性ASP中的ObjectContext 对象 575 19.4.3 事务事件 576 19.5 用ASP和COM+进行联机订购 577 19.5.1 业务需要 577 19.5.2 设计 577 19.5.3 实现 578 19.5.4 程序验证 585 19.6 小结 586 第20章 ASP和消息队列服务器 587 20.1 消息排队的定义 587 20.1.1 MSMQ的定义 588 20.1.2 使用MSMQ和ASP的原因 589 20.2 MSMQ结构 591 20.2.1 服务器类型 591 20.2.2 客户类型 592 20.2.3 站点布局图 593 20.2.4 投递选项 593 20.3 管理MSMQ 594 20.3.1 增加队列 594 20.3.2 消息队列的属性 596 20.3.3 消息属性 597 20.4 MSMQ对象模型 599 20.4.1 MSMQApplication对象 600 20.4.2 MSMQQuery对象 600 20.4.3 MSMQQueueInfos集合 601 20.4.4 MSMQQueueInfo对象 601 20.4.5 MSMQQueue对象 602 20.4.6 MSMQMessage对象 603 20.4.7 MSMQEvent对象 605 20.4.8 MSMQTransaction对象 605 20.4.9 MSMQTransactionDispenser对象 605 20.4.10 MSMQCoordinatedTransaction Dispenser对象 606 20.4.11 访问MSMQ的其他方式 606 20.5 用于MSMQ的MS DTC事务 606 20.6 高级MSMQ消息 606 20.7 COM+队列化组件 609 20.8 扩展联机订货的示例 610 20.8.1 在组件中添加MSMQ 610 20.8.2 处理队列化订单 612 20.9 小结 614 第21章 ADSI和AD介绍 615 21.1 ADSI的用途 615 21.2 必需的软件 616 21.3 AD的内部结构 617 21.3.1 目录里的对象和属性 617 21.3.2 对象的类 618 21.3.3 容器和叶 619 21.3.4 模式 619 21.3.5 继承 620 21.4 目录的特征 622 21.4.1 优化查找 622 21.4.2 查找功能 622 21.4.3 开放性 622 21.4.4 事务处理 622 21.4.5 复制 623 21.5 常见目录 623 21.5.1 Netscape目录服务器 623 21.5.2 IIS元数据库 623 21.5.3 Exchange Server目录和站点服务器 成员目录 623 21.5.4 Netware目录服务 623 21.5.5 WinNT 623 21.6 ADSI的适用范围 624 21.7 LDAP的适用范围 625 21.8 绑定到一个ADSI对象 626 21.8.1 ADSI对象和Directory对象 626 21.8.2 查看ADSI对象的属性 627 21.9 浏览目录:枚举容器的所有子对象 628 21.10 使用模式定义的属性 631 21.11 Get和GetEx 634 21.12 PropertyBrowseEx示例 634 21.13 AD与WinNT提供者比较 636 21.14 属性缓存 638 21.15 设置属性的值 639 21.16 目录的验证 639 21.17 查找 641 21.17.1 用以查找ADSI目录的命令字符串 644 21.17.2 查找过滤器 645 21.18 小结 646 第22章 ASP和用于NT服务器的CDO 647 22.1 CDO是什么 647 22.2 使用CDO的原因 647 22.2.1 NT服务器下的CDO 648 22.2.2 CDO与CDONTS的比较 648 22.2.3 CDO for Windows 2000 649 22.3 CDONTS库 649 22.3.1 引用类型库 650 22.3.2 NewMail对象 651 22.3.3 其他的CDONTS对象 658 22.3.4 设置SMTP Service 666 22.3.5 SMTP Service配置 667 22.4 在ASP应用程序中使用CDONTS 670 22.4.1 简单邮箱应用程序 671 22.4.2 Inbox应用程序 676 22.5 小结 683 第23章 ASP、CDO与Exchange Server 684 23.1 CDO库 684 23.1.1 通用/共享对象 684 23.1.2 Session对象 695 23.1.3 文件夹 697 23.1.4 地址列表 698 23.1.5 信息存储 699 23.1.6 消息 699 23.1.7 通用属性 704 23.2 邮件客户端应用程序 705 23.2.1 概述 705 23.2.2 服务器配置 705 23.2.3 类型库 707 23.2.4 Login.asp 707 23.2.5 FrameSet.asp 708 23.2.6 FolderList.asp 709 23.2.7 MessageList.asp 712 23.2.8 ViewMessage.asp 715 23.2.9 SendMessage.asp 719 23.2.10 SendMail.asp 722 23.2.11 Logout.asp 725 23.3 小结 725 第24章 服务器防护 726 24.1 安全的定义 726 24.1.1 Internet上的安全问题 726 24.1.2 安全策略 728 24.2 Windows 2000的防护 730 24.2.1 磁盘格式 730 24.2.2 Window 2000安全检查列表 730 24.2.3 防火墙和代理服务器 737 24.3 IIS 5.0的防护 739 24.3.1 IIS的安全配置 739 24.3.2 验证方法 742 24.4 SQL Server 7.0和ODBC的安全 744 24.4.1 保护sa帐号 744 24.4.2 为数据库访问建立替代帐号 744 24.5 建立自己的ASP安全系统 746 24.6 小结 755 第25章 证书的使用 756 25.1 安全性、一致性和可靠性 756 25.2 证书与证书机构 759 25.3 从证书机构获取证书 762 25.4 使用证书 768 25.4.1 使用服务器证书 768 25.4.2 使用个人证书 768 25.4.3 使用软件发行者证书 769 25.4.4 客户证书映射 769 25.4.5 证书的生存期 772 25.5 管理证书 772 25.5.1 证书存储 772 25.5.2 IIS证书管理 774 25.5.3 IE证书管理 775 25.5.4 Outlook Express证书管理 776 25.6 证书与ASP 776 25.7 成为自己的证书机构 777 25.7.1 Certificate Services 778 25.7.2 建立证书机构 779 25.7.3 管理证书机构 779 25.7.4 与证书机构的交互 780 25.8 小结 781 第26章 优化ASP的性能 782 26.1 衡量工作性能的标准 782 26.1.1 吞吐量 782 26.1.2 响应时间 783 26.1.3 衡量性能的其他指标 784 26.2 改善服务器的硬件性能 786 26.2.1 内存 786 26.2.2 硬盘 787 26.2.3 网络带宽 787 26.2.4 CPU 787 26.2.5 更多的服务器 787 26.3 性能的调整 787 26.3.1 解决性能问题 787 26.3.2 强度工具 788 26.3.3 脚本优化 789 26.3.4 会话和应用程序状态 789 26.3.5 安全套接字层 793 26.3.6 进程隔离 793 26.3.7 缓存技术和字典 794 26.3.8 数据库性能 795 26.3.9 真正充足的时间:MSMQ 796 26.3.10 脚本与组件的比较 796 26.3.11 多处理器的可扩展性 798 26.3.12 线程闸门 800 26.3.13 设置元数据库 801 26.3.14 性能计数器 802 26.4 各种小技巧 805 26.4.1 Stm的重命名技巧 805 26.4.2 避免嵌套的包含 806 26.4.3 不使用非脚本映射的文件扩展名 806 26.4.4 关闭脚本调试器 806 26.4.5 最小化脚本块转换 806 26.4.6 不要混用脚本引擎 807 26.4.7 在“费时”操作前使用Response.Is Client Connected 807 26.4.8 使用<OBJECT>标记 808 26.4.9 不使用OnStartPage和OnEndPage 808 26.4.10 发挥客户端的作用 808 26.5 小结 808 第27章 建立多服务器网站 810 27.1 多服务器网站 810 27.1.1 Web阵的不足 811 27.1.2 Web阵基础 812 27.2 负载平衡模式 813 27.2.1 DNS循环复用法 813 27.2.2 硬件负载平衡 814 27.2.3 TCP/IP Network Load Balancing 817 27.2.4 复合方式 819 27.2.5 High Availability Clustering Service 820 27.2.6 COM+Dynamic Load Balancing 822 27.3 状态管理 824 27.3.1 不管理状态 824 27.3.2 客户端存储 824 27.3.3 亲和性 824 27.3.4 在一个中心服务器上存储状态 826 27.4 安全 826 27.5 小结 827 第28章 XML驱动的报纸实例 829 28.1 报纸的剖析 829 28.1.1 作者写稿 831 28.1.2 编辑修改 832 28.1.3 读者阅读 834 28.1.4 结构要求 835 28.2 网站的大脑:settings.xml 835 28.2.1 元素 836 28.2.2 元素 836 28.2.3 元素 836 28.2.4 准备global.asa 837 28.2.5 插入导航 838 28.2.6 元素 840 28.3 网站的躯干:headlines.asp 841 28.3.1 ShowHeadlines过程 842 28.3.2 ShowBlurbs过程 843 28.3.3 ShowBriefs过程 844 28.3.4 ShowStory过程 846 28.3.5 使用ShowStory过程 849 28.3.6 主页 852 28.4 管理工具 854 28.4.1 setting_stories.asp 854 28.4.2 setting_glossary.asp 858 28.4.3 关于admin文件夹的其他内容 861 28.5 系统集成 861 28.6 小结 864 附录A ASP 3.0的对象模型 865 附录B 脚本运行期库对象 871 附录C 微软服务器组件 877 附录D 错误代码 881 附录E ADO 2.5对象模型 893 附录F ADO 2.5常量 902 附录G 有用的资料 920 附录H p2p.wrox.com 926
VB6.0动态加载ActiveX控件漫谈 深圳 罗汉军 罗德昌 熟悉VB的朋友对使用ActiveX控件一定不会陌生,众多控件极大地方便了编程, 但唯一的缺陷是不能动态加载控件,必须在设计时通过引用,将控件放置在窗体上。 VB6.0已能够解决该问题,只是帮助中没有明确说明,并且没有描述到一些关键功 能,由于以前的版本中可以动态创建进程外服务:如果对象是外部可创建的,可在 Set 语句中用 New 关键字、CreateObject 或 GetObject 从部件外面将对象引用赋予变 量。 如果对象是从属对象,则需使用高层对象的方法,在 Set 语句中指定一个对象引 用: Dim xlApp1 As Excel.Application Set xlApp1 = New Excel.Application 或 Dim xlApp As Object '定义存放引用对象的变量。 Set xlApp = CreateObject("excel.application") xlApp.Visible = True ---- 这些语法很容易造成误导,以为动态加载ActiveX控件也是此方法,可能有朋 友也象我一样利用CreateObject尝试了无数次,却无功而返,不知微软公司是出于何种 考虑,动态加载ActiveX控件是扩展控件集合的方式实现,通过实际摸索,终于就如 何实现动态ActiveX控件找出了一条切实可行的方法,下面以一个具体的实例来详细说 明。 一、ActiveX控件 ---- ActiveX 控件是 Visual Basic 工具箱的扩充部分。使用 ActiveX 控件的方 法与使用其它标准内装的控件,如 CheckBox 控件,完全一样。在程序中加入 ActiveX 控件后,它将成为开发和运行环境的一部分,并为应用程序提供新的功能。 ---- ActiveX 部件通过客户端/服务器关系与应用程序— 及与部件相互之间— 交 互作用。客户端是使用部件功能的应用程序代码或部件。服务器是部件及其关联的对象。 例如,假设应用程序使用 ActiveX 控件来提供一个标准的雇员窗体,供公司的多种 应用程序使用。提供雇员窗体的 ActiveX 控件就是服务器,使用这个控件的应用程序 就是服务器的客户端。 二、加载方法 ---- VB6.0中对Controls 集合进行了扩展,以前版本中Controls 集合在窗体上列 举出已加载的控件,这在迭代过程中是很有用的。Controls 集合标识一个叫做 Controls的内在窗体级变量。如果忽略可选的 object 所在处的整数,则关键字 Controls 必须包括在内。我们通常在窗口中使用如下代码: Text1.Text="Hello, world" 其实也可以使用如下代码达到同一目的: Controls(1).Text="Hello, world" ---- 在VB6.0中除了原来的Clear、Remove 方法外(很奇怪,为什么微软在VB5.0中 只提供这两种方法,而没有提供Add方法,因为没有Add,这两种方法也就没什么用处), 增加了Add方法,该方法就是用于动态加载控件的: Controls.Add(progid as String, Name as String); progid: ActiveX部件的ProgID,如:"VB.CheckBox"; Name:ActiveX部件加载后的名称,如: "MyCheckBox"; 若要在窗体上添加一个名为MyButton的按钮,可以使用: dim oControl as Object '窗体级变量 注意:这里声明为Object对象类型 Private Sub LoadControl() Set oControl = Controls.Add ("VB.CommandButton", "MyButton") oControl.Left = 10 oControl.Top = 10 oControl.Visible = True '使控件可见 End Sub ---- 这是VB6.0的标准语法,它在例程中也是如此演示的,不过该方法虽然现实了 控件的动态加载,按钮显示在窗体上,可以象普通按钮一样按下去,但加载的控件不能 预先设计响应事件代码,如:事件Sub MyButton_Click()将是非法的,当然,可以将要 响应事件封装在控件内部。就编程的观点来看该方法没什么大的用处,开发ActiveX 控件的目的是为了资源共享,为了被其他开发人员利用,所以要提供必要的事件接口, 显然利用该方法不行,通过分析VBControls等相关对象,找出VBControlExtender对象 与EventInfo相结合能提供事件陷井捕捉,VBControlExtender对象对动态添加控件特 别有用,它提供了一套通用的属性、方法、事件给开发人员,它的一个突出特点是能编 程设计控件的事件,熟习类编程的朋友对带事件对象声明一定不会陌生: ---- Dim WithEvents objElemt as CElemtVBControlExtender也不例外,声明的 语法一样,只不过它有个特殊的事件ObjectEvent(Info As EventInfo),它能捕捉到对 象使用RaiseEvent产生的所有事件,EventInfo数据结构映射了事件的名称、参数个数 和参数的值。VBControlExtender和 EventInfo相结合,采用Select Case 就可以预先 将不同类对象事件放置一起,各自独立运作。将上面的代码改写一下就能提供Click 事件了: ---- Dim WithEvents oControl As VBControlExtender '带事件声明声明之后您 就可以在代码窗口的左上角的对象下拉框中发现该对象出现了,也就是说,该对象有了 事件或方法了,它的事件有DragDrop,DragOver ,LostFocus ,GotFocus , ObjectEvent和Validate,其中ObjectEvent是通用的事件捕捉。 Private Sub LoadControl() Set oControl = Controls.Add ("VB. CommandButton", "MyButton") oControl.Visible = True End Sub Private Sub oControl_ObjectEvent(Info As EventInfo) Select Case Info.Name Case "Click" 'Click事件 '您可以添加处理Click事件代码 MsgBox "您按了MyButton!" Case Else ' 其他事件 ' Handle unknown events here. End Select End Sub ---- 当然对微软提供的标准控件能采用该方法添加,大家都不会怀疑,但自己开 发的控件也能吗?答案是肯定的,我们可以用一个实际的例子进行说明。 三、实例描述 ---- 假设一个本地网络的监控系统,需要在原理图与实物示意图间切换,原理图 包括组网结构、传输资源、监控主机等,而实物示意图包括路由器、设备、采集器等, 当然两种图的事件要一致,如双击某个设备图形将显示给设备的实时数据等,为了简化 维护,将原理图与实物示意图封装成ActiveX控件,由于每种图需要加载许多图形控 件,消耗资源较大,不能同时加载,需要将其分解为两个控件,在切换时首先卸载一个 控件,然后加载另一个控件,所以要实现动态加载ActiveX控件。 ---- 原理图控件为--Theory.ocx ,对应工程为CTheory; ---- 实物图控件为---Fact.ocx ,对应工程为CFact; ---- 注意:为了简化,在设计控件时不设置许可证关键字。 ---- 实物图控件上的图形对象可以被拖动,拖动后的位置信息通过事件 ChangePosition来通知拥有该控件的窗体,以便下次加载能显示在最后位置,实物 图和原理图控件都有双击事件完成的工作相同,其他事件此处忽略。 ---- 四、具体示例 ---- 1、准备工作 ---- 对控件Theory.ocx 、Fact.ocx 进行注册(利用Regsvr32.exe注册); ---- 建立窗体frmTest.frm ,在窗体上放置按钮cmdLoadOcx—“原理图” ---- 2、声明窗体级变量与加载函数LoadControl Dim WithEvents oControl As VBControlExtender '地图仿真控件对象 Dim mblnTheory As Boolean '是否显示原理图 Private Function LoadControl(intType As Integer) If Not oControl Is Nothing Then '首先判断对象是否存在,若存在则卸载 Controls.Remove("MapView") '卸载控件,此操作非常重要 End If If intType = 0 Then Set oControl = Controls.Add ("CTheory. Theory", "MapView") Else Set oControl = Controls.Add ("CFact.Fact", "MapView") End If oControl.Height = 3500 oControl.Width = 6500 oControl.Top = 100 oControl.Visible = True End Function Private Sub Form_Load() mblnTheory = True End Sub ---- 3、为按钮cmdLoadOcx编写代码 Private Sub cmdLoadOCX_Click() If mblnTheory Then Call LoadControl(0) mblnTheory = False cmdLoadOCX.Caption = "实物图" Else Call LoadControl(1) mblnTheory = True cmdLoadOCX.Caption = "原理图" End If End Sub ---- 4、为事件ChangePosition编写代码 Private Sub oControl_ObjectEvent (Info As EventInfo) Select Case Info.Name Case "ChangePosition" MsgBox CStr(Info.EventParamters.Item( 1).Value) + ":" + _ CStr(Info.EventParamters.Item(2).Value) Case "DbClick" '双击处理代码 Case Else ' End Select End Sub ---- 注意: EventInfo的参数EventParamters集合中是以1开始的,一般来说,微 软新的集合一般是以1开始的,而旧的是以0开始的,如RdoErrors.Item(0)。 ---- 5、关闭窗口前卸载控件 Private Sub Form_Unload(Cancel As Integer) Controls.Remove("MapView") Set oControl = Nothing End Sub ---- 6、特别注意 ---- 通过Controls.Add方法添加的ActiveX控件一定不能在该工程中有该控件的任 何引用,否则系统将出错。 四、小结 ---- 通过使用动态加载ActiveX控件使用庞大的应用程序变得很小,将不同的 ActiveX控件进行各种组合,使应用程序更加灵活多变,如您的应用系统要处理三十种门禁, 而某个具体的用户可能只有一种或两种门禁,根本没必要首先将所有门禁包含到应用 中,可将各个门禁独立封装,只安装注册需要的组件,就象Windows的自定义安装一样。 微软的未来技术基础是分布式的组件技术(DCOM),将会把代码的重用发挥得淋漓尽致。 您不妨试一试动态加载,也许会产生令您惊喜的效果! ---- 本代码在Win98、VB6.0(英文版)上编译、运行。

863

社区成员

发帖
与我相关
我的任务
社区描述
VB COM/DCOM/COM+
c++ 技术论坛(原bbs)
社区管理员
  • COM/DCOM/COM+社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧