当前位置: 首页 > >

ASP封装

发布时间:

?

ASP 是目前一种广为应用的用来快速构建动态 WEB 站点的编程语言,默认的内置研发语言是 VBScript,由于 ASP 和微软视窗系统系列操作系统的结合非常的好,使得 ASP 已成为了 NT 研发 *台上面进行 WEB 研发的最佳选择语言和环境。他有着简单易学,方便快速研发的种种好处,不 过他也有着致命的弱点,就是他是脚本语言解释执行的,速度会受到一定的影响,更为关键的是, 使用 ASP 来研发完成一个项目之后,整个项目在交付客户使用的时候,是会连带所有的 ASP 脚本 原始码的,也就无法将商业程式保密了,原始码泄漏会给自己造成非常大的损失,虽然微软也相 应的推出了用来加密 ASP 程式的软件,不过有着诸多的限制,及会降低程式运行的速度和二次研 发调试的难度,难道 ASP 做出来的项目就真的要暴露所有的原始码吗? 当然了,答案当然是否定的,因为世界上没有绝对不可能的事情,接下来就跟随我来看看怎么利 用 VB 的 ActiveX DLL 来实现将 ASP 程式封装起来吧,也就是我们能使用 ActiveX DLL 来完成所 有 ASP 能完成的事情,而 ActiveX DLL 是编译好的 DLL 文件,别人是无法得知你的原始码的,也 就确保的自己的商业机密和核心技术,并且达到同样的效果,使用完全封装的 ActiveX DLL 会比 完全适用 ASP 脚本语言的执行速度要快非常多,尤其是大运算量的时候跟为明显!经过我们的具 体测试,在操纵 10000 条数据库记录的时候,封装成为 ActiveX DLL 的 WEB 应用程式比纯 ASP 代码的应用程式, 速度上面要快大约 21%左右, 在目前国内过于缓慢的网络来讲, 速度就是个 WEB 站点的非常关键的一部分。并且采用了 ActiveX DLL 来研发 WEB 程式,要比单纯使用 ASP 好得 多,毕竟 ASP 只能使用 VBScript 来研发,无法享用 VB 大量的好处,而 ActiveX DLL 则能充分利 用 VB 里面所有的特性。 下面我们先来看看什么是 ActiveX DLL 吧。 ActiveX 是微软提出的广泛应用于视窗系统系列的 一种代码封装技术, 提高了程式代码的可重用性, 加快了程式项目的研发速度, 一般被称为“组件”。 在 VB6 的集成研发环境当中,我们能看到一下几种 ActiveX 项目: 1、ActiveX EXE 这是在“过程外”运行的 ActiveX/COM 服务器组件,也就是说他们运行的过程和初始化组件的 客户机代码不同。尽管能用 ASP 访问 ActiveX EXE,不过不推荐改动 IIS 元库,该库允许所有的可 执行文件由服务器上运行的脚本代码启动。 2、ActiveX OCXs 这些特别的组件把主机应用程式显示和操作组件所需的附加支持包含在 GUI 环境中。还能把 OCX 组件放在网页当中。不过,OCX 是应用程式界面,不能使用 ASP 来创建的。 3、ActiveX 文件 DLL 和 ActiveX 文件 EXE Active 文件能在 OLE 文件箱应用程式中,例如 IE 或 Office Binder,显示 VB 表单。但他们在 ASP 不能应用。 4、ActiveX DLLs 这些 ActiveX/COM 组件和初始化组件的客户机在同一个进程中运行。而我们要讨论的 ActiveX DLL 正是整个组件。 一般微软的附加组件和其他的一些第三方厂家提供的各种组件都是这 种类型的 ActiveX DLL,不过并不全是使用 VB 编写的,同样能使用 VC/JAVA 等等语言来研发。

探讨完了什么是 ActiveX DLL,我们开始正式编写我们自己的 ActiveX DLL,以便来实现 ASP 中的同样功能,众所周知,ASP 内置了 Response、Request、Server、Session、Application 五个对 象,其实这五个内置对象正是 IIS 控制台初始化的五个 ActiveX DLL 组件,既然 IIS 能初始化这五 个组件用于 ASP 中, 我们当然也能直接在我们的 ActiveX DLL 中引用这些组件来实现我们的编程, 也就是说我们能在 VB 应用程式中通过引用这些组件来实现访问 ASP 内置对象的功能。 只 要 你 安 装 了 PWS4 或 IIS4 以 上 的 WEB 服 务 器 , 你 就 拥 有 了 一 个 名 称 叫 做 “Microsoft Active Server Pages Object”的对象库,我们能在 VB 的 ActiveX DLL 应用中引用这个对 象库,通过引用这个对象库,我们就获得了一个对象(类) :ScriptingContext,这个对象也正是我 们整个文章探讨的核心对象。对象库内的关系如下: 对象库 类 类成员

ASPTypeLibrary ScriptingContext Application Request Response Session Server 通过上面的关系图,我们就能非常容易理解类 ScriptingContent。下面我们来看一个具体的例 子吧: 1、 使用 VB6 创建一个新的 ActiveX DLL 项目 2、 引用“Microsoft Active Server Pages Object”对象库。 3、 创建两个组件事件:OnStartPage 及 OnEndPage 4、 在事件 OnStartPage 中创建类 ScriptingContent 的一个引用。 5、 实例化类 ScriptingContent。 Test.cls (类实现) 对象的声明 Dim rp as Response Dim rq as Request Dim ap as Application

Dim sr as Server Dim sn as Session 当组件被创建的时候会触发这个事件 Public Sub OnStartPage(mysc as ScriptingContent) 进行对象的实例化 set rp=mysc.Response set rq=mysc.Request set sr=mysc.Server set ap=mysc.Application set sn=mysc.Session rp.write "<br>ActiveX DLL 组件已被创建了!<br>" End Sub 当组件被销毁的时候触发这个事件 Public Sub OnEndPage() Rp.write "<br>ActiveX DLL 组件已被销毁!<br>" 销毁对象 Set rp=nothing Set rq=nothing Set sr=nothing Set ap=nothing Set sn=nothing End Sub 定义我们自己的一个组件方法

Public Sub HelloWorld() Rp.write "<H1>Hello,World!</H1>" End Sub 这样,我们就创建能访问 ASP 内置对象的 ActiveX DLL 了。我们命名这个组件项目为 first, 在 VB 中间编译这项目成为一个 DLL 文件 first.dll, 并且我们在系统中注册这个 DLL 文件。 接下来, 我们需要一个简单的几乎没有什么代码的 ASP 程式来调用这个组件: test.asp <html> <head> <title>测试 ActiveX DLL</title> </head> <body> <% Dim testme 创建我们刚才编译成功的组件,一旦创建这个组件,同时会在叶面输出文字“ActiveX DLL 组 件已被 创建了!” set testme=server.createobject("first.test") 调用组件的方法 testme.HelloWorld 注销组件,在注销的同时,会自动在叶面显示“ActiveX DLL 组件已被销毁!” set testme=nothing %> </body> </html>

通过上面简单的例子,我们能看到使用 ActiveX DLL 同样能实现和 ASP 同样的功能,并且带 来的代码保密和程式运行更加高效的好处。ActiveX DLL 和纯 ASP 有着各自的好处和缺点,只要 我们合理的运用这两种技术,比如适当的将商业逻辑封装在 ActiveX DLL 中,或在需要保密的地 方使用 DLL 封装技术,一定能编写出高效快速的 WEB 应用程式。
?




友情链接: