330 likes | 419 Views
第十章 ASP 与 COM 技术. 10.1 COM 理论基础. 组件的特性 ( 1 )组件必须有明确的接口定义 (specification) ; ( 2 )组件必须包含一个具体实现接口的部分 (implementation) ; ( 3 )组件是可装配的 (packaged up) ; ( 4 )组件可被分发安装 (deploy) ; ( 5 )组件必须遵循一定的规范 (standard) 。. 代码复用的发展历程. 静态链接. 代码复用的发展历程. 动态链接. COM 组件模型.
E N D
10.1 COM理论基础 • 组件的特性 (1)组件必须有明确的接口定义(specification); (2)组件必须包含一个具体实现接口的部分(implementation); (3)组件是可装配的(packaged up); (4)组件可被分发安装(deploy); (5)组件必须遵循一定的规范(standard)。
代码复用的发展历程 • 静态链接
代码复用的发展历程 • 动态链接
COM组件模型 • COM(Component Object Model)是一种基于组件(Component)的软件模型,它是新的代码重用技术 • COM技术范畴包括规范与实现两部分:规范部分定义了组件之间的通信机制,这些规范不依赖于任何特定的语言和操作系统;实现部分即COM库,为COM规范的具体实现提供一些核心服务,由windows操作系统提供
COM接口 • 接口是对COM组件功能的逻辑分组,外界通过获取特定的接口指针使用组件所提供的功能。
COM的基本术语 • COM库 • 系统注册表 • 类型库 • 组件库文件(DLL或EXE)
查看组件对象接口 • 工程/引用…
查看组件对象接口 • 调出对象浏览器
COM标识 • GUID(Globally Unique Identifier) AE6105F0-4EB6-43C9-A0DA-4E2BB6EEBEF6 • COM中使用的GUID · 用以标识组件库的GUID被称为LIBID; · 用以标识组件的GUID被称为类标识符CLSID; · 用以标识接口的GUID称为IID; · ProgID是程序员给某个CLSID指定的一个友好的名称,特别地,VB用ProgID来标识组件。
VB中ProgID的确定 • ProgID=VB工程名.类模块名 • ProgID=BBSMoudle. BBSDisplay和BBSMoudle. BBSManager
10.2 ASP与COM • ASP 的局限性 • (1)程序代码与HTML文档混在一起,从而使对代码和网页的管理难以分开 • (2)ASP不容易实现程序的模块化,许多完成同样功能的代码会重复出现在不同的网页中,修改起来非常困难; • (3)ASP本身的脚本语言功能有限,速度慢
ASP 的局限性 • (4)ASP网站不易于扩充,多为两层结构
ASP 的局限性 • (5)纯ASP开发的网站可重用性差。 • 如何解决?
采用COM组件技术突破ASP的缺陷 • (1)COM组件实现了软件的可重用性: • (2)创建可伸缩(scalable)的分布式系统: • (3) COM组件可以访问和使用计算机上的所有资源 • (4)通过封装一些通用的功能,可以保证整个网站以一致的风格呈现
采用COM组件技术突破ASP的缺陷 • (5)将业务程序封装为可重复使用的COM组件,可同时支持C/S和B/S的Web 应用程序 • (6)可以用任何支持组件对象模型 (COM) 的编程语言
在ASP中创建组件对象的实例 • Server.CreateObject (ProgID)
10.3 VB开发COM组件 • 创建一个COM组件完成一个较为复杂的数学计算工作 : 求数学常数e的X次方
VB开发COM组件 • 分析:
VB开发COM组件 • 设计
VB开发COM组件 • 1.创建一个ActiveX DLL工程 • 2.编码实现属性X • 3.在类的初始化过程中初始化数据成员 • 4.向类模块中添加函数和过程 • 1)Factorial函数,用于完成阶乘计算 • 2)创建EX()函数。 • 5.编译
测试 COM组件 • MathTest.asp
发布COM组件 • (1)手动注册 regsvr32 组件库文件名(dll或Exe) • (2)手动取消注册: regsvr32 /u 组件库文件名(dll或Exe)
clsDatabase组件 • 将clsDatabase类转为COM组件 • 在ASP中应用clsDatabase组件对象 • 测试:testDll.asp
在VB组件中使用ASP内部对象 win2000中提供ASP内部对象的组件库
在COM组件中利用ASP内部对象实现访问计数功能 • 实例:UseIISObj工程
组件锁定 • 问题的出现 • 问题的出现原因
解决组件锁定问题 • 在调试网站阶段,设置网站的应用程序保护级别为“高”
解决组件锁定问题 • 停止IIS的IISADMIN服务
解决组件锁定问题 • 重编译组件 • 重新启动IIS服务: 在DOS窗口中键入: net start W3SVC 即可重新启动IIS。
课后练习 • 完成本章习题