用VB编写ActiveX DLL实现ASP编程

ASP是目前一种广为应用的用来快速构建动态WEB站点的编程语言,默认的内置开发语言是VBScript,由于ASP和微软Windows系列操作系统的结合非常的好,使得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是微软提出的广泛应用于Windows系列的一种代码封装技术,提高了程序代码的可重用性,加快了程序项目的开发速度,一般被称为“组件”。在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应用程序。 

时间: 2024-11-16 10:57:12

用VB编写ActiveX DLL实现ASP编程的相关文章

新人求助:关于使用VB编写ActiveX DLL

问题描述 问题一:请问在VS2003上怎么用VB编写ActiveXDLL(在其VB项目中没有这个选项).问题二:如果使用VB6.0编写ActiveXDLL,那么在类模块中,写构造函数.写属性.写委托等的声明时候都报错,请问这是什么原因?如下图:另外如果,要为当前类模块添加一个命名空间,如何添加?(我需要在另一个VB.net程序中引用该DLL)如下图这是DLL被引用的情况(VS2003中)这是我自己新建的VB6.0的ActiveXDLL 解决方案 解决方案二:一:(我只有VS2008,界面应该查不

如何将VB编写的DLL及frm转成C#的DLL及frm

问题描述 老板给了我一个文件夹里面都是VB写的DLL程序集以及后缀名为frm的文件啊让我转成C#语言的怎么转啊?求教啊! 解决方案 解决方案二:为什么要转?有什么区别么.解决方案三:引用1楼Z65443344的回复: 为什么要转?有什么区别么. 老板说转啊没办法解决方案四:VB没用过,frm是源文件?你只能打开源文件,把里面代码复制出来,粘到C#工程里,然后语法改改改,重新生成DLL解决方案五:上网查了一下,frm是vb的窗口文件不知道是不是你的dll的源文件c#类文件扩展名是.cs解决方案六:

用VB编写一个可以在ASP环境下调用的运行CMD命令的组件

有时我们在管理服务器时为了安全起见会禁用Windows Scripting Host,这样能防止某些不法用户利用WSH生成一个WebShell,对服务器造成很大的安全隐患.但如果我们又想禁用WSH,又想使用自己的WebShell用于服务器的管理怎么办呢?这里介绍了一种实现ASP中运行CMD并显示结果的组件编程.希望对大家能有所帮助. 首先我们新建一个ActiveDLL工程,命名为ASPCMD,新建的类命名为CMDShell.在"Project"的"Referenct"

用VB生成DLL封装ASP代码一个例子:连接access数据库等

access|封装|数据|数据库 封装为dll会带来很多的好处,主要包括只是产权的保护,以及效率和安全性能的提升.这个例子中被封装的dll文件可以隐藏access数据库的实际路径. VB生成的DLL封装ASP代码来连接数据库(Access). 本文用一个最简单的连接access数据库的例子来说明如何将asp代码封装为dll文件. 我们用vb,最常见的方式来封装asp代码. 我们需要封装的对象如下: 'Proconn.aspdim ProConnset ProConn=Server.CreateO

用VB生成DLL封装ASP代码,连接数据库

封装|连接数据库 这篇文章以VB生成的DLL封装ASP代码来连接数据库(以Access数据库为例). 一般情况下我们在用ASP连接Access的数据库时通常都会进行如下的操作 '//Proconn.asp<%dim ProConnset ProConn=Server.CreateObject("ADODB.CONNECTION")ProConn.Open "driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ

用VB生成DLL封装ASP连接数据库的代码

这篇文章以VB生成的DLL封装ASP代码来连接数据库(以Access数据库为例). 一般情况下我们在用ASP连接Access的数据库时通常都会进行如下的操作 '//Proconn.asp <% dim ProConn set ProConn=Server.CreateObject("ADODB.CONNECTION") ProConn.Open "driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=&quo

使用ASP中的VB ActiveX.dll文件

active|activex 没有人会在没有必要的情况下采用更加麻烦的方法来工作,除非是没有选择的余地.所以如果我要告诉你有一种简单的技术可以使你的ASP开发更加快速,并且更加高效率,你一定对此特别感兴趣.这一方法将从你的ASP页中的绝大部分business logic转移到一个Visual Basic ActiveX .dll以达到提高整个网页的性能. 使用ActiveX .dll的原因 在Visual Basic中建立一个.dll文件实际上是一个ActiveX对象.这种对象可以采用微软的组件

如何把ASP编写成DLL

这篇文章主要是把ASP代码变成组件,开发者不仅是加快了ASP的速度,而且也能保护自己的代码.下面,我们会来编写一个非常简单的组件,重点是知道怎样开发DLL组件,而不是其复杂的代码!这些都要靠你们自己以后的努力了. 服务器端组件 首先,服务器端的组件要有别于客户端的组件.客户端的组件是通过网络传输,依靠HTML来起作用.而且只能在IE上有用.但是服务器端的组件是运行在服务器端,它在服务器上执行各种操作.因此,所有的浏览器都能享用,它依靠的是服务器而不是浏览器. 当IIS被请求执行一个ASP程序,它

如何把ASP编写成DLL组件

这篇文章主要是把ASP代码变成组件,开发者不仅是加快了ASP的速度,而且也能保护自己的代码.下面,我们会来编写一个非常简单的组件,重点是知道怎样开发DLL组件,而不是其复杂的代码!这些都要靠你们自己以后的努力了. 服务器端组件 首先,服务器端的组件要有别于客户端的组件.客户端的组件是通过网络传输,依靠HTML来起作用.而且只能在IE上有用.但是服务器端的组件是运行在服务器端,它在服务器上执行各种操作.因此,所有的浏览器都能享用,它依靠的是服务器而不是浏览器. 当IIS被请求执行一个ASP程序,它