您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > VB编写ActiveX DLL实现ASP编程
VB编写ActiveXDLL实现ASP编程ASP是目前一种广为应用的用来快速构建动态WEB站点的编程语言,默认的内置开发语言是VBScript,由于ASP和微软Windows系列操作系统的结合非常的好,使得ASP已经成为了NT开发平台上面进行WEB开发的首选语言和环境。他有着简单易学,方便快速开发的种种优点,但是他也有着致命的弱点,就是他是脚本语言解释执行的,速度会受到一定的影响,更为关键的是,使用ASP来开发完成一个项目之后,整个项目在交付客户使用的时候,是会连带所有的ASP脚本源代码的,也就无法将商业程序保密了,源代码泄漏会给自己造成很大的损失,虽然微软也相应的推出了用来加密ASP程序的软件,但是有着诸多的限制,以及会降低程序运行的速度和二次开发调试的难度,难道ASP做出来的项目就真的要暴露所有的源代码吗?当然了,答案当然是否定的,因为世界上没有绝对不可能的事情,接下来就跟随我来看看如何利用VB的ActiveXDLL来实现将ASP程序封装起来吧,也就是我们可以使用ActiveXDLL来完成所有ASP能完成的事情,而ActiveXDLL是编译好的DLL文件,别人是无法得知你的源代码的,也就保证的自己的商业机密和核心技术,并且达到同样的效果,使用完全封装的ActiveXDLL会比完全适用ASP脚本语言的执行速度要快很多,尤其是大运算量的时候跟为明显!经过我们的具体测试,在操纵10000条数据库记录的时候,封装成为ActiveXDLL的WEB应用程序比纯ASP代码的应用程序,速度上面要快大约21%左右,在目前国内过于缓慢的网络来讲,速度就是一个WEB站点的很关键的一部分。并且采用了ActiveXDLL来开发WEB程序,要比单纯使用ASP好得多,毕竟ASP只能使用VBScript来开发,无法享用VB大量的优点,而ActiveXDLL则可以充分利用VB里面所有的特性。下面我们先来看看什么是ActiveXDLL吧。ActiveX是微软提出的广泛应用于Windows系列的一种代码封装技术,提高了程序代码的可重用性,加快了程序项目的开发速度,一般被称为“组件”。在VB6的集成开发环境当中,我们可以看到一下几种ActiveX项目:1、ActiveXEXE这是在“过程外”运行的ActiveX/COM服务器组件,也就是说他们运行的过程和初始化组件的客户机代码不同。尽管可以用ASP访问ActiveXEXE,但是不推荐改动IIS元库,该库允许所有的可执行文件由服务器上运行的脚本代码启动。2、ActiveXOCXs这些特殊的组件把主机应用程序显示和操作组件所需的附加支持包含在GUI环境中。还可以把OCX组件放在网页当中。但是,OCX是应用程序界面,不可以使用ASP来创建的。3、ActiveX文档DLL和ActiveX文档EXEActive文档可以在OLE文件箱应用程序中,例如IE或者OfficeBinder,显示VB表单。但他们在ASP不能应用。4、ActiveXDLLs这些ActiveX/COM组件和初始化组件的客户机在同一个进程中运行。而我们要讨论的ActiveXDLL正是整个组件。一般微软的附加组件和其他的一些第三方厂家提供的各种组件都是这种类型的ActiveXDLL,但是并不全是使用VB编写的,同样可以使用VC/JAVA等等语言来开发。探讨完了什么是ActiveXDLL,我们开始正式编写我们自己的ActiveXDLL,以便来实现ASP中的同样功能,众所周知,ASP内置了Response、Request、Server、Session、Application五个对象,其实这五个内置对象正是IIS控制台初始化的五个ActiveXDLL组件,既然IIS可以初始化这五个组件用于ASP中,我们当然也可以直接在我们的ActiveXDLL中引用这些组件来实现我们的编程,也就是说我们可以在VB应用程序中通过引用这些组件来实现访问ASP内置对象的功能。只要你安装了PWS4或者IIS4以上的WEB服务器,你就拥有了一个名称叫做“MicrosoftActiveServerPagesObject”的对象库,我们可以在VB的ActiveXDLL应用中引用这个对象库,通过引用这个对象库,我们就获得了一个对象(类):ScriptingContext,这个对象也正是我们整个文章探讨的核心对象。对象库内的关系如下:对象库类类成员ASPTypeLibraryScriptingContextApplicationRequestResponseSessionServer通过上面的关系图,我们就可以很容易理解类ScriptingContent。下面我们来看一个具体的例子吧:1、使用VB6创建一个新的ActiveXDLL项目2、引用“MicrosoftActiveServerPagesObject”对象库。3、创建两个组件事件:OnStartPage以及OnEndPage4、在事件OnStartPage中创建类ScriptingContent的一个引用。5、实例化类ScriptingContent。Test.cls(类实现)'对象的声明DimrpasResponseDimrqasRequestDimapasApplicationDimsrasServerDimsnasSession'当组件被创建的时候会触发这个事件PublicSubOnStartPage(myscasScriptingContent)'进行对象的实例化setrp=mysc.Responsesetrq=mysc.Requestsetsr=mysc.Serversetap=mysc.Applicationsetsn=mysc.Sessionrp.writebrActiveXDLL组件已经被创建了!brEndSub'当组件被销毁的时候触发这个事件PublicSubOnEndPage()Rp.writebrActiveXDLL组件已经被销毁!br'销毁对象Setrp=nothingSetrq=nothingSetsr=nothingSetap=nothingSetsn=nothingEndSub'定义我们自己的一个组件方法PublicSubHelloWorld()Rp.writeH1Hello,World!/H1EndSub这样,我们就创建可以访问ASP内置对象的ActiveXDLL了。我们命名这个组件项目为first,在VB中间编译这项目成为一个DLL文件first.dll,并且我们在系统中注册这个DLL文件。接下来,我们需要一个简单的几乎没有什么代码的ASP程序来调用这个组件:test.asphtmlheadtitle测试ActiveXDLL/title/headbody%Dimtestme'创建我们刚才编译成功的组件,一旦创建这个组件,同时会在叶面输出文字“ActiveXDLL组件已经被'创建了!”settestme=server.createobject(first.test)'调用组件的方法testme.HelloWorld'注销组件,在注销的同时,会自动在叶面显示“ActiveXDLL组件已经被销毁!”settestme=nothing%/body/html通过上面简单的例子,我们可以看到使用ActiveXDLL同样可以实现和ASP同样的功能,并且带来的代码保密和程序运行更加高效的优点。ActiveXDLL和纯ASP有着各自的优点和缺点,只要我们合理的运用这两种技术,比如适当的将商业逻辑封装在ActiveXDLL中,或者在需要保密的地方使用DLL封装技术,一定可以编写出高效快速的WEB应用程序。用VB编写ASP组件(DLL)用vb编写asp组件(dll)示例下面,将演示如何使用vb制作asp的dll组件1.启动你的vb,选择activexdll图标,然后在点击菜单的工程引用,接着在弹出的引用窗口从中选择microsoftactiveserverpagesobjectlibrary.2.给工程和类重命名,在asp中调用时,就全靠它了^_^!我们的工程名改为aspdll,类名为demo.在asp中调用的方法是:setobjreference=server.createobject(工程名.类名)本例调用的相应代码如下:setobjreference=server.createobject(aspdll.demo)调用的方法和一般常见的,比如fso等组件的方法一模一样.心动了吧,呵呵,下面我们继续....3.接着,我们开始编写代码,打开我们刚才新建工程类窗口,第一步,先声明我们要用到的变量.主要是在vb声明替代asp几大对象的变量名,定义这asp的几大对象后,我们就可以像在asp环境中调用类似request,server等这样的几大对象了.(声明的变量名完全可以和asp对象名一样)代码如下:'**********************************************privatemyscriptingcontextasscriptingcontextprivatemyapplicationasapplicationprivatemyrequestasrequestprivatemyresponseasresponseprivatemyserverasserverprivatemysessionassession'**********************************************4.声明完变量后,我们必须在类中写onstartpage子函数.本函数的作用是当用户访问一个带有本组件的asp文件时,iis就会把scriptingcontext传送给我们vb组件对象.这个scriptingcontext包括了全部的asp方法和属性.这样,就使得我们有能力访问所有asp的对象.代码如下:'*****************************************************************publicsubonstartpage(passedscriptingcontextasscriptingcontext)setmyscriptingcontext=passedscriptingcontextsetmyapplication=myscriptingcontext.applicationsetmyrequest=myscriptingcontext.requestsetmyresponse=myscriptingcontext.responsesetmyserver=myscriptingcontext.serversetmysession=myscriptingcontext.sessionendsub'*****************************************************************通过上面的函数,我们在asp中调用本组件后,上面的几大对象就完全可以像平时我们在asp使用一样了,举个例子:在asp中实现接收提交的表单值并输出屏幕:%formvalue=request.form(username)response.write(你提交的用户名是&myformvalue&,欢迎您!)%在vb中实现方法是:formvalue=myrequest.form(username)myresponse.write(你提交的用户名是&myformvalue&,欢迎您!)5.相对应于onstartpage函数,我们还要编写一个关闭onstartpage中对象的onendpage函数,代码如下:'*********************************publicsubonendpage()setmyscriptingcontext=nothingsetmyapplication=nothingsetmyrequest=nothings
本文标题:VB编写ActiveX DLL实现ASP编程
链接地址:https://www.777doc.com/doc-6134485 .html