手把手教你选拔VB来成立ASP组件1,利用COM手艺的钣金件张开系统的花费
分类:面向对象

一、什么是组件 

图片 1

   ASP是目前一种广为应用的用来快速构建动态WEB站点的编程语言,默认的内置开发语言是VBScript,由于ASP和微软Windows系列操作系统的结合非常的好,使得ASP已经成为了NT开发平台上面进行WEB开发的首选语言和环境。他有着简单易学,方便快速开发的种种优点,但是他也有着致命的弱点,就是他是脚本语言解释执行的,速度会受到一定的影响,更为关键的是,使用ASP来开发完成一个项目之后,整个项目在交付客户使用的时候,是会连带所有的ASP脚本源代码的,也就无法将商业程序保密了,源代码泄漏会给自己造成很大的损失,虽然微软也相应的推出了用来加密ASP程序的软件,但是有着诸多的限制,以及会降低程序运行的速度和二次开发调试的难度,难道ASP做出来的项目就真的要暴露所有的源代码吗?

图片 2

  组件是包含可以更改的数据形式的代码的对象,是可用代码的封装,这些代码可以用来执行应用程序的一些功能,如从数据库中检索某些信息等功能。现在经常听人说起COM,其使它的意思是组件对象模型(Component Object Model),是由微软开发的可以在Windows平台上执行的对象模型,COM定义了组件之间的交互能力。为COM编写的组件可以重复使用,并不依赖于编写所用的语言,比如说,一个组件可以用VB,VC++甚至是Java来编写,总之,只要遵守COM规范就可以了。 

从微软推出了ASP(ActiveServerPage)后,它以其强大的功能,简单易学的特点而受到广大WEB开发人员的喜欢。但是它却有微软产品的通病,只能在Windows平台下使用,虽然它可以通过增加控件而在LINUX下使用,但是其功能最强大的DCOM控件却不能使用。而SUN公司在Java的基础下开发出的JSP(Java ServerPages)实现了动态页面与静态页面的分离,脱离了硬件平台的束缚,以及编译后运行等方式大大提高了其执行效率而逐渐成为因特网上的主流开发工具。为了使用广大应用ASP的程序员们能近快的学会JSP。现把其异同对比如下:一、结构JSP和ASP在结构上类似,都是以“”作为标计符,不同的是在标计符之间的代码ASP为JavaScript或VBScript脚本,而JSP为Java代码。JSP将网页的表现形式和服务器端的代码逻辑分开。作为服务器进程的JSP页面,首先被转换成servlet。Servlet支持HTTP协议的请求和响应。当JSP被转换成纯Java代码。多个用户同时请求一个JSP页面时,应用实例化线程来响应请求。这些线程由WEB服务器进程来管理,和ASP的线程管理器功能类似。同CGI为每个请求创建一个进程的模式比较,这种方式效率高的多。二、性能和平台无关性与C++、VB等语言比较,Java被看作是个效率不太高的语言,但它以牺牲效率换来了平台无关性使Java可以在大多数操作系统上运行而不需要重新编译--许多人愿意为此而付出代价。Java的编译代码是一种字节代码,在运行时由操作系统上的一个Java VirtualMachine(JVM)虚拟机解释。字节代码可以在所有平台上迁移,而不需要任何改动。交叉平台编程倾向于采用所有操作系统的“最小公分母”,尤其是使用图形化界面时(servlets不需要任何图形界面)。Servlets比传统的Java程序要快,因为它们在服务器端运行,不需要加载沉重的GUI。另外,servlets的字节代码只有在客户请求时才执行,所以尽管当首次调用servlets时会有几秒钟的加载时间,但后续的请求相应非常迅速,因为服务器已经缓存了运行的servlets。当前的JSP服务器,都带有Java 即时编译器,因此,JSP的执行比每次都要解释执行的ASP代码要快,尤其是在代码中存在循环操作时,JSP的速度要快1到2个数量级。三、Session管理为了跟踪用户的操作状态,ASP应用SESSION对象。JSP使用一个叫HttpSession的对象实现同样的功能。Session的信息保存在服务器端,Session的id保存在客户机的cookie中。如果客户机禁止cookie,Session Id就必须带在url后面。Session一般在服务器上设置了一个30分钟的过期时间,当客户停止活动后自动失效。Session 中保存和检索的信息不能是基本数据类型如(int, double)等,而必须是Java的相应的object(对象)如(Integer,Double)。四、Application管理 有时服务器需要管理面向整个应用的参数,使得每个客户都能获得同样的参数值。和Session一样,ASP使用Application对象而JSP使用ServletContext对象,操作的方法和Session一样。五、ServerSideIncludes 在服务器端引用上ASP和JSP有着相同之处。ASP和JSP都可以支持此功能的服务器(IIS,APACHE)上实现服务器端包含虚文件。但JSP是将动态页面的结果包含进来,而不是包含文件的代码本身。当你包含的文件在另一个服务器上时,不包含任何代码和对象是一个非常有效的功能。六、Java组件:JavaBeans JavaBeans是一些完成预定义功能的封装的对象数据。JavaBeans和JSP接合与COM和ASP相比如下:COM对象常用来封装商业逻辑和为ASP页面完成高强度计算。重用的组件使得页面简单快速,因为组件由编译语言构成,而不是解释型的scripting语言。 JavaBeans只能用Java语言开发,com可以由符合标准对象模型的任何语言开发。另一方面,JavaBeans更容易开发,因为一旦掌握了Java,了解JavaBeans的结构非常容易。由于com的复杂性,需要大量的学习和培训才能掌握--即使你具有c++和vb的基础也需要额外的努力。 Com 组件需要在服务器上注册,如果你修改了一个现有的组件,服务器需要重新启动才能使用它。JavaBeans不需要重新注册,如果开发者不需要得到对服务器的完全访问权限,这是其一个巨大的优点。可以创建满足商业逻辑的完整的JavaBeans库,让非编程人员使用库来开发动态网站。 Beans可以在服务器端管理数据库连接。 JavaBeans符合结构化对象模型:每个Bean由一个不带参数的构造函数,控制它的servlet可以使用内省来设置其属性。要设置Bean的内置属性,必须使用带有属性名的setProperty标签。如果一个属性可以设置,Bean需要有一个setXxxx方法,Xxxx用实际的属性名来代替。 七、JSP和数据库 ASP使用ODBC通过ADO连接数据库,而Java通过一个叫JDBC的技术联接数据库。目标数据库需要一个JDBC驱动程序--一个数据库与Java的借口,使得Java可以用标准的方式访问数据库。JDBC不使用服务器端的数据源。只要有JDBC驱动程序,Java就可以访问数据库了。如果一个特定的数据库没有JDBC驱动程序,而只有ODBC驱动程序,Java提供一个JDBC-ODBC桥来将JDBC调用转化为ODBC调用。所有的Java编译器都带有一个免费的JDBC-ODBC桥。理论上,桥可以访问任何常见的数据库产品。 结论: JSP模型是在ASP之后定义的,它借用了ASP的许多优点,如Session,Application等对象。同时JSP使用灵活而强大的Java语言,而不是低效的Scripting语言。ASP开发者只能使用基于windows平台的技术,而Java和JSP是跨平台的。(end)

  当然了,答案当然是否定的,因为世界上没有绝对不可能的事情,接下来就跟随我来看看如何利用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里面所有的特性。

摘要:应用COM的模块化编程技术定制钣金展开的计算模块,并在AutoCAD2002基础上开发钣金件展开系统。利用COM模块完成钣金展开计算,VB程序化设计实现计算数据在数据库中的存取,AutoCAD二次开发工具VBA设计用户界面和调用AutoCAD内部命令实现钣金展开图的绘制。COM模块编程的独立性、可重用性和AutoCAD良好的二次开发功能的方法,是钣金件展开CAD的一种简单可行的方式,而且展开计算模块可移植到其它的CAD系统。关键词:组件对象模型;钣金;展开;二次开发;类型库钣金件常用在汽车、船舶、冶金、化工、压力容器和通风工程等工业中。钣金加工过程中展开下料是第一道工序,也是最重要的一道工序。传统的钣金件展开下料通常是采用人工作图法或凭工人师傅的实践经验来进行,不仅效率低,而且误差大,成本也高。特别是对于放大样展开下料,前面两种方法有时风险很大。CAD技术正是解决这一问题的有效手段,它不仅大大提高钣金工展开的效率,而且也大大提高产品质量。常用的CAD技术有程序法、计算机辅助绘图法和计算机辅助设计法[1]。AutoCAD软件为用户提供了友好的人机交互界面,具有很强的作图和编辑功能,在许多中小型企业中得到广泛地应用。同时,AutoCAD软件具有良好的二次开发功能。利用COM技术,在AutoCAD基础上开发的钣金件展开应用系统,主要是利用AutoCAD系统良好的二次开发功能。钣金件展开应用系统采用COM模块化程序设计,设计钣金展开计算模块,利用VB.NET、SQLSever2000、AutoCAD2002及其二次开发工具VBA进行程序开发,通过数据库管理,实现AutoCAD和计算应用模块之间的数据传递和钣金件展开图形的绘制。1 COM技术COM定义了一种创建、使用和扩展基于组件模型的应用标准,是面向对象技术的扩充。COM规范所定义的组件模型除具有面向对象的特点外,还有其区别于面向对象的特征。(1)语言无关性。COM规范采用一种二进制代码级标准,而不是源代码级标准,因此编写组件所使用的语言与编写客户程序所使用的语言可以不同。许多高级语言都提供对COM编程的支持,如VC、Delphi、VB、C++Builder等。COM的语言无关性,为跨语言的合作开发提供了统一的标准。(2)进程的透明性。客户程序创建COM对象使用一致的方法,所有实现细节对客户来说都是透明的。这就是创建COM对象的进程透明性。同样地,调用COM接口也具有进程透明特性。客户程序创建组件对象后,得到组件对象的接口指针,通过该指针就可以调用组件对象的成员函数,客户程序不必知道组件对象在哪里。(3)可重用性。对象重用是COM规范很重要的一个方面,它实现了接口和实现的分离。客户程序不知道COM对象的内部具体细节,完全被封装了起来,它所看到的只是一个接口。因此组件对象的重用性是建立在组件对象的行为方式上,而不是具体的实现上,程序员会以不同的方式来编写客户程序和组件程序。实现COM重用性可利用包容和聚合两种方法[2]。在COM标准中,一个组件程序也称为一个模块,它可以是一个DLL(动态链接库),这种组件称为进程内组件;也可以是一个可执行程序,这种组件称为进程外组件。一个组件程序可以包含多个COM对象,每一个COM对象可以实现多个接口。客户程序与COM对象之间的调用有三种类型:COM对象与客户程序在同一个进程内,在同一客户机的不同进程内或在网络上的不同机器上。COM与客户程序运行在同一进程地址空间。例如,在IE或Netscape中可以浏览Web页面中嵌入的ActiveX控件。ActiveX控件被下载到客户机上并激活与Web浏览器在同一进程中。客户程序通过直接调用COM接口与位于进程内的COM服务器通讯。在同一进程中运行,可以大大提高应用程序的运行效率,所以这种方式非常适用。进程内COM组件与客户程序的通讯如图1所示。

二、为什么我们要用VB来创建ASP组件 

  下面我们先来看看什么是ActiveX DLL吧。ActiveX是微软提出的广泛应用于Windows系列的一种代码封装技术,提高了程序代码的可重用性,加快了程序项目的开发速度,一般被称为“组件”。在VB6的集成开发环境当中,我们可以看到一下几种ActiveX项目:

图1 进程内组件与客户程序通讯

  前面我也说了,编写组件对使用的语言没有什么限制,因此您就可以使用您所熟悉的语言来编写组件。我们说VB是用来编写组件最容易的语言工具,它虽然没有VC++和Java得优良的性能,和高速灵活性,但是因为它易学易用,所以也被广大程序开发人员是用来编写COM组件。下面我想介绍一下如何使用VB来创建ASP所用的COM组件。 

  1、ActiveX EXE

COM的另一种形式是可执行程序(EXE),它与同一机器上的客户程序位于不同的进程空间。例如嵌入在Word文档中的Excel表格就是运行在同一机器上的不同的应用程序。COM与客户程序运行在不同的机器上。例如,一个VB数据库应用程序被连接到网络上其它机器上的应用程序服务器。远程服务器使用分布式COM访问接口与应用程序服务器通讯。当在不同的进程或在不同机器上时,COM使用代理启动远程过程调用。代理与客户程序在同一进程中,所以从客户端来看所有的接口调用都是相似的。代理会截取客户程序的调用并传送到正在运行的COM对象。2 系统设计2.1 系统功能和结构在AutoCAD基础上的钣金展开放样系统主要是完成常用钣金件的展开设计。用户通过在AutCAD中定制的菜单选择要展开的钣金件,然后根据系统提示输入钣金件的结构参数,系统就可以利用这些参数进行展开计算,并将展开计算的结果存入数据库中,最后系统利用计算结果绘制钣金件的展开图。计算结果和钣金件展开图可提供给后续的钣金排样下料和其它加工工艺。因此,系统应具有如下功能:(1)提供具有良好的人机交互界面,用户可以方便地输入有效参数;(2)根据用户输入的计算参数,调用COM接口函数按一定的算法完成钣金展开计算;(3)通过VB编程操作数据库,在数据库中保存计算结果,并将计算结果以文本文件的形式另存,以便用于指导现场展开放样;(4)利用AutoCAD的二次开发工具VBA和VB编程,从数据库中读取展开计算数据并绘制展开图;(5)预留功能。如考虑钣金件的加工需要,将直接利用钣金展开结果输出数控机床加工G代码。此外,还要充分利用AutoCAD系统管理展开图形,如修改、保存和打印图形,或转换图形文件的格式,以便于AutoCAD系统与其它CAD应用系统之间的数据文件交换和传输。因此,该系统的功能结构简图如图2所示。

三、问题的提出 

  这是在“过程外”运行的ActiveX/COM服务器组件,也就是说他们运行的过程和初始化组件的客户机代码不同。尽管可以用ASP访问ActiveX EXE,但是不推荐改动IIS元库,该库允许所有的可执行文件由服务器上运行的脚本代码启动。

图2 钣金展开系统结构简图

  某个商务网站,经常要对他们多提供的CD信息进行增加或删除等操作,因此它们像开发出一个DNA组件(Distributed interNet Architecture分布式Internet结构 ),从数据库中对CD信息进行操作。在此,我们想利用VB来实现创建这个组件的过程。 

  2、ActiveX OCXs

2.2 系统开发思路2.2.1 定制钣金展开菜单参照相关的钣金工展开手册,并按照钣金件的形状特点和功能进行分类。根据钣金件的分类,利用AutoCAD二次开发工具VBA定制钣金展开的系统菜单。在AutoCAD2002中按照如下方法定义。’定制钣金展开菜单SubSheetMenu() ’定义变量 DimNewMenuGroupAsAcadMenuGroup DimNewMenuAsAcadPopupMenuDimNewMenuItemName(5)AsAcadPopupMenu DimSubMenuItemAsAcadPopupMenuItem …… ’定义下拉菜单群组SetNewMenuGroup=ThisDrawing.Application._MenuGroups.Item(0) ’创建下拉菜单列SetNewMenu=NewMenuGroup.Menus._Add(”钣金展开”+”(”+Chr(Asc(”&”))+”S)”) ’增加子菜单列SetNewMenuItemName(0)=NewMenu._AddSubMenu(0,”圆锥台”) …… SetNewMenuItemName(5)=NewMenu._AddSubMenu(5,”三通管”) ’增加次级子菜单列 SetSubMenuItem=NewMenuItemName(0)._AddMenuItem(NewMenu.Count+1,_”正圆锥台”,”-vbarunCylinderForm1”&vbCr) ……NewMenu.InsertInMenuBar(ThisDrawing.Application._MenuBar.Count+1)EndSub由上面的VBA程序定制钣金展开菜单宏,然后在AutoCAD2002环境中加载并运行该宏,就可以生成钣金展开菜单。如图3所示。

  首先,我们需要知道CD信息在数据库中,例如SQL SERVER 7.0中的存储结构,如下: 

  这些特殊的组件把主机应用程序显示和操作组件所需的附加支持包含在GUI环境中。还可以把OCX组件放在网页当中。但是,OCX是应用程序界面,不可以使用ASP来创建的。

图3 定制钣金展开菜单

CD_ID: 为数据库中唯一标识这张CD的标识符。 

  3、ActiveX文档DLL和ActiveX文档EXE

2.2.2 钣金展开计算模块计算模块主要完成钣金展开的计算,并由AutoCAD系统将计算结果写入SQLServer数据库中。组件对象模块的开发可以采用VC++、VB和Delphi等编程语言来实现。这里采用VB.NET来实现COM模块的定义。在.NET中,类接口是未在托管代码中显式定义的接口,它将公开在.NET对象上显式公开的所有公共方法、属性、字段和事件。此接口可以是双绑定接口,也可以是仅调度接口。类接口将接收.NET类本身的名称,并在名称前加有下划线。例如,对于Santong类,类接口为_Santong,.NET对象将向COM客户端公开该接口。该类的定义为:_PublicClassSantong’支管任一素线SubLn()’支管钢板下料展开长SubS1()’主管孔各点所对应弧长SubSn()’孔实半长素线SubPn()…… EndClassCOM客户端可以获取指向_Santong类接口的指针,该类接口在类型库导出程序(Tlbexp.exe)工具生成的类型库中进行描述。Tlbexp.exe是一种命令行工具,它用于将包含在程序集中的类和接口转换为COM类型库。当类的类型信息成为可用时,COM客户端就可以创建.NET类的一个实例并调用该实例的方法,就好像它是COM对象一样。使用Tlbexp.exe从程序集导出类型库文件,在命令行提示处键入下列命令:TlbexpSheetmetalCalc.dll /out:SheetCalclib.tlb大多数类型在由COM应用程序使用时,都需要类型库。在AutoCAD中,打开VisualBasic编辑器,通过“工具”菜单下面的“引用”命令,将SheelCalclib.tlb引用到工程中,COM客户端(AutoCAD)就可以利用CreateObject函数创建组件对象,并可调用Santong类对象的方法,从而实现对钣金件的展开计算。2.2.3 钣金件展开图的生成由于钣金展开计算的结果是一些长度值,不能直接用于绘制展开图,必须将计算结果从数据库中读出到应用程序中,利用这些数据计算绘图所需点的坐标,最后通过VBA调用并操作AutoCAD绘图命令绘制展开图。钣金件展开计算并绘图步骤如下。(1)利用VBA开发的钣金展开菜单,选择要展开的钣金对象;(2)根据菜单命令激活相应的钣金展开设计宏,在所弹出的对话框中输入钣金展开计算参数;(3)AutoCAD系统将计算参数带入到COM计算模块的接口函数中进行计算;(4)将计算结果保存在数据库中,并直接生成该计算结果的文本文件;(5)AutoCAD系统从数据库中读入数据,并利用该数据再次计算绘图所需点的坐标;(6)由VBA直接操作AutoCAD的绘图命令,设置绘图环境和绘图,并结束整个展开计算和绘图操作。根据钣金展开流程,用户要在AutoCAD应用系统中首先输入钣金展开的已知条件参数,然后在COM模块中进行计算。通过AutoCAD与SQLServer数据库的通讯存取计算数据,利用VBA操作AutoCAD系统,设置并完成绘图,自动生成钣金展开图形。最后可以在AutoCAD环境中查询各种尺寸、编辑和出图,充分利用AutoCAD对二维工程图的管理和绘图编辑功能。程序设计从略。3 钣金件展开应用实例分析下面以等径斜交三通管为例简单地说明基于COM的钣金件展开应用系统的开发过程和方法。首先在AutoCAD2002中应用二次开发工具VBA定制钣金展开应用部分的菜单。其次,通过VisualBasic编辑器在工程中引用前面讨论的钣金展开计算模块转换生成的类型库,利用VBA和VB程序化设计完成计算和绘图。当用户在钣金展开菜单中选择等径斜交三通管为展开对象后,系统将弹出如图4所示的对话框。

CD_Name: 为CD名 

  Active文档可以在OLE文件箱应用程序中,例如IE或者Office Binder,显示VB表单。但他们在ASP不能应用。

图4 等径斜交三通管计算对话框

CD_Author: 为演唱(奏)者 

  4、ActiveX DLLs

在该对话框中输入等径斜交三通管展开参数并单击确定按钮,则AutoCAD系统会利用计算参数并调用钣金展开组件中的接口函数进行计算。相应的展开计算公式如下[3]:支管任一素线长:式(1)~(6)中:n———圆周等分数;H———支管中心至主管中心垂直距离;R2———主管内半径;r1———支管外半径;α———支管倾斜角;βn———圆周各等分点与同一直径夹角;D2———支管中径;R1———主管外半径。AutoCAD2002系统将利用VB程序设计,将以上的计算结果保存在数据库中,并直接生成该计算结果的文本文件,以便在钣金排样下料时参考。最后,AutoCAD系统把计算结果从数据库中读回,再次计算绘图所需点的坐标,并利用VBA调用AutoCAD相关的绘图命令,实现数据的图形显示。按照图4所示的参数值计算后,AutoCAD系统自动绘制等径斜交三通管的支管钢板下料展开图和两管相交的孔实形图。如图5所示,其中窗口上面为展开图,窗口下面为孔实形图。

CD_Price: 为CD价格 

  这些ActiveX/COM组件和初始化组件的客户机在同一个进程中运行。而我们要讨论的ActiveX DLL正是整个组件。一般微软的附加组件和其他的一些第三方厂家提供的各种组件都是这种类型的ActiveX DLL,但是并不全是使用VB编写的,同样可以使用VC/JAVA等等语言来开发。

图5 等径斜交三通管支管的展开图和孔实形图

CD_Information: 为CD的简单描述 

  探讨完了什么是ActiveX DLL,我们开始正式编写我们自己的ActiveX DLL,以便来实现ASP中的同样功能,众所周知,ASP内置了Response、Request、Server、Session、Application五个对象,其实这五个内置对象正是IIS控制台初始化的五个ActiveX DLL组件,既然IIS可以初始化这五个组件用于ASP中,我们当然也可以直接在我们的ActiveX DLL中引用这些组件来实现我们的编程,也就是说我们可以在VB应用程序中通过引用这些组件来实现访问ASP内置对象的功能。

4 结束语应用组件对象模型技术,将钣金件展开中大量复杂的计算过程独立出来,既方便了系统程序的模块化设计,同时又利用了COM模块的可重用性。COM组件具有语言无关性,使该模块的移植和升级成为可能,它可以不仅仅局限于AutoCAD应用程序本身,而且可以移植到其它的CAD系统。因此,应用COM技术的钣金展开,使展开计算与绘图分离,是一种非常有意义的方法。参考文献[1] 袁筱麟.钣金展开计算机放样技术[J].化工建设工程,2002,24(1):33,40-41.[2] 伍光胜,郑明辉,黄远铮,等.COM/DCOM技术的分析及应用[J].计算机应用与研究,2001(9):64-67.[3] 翟洪绪,翟纯雷,等.实用钣金展开计算法[M].北京:化学工业出版社,1999.[4] 廖卫献,崔一兵,等.钣金展开CAD系统的开发[J].南华大学学报(理工版),2001,15(1):39-41.[5] 潘爱民.COM原理与应用[M].北京:清华大学出版社,1999.(end)

  为了简单起见,我们假设对CD信息数据的处理仅有增加和删除,有兴趣的朋友想增加这个组件的功能请参看相应的书籍,自行完成。 

  只要你安装了PWS4或者IIS4以上的WEB服务器,你就拥有了一个名称叫做“Microsoft Active Server Pages Object”的对象库,我们可以在VB的ActiveX DLL应用中引用这个对象库,通过引用这个对象库,我们就获得了一个对象(类):ScriptingContext,这个对象也正是我们整个文章探讨的核心对象。对象库内的关系如下:

  就像在Java中写JavaBean程序一样,在ASP的组件中,我们也要定义相应的方法来实现一定的功能,本例中用到了下列方法: 

  对象库      类        类成员

OpenDB: 打开数据库,读入所有的CD信息。 

  ASPTypeLibrary ScriptingContext Application

CloseDB: 关闭数据库连接。 

                    Request

Add: 向数据库中添加一条新的CD信息 

                    Response

Delete: 从数据库中删除一条CD信息。 

                    Session

NextCD: 从表中返回当前CD信息,并把指针移向下一条信息 

                    Server

IsEof: 判断是否还有更多的CD信息 

  通过上面的关系图,我们就可以很容易理解类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应用程序。

本文由10bet手机官网发布于面向对象,转载请注明出处:手把手教你选拔VB来成立ASP组件1,利用COM手艺的钣金件张开系统的花费

上一篇:常用SQL语句大全总结,备份数据方法 下一篇:没有了
猜你喜欢
热门排行
精彩图文