当前位置:首页 > 日记 > 正文

构建具有三层结构的asp应用

构建具有三层结构的asp应用
本文介绍了三层结构应用程序的概念和优点,并介绍了如何构建一个三层结构的ASP应用程序。
asp应用程序的一、二层结构有哪些缺点
在浏览器/服务器的应用程序开发领域,微软公司的IIS和ASP已经流行迅速,由于其强大的功能,与其他微软产品良好的扩展性和一致性。它使程序员用VB或VC的经验,很快成为一个程序员,开发一个应用程序,看起来很专业。不过,ASP具有固有的缺陷,即ASP代码和HTML代码。ASP程序员需要考虑处理数据库,以及如何与HTML合作。有时,ASP代码来生成HTML代码直接。因此,当程序逻辑是足够复杂,ASP源文件很长;而且,无论客户提出的用户界面的变化,或业务逻辑的变化(例如,在考试系统中,合格标准从5月达到60分就算合格,进入100强的资格)。需要更改asp文件,而业务逻辑发生变化,可能需要更改很多文档。
两层或三层结构的概念
在传统的客户机/服务器应用程序中,也存在上述问题。多层结构的应用是基于C/S结构的总结,也被扩展到B/S应用开发领域的应用分为三层(可以有更多层,但三层最常见):用户界面层、业务逻辑层、数据库层,用户界面层负责处理用户的输入和输出给用户,但不负责其意义的解释(为了效率,而这可能将用户输入之前有效),这一层通常用前端工具(VB,VC,ASP等)开发;业务逻辑层是上下两层链接,建立实际的数据库连接对,根据用户的搜索请求生成的SQL语句或更新数据库,并把结果返回给客户端,这一层通常以动态链接库的形式和注册服务器登记(注册),及其通信接口与客户特定组件的标准(如COM、CORBA),你可以使用该工具支持任何标准的开发;数据库层负责实际的数据存储和检索。在这种结构下,上述问题是:标准顺利完成或容易解决的问题,通过系统的检查为例,显示合格人员名单中的所有客户的需求,把这样一个作为getqualifiedlist功能,如何写,如何去铝与数据库,并获得什么样的数据库无关(你一定有过这样的经历,在数据库系统运行良好,有时换到另一种数据库系统的SQL语句必须修改);在DLL的中间层的getqualifiedlist功能的实现,如果合格定义变化的用户,只需要修改函数将该函数的参数,只要入口和返回的内容不变,客户端不需要任何改变。在这里,我们看到封装优势的面向对象编程,但这一点在大规模应用的发展特别是有用的时候,我们可以把人员分为两组,一组我们负责界面层的开发,另一组是负责业务逻辑层的开发,只要双方同意按照功能接口,并行发展的就可以了,不用之前,后面的工作必须在完成的工作前的等待开始。当然,这样的发展模式需要良好的项目协调和文件支持。
你可能会问,如果我把其中的一些功能在一个文件中,然后调用的地方把它,不能达到同样的目的:第一,效率不高,无论你把这些功能分散到多个文件,当你需要调用时将包含在一些实际上并不需要函数,这无疑加重了服务器的负担,尤其是对Web应用服务器的性能要求较高,而DLL只在需要的时候进记忆,只需要的功能,以及多个应用程序实例可以共享同一个DLL的实例;第二,想象一个员工,有20个属性(工号,姓名年龄,性别,现在,......)获得了一份工作,还要求所有员工的信息。在这一点NT,如果我们简单的使用功能,我们只能定义20个全局变量,在函数改变这些变量,或定义一个函数20参数的参考。显然,第一种方法是很麻烦的,一旦添加一个属性,一个方法需要改变函数接口。在一个对象,它既包括成员方法(即过程和函数),以及成员的属性。如果我们使用对象的方法,我们只需要改变函数中的对象的属性,以及更改对象的属性值可以直接引用外部的功能。这种方法有点类似于第一种方法,但1。属性值不需要在函数之外逐一解释。2、这些属性值只属于对象,而与对象无关的代码不会无意中更改属性值。3、一旦对象被释放,这些值将一起释放。
三。如何开发一个三层结构的asp应用程序
ASP具有良好的可扩展性,我们访问数据库,使用ADO对象访问文件,使用文件系统对象(FSO),事实上,这个项目一直是三层结构的应用,但由于它是使用内置的对象来实现的。这些物体都遵循COM / ActiveX接口,所以我们发展自己的对象也遵循这个接口。接下来,我们采取的合格标准以上为例演示了如何创建自己的三层结构的ASP应用程序。
1、在数据库系统中,建立以下数据库表:
员工:emplid char(5)不为空,
名称char(10)不为null,
性别char(1)不是null,
积分不为空
这张桌子储存雇员信息和考试结果。简单起见,它只包含三个部分:姓名和性别,只有一个考试。emplid是首要关键。
2、建立动态链接库
启动VB(这里是VB的,例如,你可以使用任何开发工具开发的ActiveX接口支持你),并与ActiveX类型库创建一个新的项目。一个新的类,在建的项目,叫员工。您可以添加的属性和方法的类类生成器的可视化,你可以编辑直接用手。首先,添加emplid属性如下:
私人msemplid作为字符串
物业让emplid(semplid字符串)
msemplid = semplid
最后的财产
属性获取emplid()为字符串
emplid = msemplid
最后的财产
一般来说,每个属性都应该有两种方式:属性让和属性获取。他们被称为当属性值分配给属性值分别从阅读。如果一个属性是只分配而不读,这在相应的数据库表的主键属性大多发生,财产的获取方法可以省略。物业让方法不能省略。你可以复制的名字三性能,采用上述方案的性别和得分。然后创建下面的方法:
(emplid创建公共子字符串)
昏暗的Conn新连接
昏暗的RS作为新的记录
将SQL作为字符串
假设你创建控制面板中的DSN,ConnectionString
也可以无DSN字符串
conn.connectionstring =DSN = dsnname;UID =用户名;密码=密码
conn.open
选择*从员工那里emplid = emplid SQL =
RS
打开SQL,Conn,1。
if和Bof
退出子
其他的
msemplid =装饰(。领域(emplid ))
msname =装饰(。领域(名称))
msgender =装饰(。领域(性别))
msscore =。领域(得分)
最后如果
关闭
结束
设置=无
conn.close
设置conn =没有
端子
在这里,我们创建Employee对象根据emplid。我们注意到数据库中的值被分配给三个私有变量,而不是直接赋给属性。如果你调试一步一步,你会发现,msemplid赋值调用属性让emplid,即分配的价值属性。
接下来,我们创建一个类雇员,并添加以下方法:
私人colqualifiedlist作为新的集合
私人mncurrentindex为整数
市民Sub GetQualifiedList()
昏暗的Conn新连接
昏暗的RS作为新的记录
将SQL作为字符串
假设你创建控制面板中的DSN,ConnectionString
也可以无DSN字符串
conn.connectionstring =DSN = dsnname;UID =用户名;密码=密码
conn.open
SQL =选择emplid从员工那里得分> = 60阶按评分排序
RS
打开SQL,Conn,1。
if和Bof
退出子
其他的
做而不做。
昏暗的员工作为新员工
员工,创造装饰(。领域(emplid ))
colqualifiedlist增加员工。
设置员工=没有

最后如果
关闭
结束
设置=无
conn.close
设置conn =没有
端子
第一,注重员工的模糊语法VB中创建一个类实例的新员工,你会看到,在ASP创建类的实例的语法是不同的。此方法检索雇员数大于60,并在此基础上创建Employee对象,然后添加对象到一个私人集合对象。以下两个功能通过集合中的元素:
公共函数GetFirst()员工
如果colqualifiedlist计数>0。
mncurrentindex = 1
集colqualifiedlist.item getFirst =(1)
其他的
设置获取第一=没有
最后如果
端功能
公共函数GetNext()员工
mncurrentindex = mncurrentindex + 1
如果mncurrentindex > colqualifiedlist.count然后
集GETNEXT =没有
其他的
集GETNEXT = colqualifiedlist.item(mncurrentindex)
最后如果
端功能
也许你会说,你为什么不把这些藏品公开,所以这不是ASP的直接参考事实上,它的工作原理,编程容易实现,但它破坏了封装原则。因为在业务逻辑层是什么格式的数据,没有用户界面层,如果有一天你因为各种原因放弃了将设计数据的存储,和数组或集合使用记录(记录集)来存储,那么你只需要修改的getFirst和GetNext两功能,用户无需修改接口层。
在这类文件的结束,项目文件存储为test.vbp,和使test.dll选择文件菜单下的编译。
三.注册动态链接库
开始对微软事务服务器的Web服务器(开始——Windows NT optionpack4 --互联网信息服务器,Internet服务管理器事务服务器--计算机--我的电脑--包),微软安装,右键单击新包装--创建空包装测试,输入包名(其中试验是一个可选的名字,不是DLL,一名好的交互式用户的当前登录的用户--完成)。双击测试组件,右键单击组件的新组件安装新组件(S)-添加文件,选择DLL文件你编译,MTS会发现DLL有两类员工和DLL。此时,DLL已经注册。
4。写ASP程序
U3000 U3000
U3000 U3000
合格的员工名单
U3000 U3000
U3000 U3000
员工身份
名称
性别
分数
U3000 U3000
建立职工= server.createobject(测试。员工)
oemployees.getqualifiedlist
设置员工= oemployees.getfirst()
而不是员工是什么
%>
U3000 U3000
U3000 U3000
U3000 U3000
U3000 U3000
U3000 U3000
U3000 U3000
设置员工= oemployees.getnext()

%>
U3000 U3000
U3000 U3000
注意在ASP职工= server.createobject语法创建一个类的实例(测试。雇员),在测试的DLL的名称,员工是类的名称;当然,如果一个函数的返回值是一个对象,类似于集(员工=职工。先富起来)这个语法也可以。
此时,一个完整的三层结构应用程序已经完成。让我们看看下面。如果我们定义合格的定义如下:只有当得分达到前100名是合格的,程序才需要进行修改。事实上,如果你的数据库系统是SQL Server,你只需要把SQL语句改为:
SQL =选择前100 emplid员工按评分排序已经能够,甚至为了跨数据库系统的兼容性,我们只需要做以下修改getqualifiedlist。

SQL =选择emplid员工按评分排序
RS
打开SQL,Conn,1, 3。
if和Bof
退出子
其他的
我= 1
做(不,EOF)和(我昏暗的员工作为新员工
员工,创造装饰(。领域(emplid ))
colqualifiedlist增加员工。
设置员工=没有
i = i + 1

最后如果
关闭
结束

然后重新编译的DLL,并登记好,和ASP程序并没有被彻底修改。
四。注意事项及注意事项
1,因为这个例子比较简单,没有建立在员工类的方法,但在员工,所有员工的信息(工号,名字,性别,成绩)读出来,分配给员工对象相应的属性,但在实际应用中,当员工对象增加属性,或表的数量增加,表之间的关系变得更加复杂。本文提出的方法更有效,代码重用机会更大。
2、当DLL被修改时,它只能在MTS中被删除和重新注册,因为在每次编译之后,对象的ID值将在注册表中重新生成。
三.从参数的方法和函数调用,所有的变量必须在介绍转换对应类型的函数调用,否则会造成类型不匹配的错误,因为只有在VBscript变量类型,它不能自动转换为其他类型。例如,有一个函数的定义如下:
公共函数关系(P1为字符串,P2为整数)整数
端功能
在asp程序中,它应该被调用如下:
P1 = obj.property1属性是一个字符串属性
P2 = obj.property2财产是一个整数属性
a obj.fun1(CSTR(P1),Cint(P2))
a obj.fun1(AAA
%>
以下两种文字是错误的:
P1 = obj.property1属性是一个字符串属性
P2 = obj.property2财产是一个整数属性
a obj.fun1(P1,P2)不正确,P1和P2是不同的变量
CSTR(P1)
P2 = Cint(P2)
a obj.fun1(P1,P2)仍然不正确
%>
这里的第二个方法仍然是错误的,甚至是经过类型转换,P1和P2还在变化的变量。在VBscript,数据类型和类型转换函数表达式中的运算只扮演一个角色,和变量只有一种类型的变异。
结语
这是一个多层结构的理论和实践的探讨,希望能帮助你发展。这里还有一个问题是如何的类和类的成员应设计。它不仅涉及到面向对象编程的理论,也需要实践经验。请参阅有关面向对象的理论书籍和继续综上所述,在实践中,我相信你将能够设计自己的完美的多层结构的应用。

相关文章

Opera下一个15桌面浏览器beta版

Opera下一个15桌面浏览器beta版

浏览器,桌面,电脑软件,Opera,beta,北京时间5月29日,在推出Android Opera 14浏览器后,Opera发布了Opera下一版本的15版浏览器,并对Opera桌面浏览器进行了修订和精简。 歌剧未来15有很多新功能,其中一些是与Android版Opera 14上周公布的一致。Op…

2010虎年短信频道(5)

2010虎年短信频道(5)

频道,虎年,短信,电脑软件,2010来了,要找虎年的祝福给朋友和家人,这个站让你不要为这些祝福而难过! 41、给你虎虎的祝福,虎虎的幸福,虎虎的运气,虎虎的健康,虎虎的快乐,虎虎的心情,虎虎的欣慰,虎虎的顺利,虎虎的幸福,虎虎的人生! 42、把老虎的第一年,全…

Windows7软件轻松完成硬盘分区

Windows7软件轻松完成硬盘分区

硬盘分区,轻松,电脑软件,不断有网友问多大容量的Windows 7分区和如何安装后调整系统分区。的确,Vista系统分区需要比以前的系统更大的空间,它需要摸索刚刚接触Windows7的朋友,有些人不熟悉Windows 7的分区程序,甚至整个硬盘的一个分区。在本文…

1月8日三王国著名将领

1月8日三王国著名将领

王国,将领,著名,电脑软件,三个国家中的三个国家在1月8日遭到了攻击。 三国是一个多人在线动作玩网络游戏(MMOARPG)基于三个王国的历史背景,它是由第九个独立开发。本部分由中国自主研发的产品,继承了游戏的行为特征,游戏采用的横画卷2D版,升华了…

这名悲剧男子在脸谱网被判犯有重婚

这名悲剧男子在脸谱网被判犯有重婚

重婚罪,这名,被判,悲剧,男子,密歇根的一位名叫列昂的李察·巴顿最近因重婚罪被捕,这不是别人,而是他自己的脸谱网。 授权方式:免费软件大小:647kb语言:简体 本周下载16次 李察于2004嫁给了他的第一任妻子。婚后,李察老师不见了,把妻子一个人留下…

安卓手机明天不能安装Flash播放器

安卓手机明天不能安装Flash播放器

安装,安卓手机,播放器,明天,电脑软件,当Android 4.1发布时,Adobe说,因为他们没有继续开发和测试新版本Android的Flash播放器,Android 4.1无法运行Flash播放器。 此外,所有版本的Android用户都应该关注它。从8月15日起,Adobe将使用谷歌Play存储…

公司荣获年度数据中心优秀运维管理

公司荣获年度数据中心优秀运维管理

年度,数据中心,运维管理,公司,单位,12月19日,2012中国数据中心的建设、运营和客户服务;在北京丽亭华苑酒店隆重开幕,工业和信息化部推进司Xu Yu、中国电源行业协会副主席王琦颖应邀参加会议,在中国的数据中心建设、会议运营管理、客户服务和对…

修改注册表的两个步骤,使用上面的7S

修改注册表的两个步骤,使用上面的7S

步骤,修改注册表,两个,电脑软件,有第四次见过朋友问我怎么版本是SP2啊第一次看到这样的帖子是一个笑话,但是似乎很多朋友在系统属性中出现了服务包2的问题。 事实上,通过一个按键控制注册表服务包显示系统属性,安装后的真正的服务包将修改这…

利用AndroidUC浏览器大幅提升市场

利用AndroidUC浏览器大幅提升市场

提升,市场占有率,浏览器,大幅,电脑软件,随着智能平台的兴起,各种移动应用已经开始通过新平台扩大用户和市场份额。记者在百度最新的移动互联网发展趋势报告2011 Q4中发现,百度手机搜索PV占了比例。2011,UC浏览器和安卓平台共获得超过10%的市场…

2012次欧洲联盟的三个独特亮点

2012次欧洲联盟的三个独特亮点

欧洲联盟,亮点,独特,电脑软件,自2011年8月起,他在2012年初进入中国移动浏览器市场的前三位,截至2012年底,欧洲朋友的用户数增长了500%,用户在前三大市场中的地位保持稳定。 Ou Peng已经成为三强移动浏览器行业的潜在新秀。它不仅依赖于其广阔…

腾讯电脑公司的巴特勒说,暗杀事件是

腾讯电脑公司的巴特勒说,暗杀事件是

公司,事件,腾讯,巴特勒,电脑软件,腾讯表示,QQ电脑管家无法启动360暗杀。今年7月4日21时,QQ电脑管家在其官方微博上说,今天有很多用户投诉。有人说,QQ电脑管家没有正常启动Windows,虽然没有具体说明问题的原因,但他们以一种可能的方式称这360事件…

360个浏览器想质疑禁止追踪破损的

360个浏览器想质疑禁止追踪破损的

漏洞,浏览器,电脑软件,准确的广告已经成为利润的主要手段,甚至是搜索引擎网站,填写当用户搜索的关键词在浏览器的搜索框,搜索行为,网站用户行为跟踪,导致用户打开任何网易会弹出与搜索相关的广告内容,一种强烈的反感的用户,然后指着浏览器,浏览器已…