首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 软件教学
ASP讲座之十:自己动手编写组件-ASP教程,组件开发
作者:网友供稿 点击:19
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
在前面的内容中,我们学习了组件的使用,网上的组件虽然不少,但往往小小的一个组件就要你掏出美元来,而国产的组件又太少,想掏点人民币还没地儿好掏,算了,您干脆自己写吧,其实编写组件并不难,无非是刚开始写低水平的组件,慢慢开始写高水平的组件而已。要编写activex server components,有多种工具可供选择:visual basic、c++、java等等,这里选择最简单的vb6.0,只要你以前用过vb,包你不到1小时之内,做一个小组件出来。

一、 组件编写速成——编写组件最基本的步骤
本部分主要讲解编写组件的基本步骤,如果你有进一步学习的欲望,请参照vb6.0帮助文档中“创建 activex dll”部分(msdn library中文档文件名为vbcon98.chm)。
目的:编写一个最简单的加法器组件,这个组件有两个属性,一个方法。我们从最熟悉的地方开始,那就是先假设这个组件已经存在,看看在asp使用该组件的代码:
<%
dim objsum
‘ 先创建该组件组件标识为 testdll.sum
set objsum = server.createobject("testdll.sum")
‘ 记住testdll.sum 中的“testdll”,“sum”。
objsum.augend = 10.52       ‘augend 属性为被加数
objsum.addend = 382.41      ‘addend 属性为加数
result = objsum.plus        ‘plus 方法求和
response.write result
set objsum = nothing
%>
请务必记住这几个关键词:testdll、sum、augend、addend、plus,这将与接下来的工作紧密关联。下面是详细步骤:
1. 运行vb6.0,在“文件”菜单中,单击“新建工程”→在“新建工程”对话框中,双击“activex dll”图标→visual basic 将向该新工程中自动添加一个类模块 class1(在“工程资源管理器”中可以看到,如图1)。
2.按 f4 键打开“属性”窗口。双击“名称”属性把“class1”改成 sum。
3.在“工程”菜单中,单击“工程1 属性”打开“工程属性”对话框。在“工程名称”中填写testdll,在“工程描述”中填写“创建activex dll示例”。如图2。
    提示:asp创建组件中的标识testdll.sum这两项的意思明白了吧。
4.在“文件”菜单中,单击“保存工程”,分别使用下面的名称保存工程文件:setupdll.cls和setupdll.vbp。
5.为 sum 类创建属性:
(1) 在“工具”菜单中,选择“添加过程”打开“添加过程”对话框。在“名称”框中,输入augend,单击“属性”,然后单击“确定”,如图3(注意:当前焦点应在代码窗口,否则“添加过程”菜单无效)。
(2) 在“工具”菜单中,选择“添加过程”打开“添加过程”对话框。在“名称”框中,输入addend,单击“属性”,然后单击“确定”。
6.为 sum 类创建方法:
在“工具”菜单中,单击“添加过程”打开“添加过程”对话框。在“名称”框中,输入plus,在类型中,你可以选择“子程序”或“函数”,本例中由于要返回加数与被加数之和,故单击“函数”,然后单击“确定”。
现在,前面asp代码中的五个关键词语都已用上,这下很多东西都明白了吧。
7.类模块sum代码窗口中所有代码如下:
option explicit
private mdbl_augend as double
private mdbl_addend as double

public property get augend() as double
    augend = mdbl_augend
end property

public property let augend(byval vnewvalue as double)
    mdbl_augend = vnewvalue
end property

public property get addend() as double
    addend = mdbl_addend
end property

public property let addend(byval vnewvalue as double)
    mdbl_addend = vnewvalue
end property

public function plus()
    plus = augend + addend
end function
你已经注意到以上代码与系统生成的代码有点不同,主要是public property get augend() as variant部分用实际的数据类型double替代了。
注意:实际上,当执行 x = objsum.augend 语句时,调用的是 property get 过程,获取mdbl_augend的值,而执行 objsum.augend = 10.52 语句时,将调用 property let 过程,将10.52赋给 mdbl_augend。
8.最后一步,在“文件”菜单中,单击“生成.dll(k)…”,生成文件setupdll.dll。

到这里,组件已创建好了。现在,我们可以先在vb6中编写一个测试工程,测试一下该文件正确与否。
1.在“文件”菜单中,单击“新建工程” →双击“标准exe”。
2.在“工程”菜单中,单击“引用” →在“引用”对话框中按“浏览”按钮,选择刚刚编译过的“setupdll.dll”文件→单击“确定”。
3.最后在代码窗口中编写如下代码:
option explicit
private sub form_load()
    dim objsum as testdll.sum
    set objsum = new sum
    
    objsum.augend = 10.52
    objsum.addend = 382.41
    msgbox objsum.plus
end sub
运行一下,结果正确,接下来我们在asp中使用这个组件。将setupdll.dll拷到web服务器中,并用“regsvr32.exe setupdll.dll”命令注册该组件,然后在浏览器中执行本部分开头的asp程序。如果不行的话,你可以尝试先用vb6的打包工具打包,然后再安装,组件会自动注册,而且一些必需的vb6运行文件也会自动安装。
说明:本部分所有程序均在下载包的setupdll.zip中。
    上面的例子中我们使用属性过程property get和property let来添加属性(property get读取属性的值,而property let给属性赋值),若需要对设置的值进行校验,可在property let过程编写适当代码。如下面代码:
public property let augend(byval vnewvalue as double)
    if vnewvalue < 100 then
        msgbox "搞什么!小于100的值,自己心算就行了"
    else
        mdbl_augend = vnewvalue
    end if
end property

二、 给组件添加属性和方法的其他途径
1.添加属性最简单的一种方法:添加公共变量,如上例最简单的代码如下:
option explicit
public augend as double    ‘ 添加 augend 属性
public addend as double    ‘ 添加 addend 属性

public function plus() as double
    plus = augend + addend
end function
    但是,该方法只能设置可读/写属性,且不能对所赋值进行校验。如果仅需添加只读属性:在上例中,删除public property let augend(byval vnewvalue as double)过程,则augend便成了一只读属性,不能赋值。当然,若要添加只写属性,只需删除property get过程就可以了。

2.使用类生成器实用工具
vb6中还有一个添加属性和方法的工具:在“外接程序”菜单中,单击“外接程序管理器”,在跳出的外接程序管理器对话框中选择“vb class builder utility”,并在加载行为中选择“加载/卸载”(如图4)。然后再在“外接程序”菜单中单击“类生成器实用工具”,您一看就会用。

三、 告诉你几个要注意的问题
1. 上面的例子是一个简单得不能再简单的组件,比较实用的组件一般都至少还有一个模块(module)。
2. 如果不小心, visual basic 可产生“单线程”组件
    也许最常见的一个陷阱就是使用了没有被设计为在 asp 下运行的组件,如“单线程”组件。因此,请确保在“项目属性”页的“通用”选项卡上将线程模块设置为“单元线程”。
3. 关于“类型不匹配”错误。
    一个好的建议是最好声明 out 参数为 variant,注意上例中没有这样设置。
4. 关于全局变量的使用。
    尽量避免在组件中使用全局变量。在 visual basic 术语中,这表示在标准的 .bas 模块中没有 public 或 global 变量。因为global 变量并不是真正意义上的全局。每个线程都有自己的副本,如果几种方法恰好在同一线程中执行,它们将看到相同的变量;否则它们访问的是这些变量的不同副本。这意味着您可能给一个全局变量赋了值(在线程 a 中),但其另一个用户(在线程 b 中执行)看不到新值。其原因是 visual basic 内部使用“线程本地存储 (tls)”来引用全局变量。这意味着每个线程都有自己的 public 变量的副本,并且因为它存在多个副本,全局数据并不是真正“全局的”。也就是说,恰好在同一线程中运行的用户才会访问到同一个变量,不论他们是否期望如此。

    最后顺便提一下,vb6.0引入了一种全新的visual basic应用程序:iis应用程序。你可以象创建activex dll一样创建iis应用程序,任何用active server pages创建的应用程序都可以在vb开发环境中创建,你可以用单个的vb应用程序完全替代所有的active server pages。

文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·C#数据库连接字符大全-.NET教程,C#语言
·Ftp客户端编程-.NET教程,面向对象编程
·ASP.NET POST方式提交数据-.NET教程,Asp.Net开发
·单独控制IE WebControl里面的Treeview的几个动作的Postback-.NET教程,数据库应用
·根据IP找地址的java实现-JSP教程,Java技巧及代码
·ASP.NET 2.0 多文件上传小经验-.NET教程,Asp.Net开发
·ASP.NET 2.0中隐藏listbox的某一项-.NET教程,Asp.Net开发
·使用Windows Script 关闭和打开指定程序-.NET教程,数据库应用
·asp.net 2.0下嵌套masterpage页的可视化编辑-.NET教程,Asp.Net开发
·Jsp学习笔记(三)-----Jsp语法!-JSP教程,Jsp/Servlet
最新文章
·让windows vista系统只能识别自己指定的u盘_windows vista
·优化建议与技巧(来自adsense优化团队)_网赚技巧
·艾瑞曹军波:广告联盟发展的下一个突破点_网赚技巧
·狗狗网ceo李晶:80后创业 心态最重要_站长访谈
·从九句话看网站的综合发展_站长心得
·改进网页可读性的7个方法_站长心得
·常见问题_google adsense 广告点击统计_google推广
·10条优秀的网站设计经验1_站长心得
·怎样做个小网站_站长心得
·实施会员制计划中7项致命的失误_网站推广
相关主题
  • ASP讲座之十一:结束语——给您一些建议-ASP教程,性能优化
  • ASP讲座之九:ASP与数据库(四)-ASP教程,数据库相关
  • ASP讲座之八:ASP与数据库(三)-ASP教程,数据库相关
  • ASP讲座之七:ASP与数据库(二)-ASP教程,数据库相关
  • ASP讲座之六:ASP与数据库(一)-ASP教程,数据库相关
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭