ActiveX 组件

作者：书生

当你用 ASP 编写服务器端应用程序时，必须依靠 ActiveX 组件来强大 Web 应用程序的功能，譬如：你需要连接数据库，对数据库进行在线操作等等，本文从本篇开始将陆续给大家介绍 ASP ActiveX 组件的使用方法。
从今天开始我们将正式学习 ASP 的精华部分 --ActiveX 组件。事实上，当你用 ASP 编写服务器端应用程序时，必须依靠 ActiveX 组件来强大 Web 应用程序的功能，譬如：你需要连接数据库，对数据库进行在线操作或者对 WEB 服务器上的文件系统进行操作，亦或你需要一个 WEB 广告交换程序，所有这一切你都必须通过调用 ASP 内建的 ActiveX 组件或自己编写所需的组件来完成。
那么，究竟什么是 ActiveX 组件呢？它又是如何运作的呢？其实 ActiveX 组件是一个存在于 WEB 服务器上的文件，该文件包含执行某项或一组任务的代码，组件可以执行公用任务，这样就不必自己去创建执行这些任务的代码。例如，股票行情收报机组件可以在 Web 页上显示最新的股票报价。当你在 WEB 服务器上安装完 ASP 环境后，就可以直接使用它自带的几个常用组件，如 Database Access 组件。当然你也可以从第三方开发者处获得可选的组件 , 也可以编写自己的组件。你可以利用组件作为脚本和基于 Web 应用程序的基本构造块，只要知道如何访问组件提供的对象，即使你是位编写脚本的新手，也可以在不了解组件运作方式的情况下编写 ASP 程序。总而言之， ActiveX 组件使您不用学习复杂的编程就能够写出强大的 WEB 服务器端脚本。如果您是位 Web 应用程序的开发者，可以使用任何支持组件对象模型（COM）的语言来编写组件，如， C、 C++、 Java 或 Visual Basic。如果你熟悉 COM 编程， ActiveX 组件就是 Automation 服务器。但是要在 Web 服务器上运行， ActiveX 组件不能有图形用户接口元素，如 Visual Basic 的 MsgBox 函数。组件是可以重复使用的。在 Web 服务器上安装了组件后，就可以从 ASP 脚本、 ISAPI 应用程序、服务器上的其他组件或由另一种 COM 兼容语言编写的程序中调用该组件。
那么我们在 ASP 中应该如何调用组件呢？如前所述，组件是包含在动态链接库 (.dll) 或可执行文件 (.exe) 中的可执行代码。组件可以提供一个或多个对象以及对象的方法和属性。要使用组件提供的对象，我们首先要创建对象的实例并将这个新的实例分配变量名。使用 ASP 的 Server.CreateObject 方法可以创建对象的实例。接着，使用脚本语言的变量分配指令为对象实例命名。创建对象实例时，必须提供实例的注册名称“PROGID”。如下要创建一个 Ad Rotator 对象的实例 :

< % Set MyAds = Server.CreateObject("MSWC.AdRotator") %>

我们必须使用 ASP 的 Server.CreateObject 方法来创建对象实例，否者 ASP 无法跟踪脚本语言中对象的使用。

使用 HTML< OBJECT> 标签同样可以创建对象实例，但必须为 RUNAT 属性提供服务器值，同时也要为将在脚本语言中使用的变量名提供 ID 属性组。使用注册名 (PROGID) 或注册号码 (CLSID) 可以识别该对象。下面的例子使用注册名 (PROGID) 创建 Ad Rotator 对象的实例：

< OBJECT RUNAT=Server ID=MyAd PROGID="MSWC.AdRotator">< /OBJECT>

下面列出了 ASP 可安装的常用组件。

Ad Rotator | 创建一个 AdRotator 对象，该对象可按指定计划在同一页上自动轮换显示广告。
Browser Capabilities | 创建一个 BrowserType 对象，该对象决定访问 Web 站点的每个浏览器的性能、类型及版本。
Database Access | 提供用 ActiveX Data Objects (ADO) 对数据库的访问。
Content Linking | 创建一个 NextLink 对象，该对象可生成 Web 页内容列表，并象书一样将各页顺续连接。
File Access 组件 | 提供文件的输入输出访问。
Collaboration Data Objects for NTS 组件 | 可以快速、简便的在 Web 页上添加收发邮件功能。该组件只适用于 Internet Information Server for Windows NT® Server 。
MyInfo | 创建一个 MyInfo 对象，该对象追踪个人信息，例如站点管理员的姓名、地址及显示选择。
Counters | 创建一个 Counters 对象，该对象可以创建、保存、增加或检索任意数量的独立计数器。
Content Rotator | 自动翻转 Web 主页上的 HTML 内容字符串。
Page Counter | 记录并显示 Web 页被打开的次数。

现在 WEB 广告几乎充斥了整个网络，那么究竟如何在你自己的网站上建立一个符合广告领域标准功能的广告系统呢？答案是利用 ASP AD Rotator 组件 ! 它允许在每次访问 ASP 页面时在页面上显示新的广告，并且提供了很强的功能，例如 : 旋转显示在页面上的广告图象的能力、跟踪特定广告显示次数的能力以及跟踪客户端在广告上单击次数的能力。 AD Rotator 组件的工作是通过读取 AD Rotator 计划文件来完成的，该文件包括与要显示的图象文件的地点有关的信息以及每个图象的不同属性，下面就是一个标准的 AD Rotator 计划文件 :
---ADROT.TXT---
REDIRECT /scripts/adredir.asp
WIDTH 440
HEIGHT 60
BORDER 1
*
ads/homepage/chinabyte.gif
http://www.chinabyte.com/
Check out the IT site
2
ads/homepage/gamichlg.gif
-
Sponsored by Flyteworks
3
ads/homepage/asp.gif
http:// www.aspallian.com/
Good ASP site on net
3
ads/homepage/spranklg.gif
http://www.clocktower.com/
The #1 Sports site on the net
2
该段代码的前四行包含广告的全局设置。 Redirect 行指出广告将成为其热连接的 URL, 注意这里不是为广告本身指定的 URL，而是将调用的中间页面的 URL，这样我们就可以通过这个中间页面跟踪单击广告的次数。该 Redirect URL 将与包含两个参数的查询字符串一起调用 : 特定广告主页的 URL 和图象文件的 URL。星号上面的其余三行简单说明如何显示广告。前两行以像素为单位指定网页上广告的宽度和高度，默认值是 440 和 60 个像素。后一行，同样是以像素为单位指定广告四周超链接的边框宽度 , 默认值是 1 个像素。如果将该参数设置为 0，则将没有边框。
星号下面的行以每四行为一个单位描述每个广告的细节。在此例中共有 16 行，描述四个广告。每个广告的描述包含图象文件的 URL、广告的主页 URL（如果广告客户没有主页，请在该行写上一个连字符“-”，指出该广告没有链接）和图象的替代文字以及指定该页与其他页交替显示频率的数值。
图象是重定向页面的热连接，它在查询字符串中设置了两个值， url=/scripts/adredir.asp 以及 image=/ads/homepage/asp.gif。要确定广告显示的频率，可以将计划文件中所有广告的权值相加，在该例中总数是 10，那么 aspallian 的广告权值为 3，这意味着 AdRotator 组件每调用十次，它则显示 3 次。
重定向文件是用户创建的文件。它通常包含用来解析由 AdRotator 对象发送的查询字符串的脚本并将用户重定向到与用户所单击的广告所相关的 URL。用户也可以将脚本包含进重定向文件中，以便统计单击某一特定广告的用户的数目并将这一信息保存到服务器上的某一文件中。增加计数器和重定向用户是通过下面两行 ASP 脚本来实现的 :
< %
Counter.Increment(request.querystring("url"))
response.redirect(request.querystring("url"))
%>

现在我们看一下 Ad Rotator 组件是如何在页面中使用的，首先必须使用 Server.CreateObject 方法实例化 Ad Rotator 对象。 Ad Rotator 组件的 PROGID 属性是 MSWC.AdRotator。完整的代码如下 :
< % Set ad = Server.CreateObject("MSWC.AdRotator") %>
< %= ad.GetAdvertisement("/ads/adrot.txt") %>

Ad Rotator 组件支持的唯一方法是 GetAdvertisement，它只有一个参数 :AdRotator 计划文件的名称。注意指向文件的路径是从当前虚拟目录的相对路径，物理路径是不允许的。 GetAdvertisement 方法从 Rotator 计划文件中获取下一个计划广告的详细说明并将其格式化为 HTML 格式。下面的 HTML 由 GetAdvertisement 方法生成且被添加到网页的输出中，以便显示 Rotator 计划文件中的下一个广告。
< A HREF="http://www.chinabyte.com/scripts/adredir.asp?http://www.aspallian.com/">< IMG
SRC="http://www.chinabyte.com/ads/homepage/asp.gif" ALT="Good ASP site on net" WIDTH=440 HEIGHT=60 BORDER=1>< /A>

使用 AdRotator 组件我们可以直接通过对象属性而不是计划文件中的设置来直接控制某些广告特性，其可用属性如下 :

Border 指定广告边框的大小。

Clickable 指定广告是否为超链接。

TargetFrame 指定显示广告的框架的名称。
< %
Set ad = Server.CreateObject("MSWC.AdRotator")
ad.Border = 0
ad.Clickable = true
ad.TargetFrame = AdFrame
ad.GetAdvertisement("/ads/adrot.txt")
%>
通过上面的学习，相信你已经能够熟练运用 ASP 的内建 AdRotator 组件为自己的网站建立一个标准的广告显示程序了。你是否难以相信一切竟是如此的简单？其实真正能令你震惊的还在后头呢，敬请关注下一篇 ASP ActiveX 组件大揭密！