仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 767|回复: 11
打印 上一主题 下一主题

[学习教程] ASP编程:浅谈怎样创建三层系统布局的ASP使用程序...

[复制链接]
小妖女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 23:19:02 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。程序|系统跟着互连网使用的深切和开展,三层系统布局的使用形式也失掉更多人的喜爱。本文先容了三层布局使用程序的观点和长处,并分离一个实例先容了怎样创建三层布局的ASP使用程序。

1、两层布局的ASP使用有何弱点
在Browser/Server使用程序开辟范畴,微软公司的IIS/ASP以其壮大的功效,优秀的扩大才能,及与别的微软产物的分歧性,敏捷地盛行起来。它能使一个具有VB/VC履历的程序员,很快地成为一个Web程序员,开辟出看上往十分专业的使用。可是,ASP有一个生成的弱点,就是ASP代码和HTML代码是混在一同的,ASP程序员既必要思索与数据库打交道,必要体贴怎样与HTML共同,偶然还必要用ASP间接天生HTML代码。其了局是,当程序逻辑充足庞大时,.asp源文件十分长;并且,不管客户提出用户界面的改动,仍是贸易逻辑的改动(好比,在测验体系中,"及格"的尺度大概从到达60分就算及格,改成进进前100名才算及格),都必要对.asp文件举行修改,而贸易逻辑的改动,极可能必要修改良多文件。

2、三层布局的观点
在传统的Client/Server使用中,也存在着上述一样的成绩,多层布局的使用恰是在对C/S布局的总结基本上发生的,而且也已扩大到了B/S使用开辟范畴。行将使用分别为三层(能够有更多层,但三层最多见):用户界面层,贸易逻辑层,数据库层。用户界面层卖力处置用户的输出和向用户的输入,但其实不卖力注释其寄义(出于效力的思索,它大概在向上传输用户输出行进行正当性考证),这一层一般用前端工具(VB,VC,ASP等)开辟;贸易逻辑层是高低两层的纽带,它创建实践的数据库毗连,依据用户的哀求天生SQL语句检索或更新数据库,并把了局前往给客户端,这一层一般以静态链接库的情势存在并注册到服务器的注册簿(Registry)中,它与客户端通信的接口切合某一特定的组件尺度(如COM,CORBA),能够用任何撑持这类尺度的工具开辟;数据库层卖力实践的数据存储和检索。有了如许的布局,下面的成绩水到渠成:仍是以测验体系中的及格尺度为例,在客户端一切必要显现及格职员名单的中央,挪用如许一个函数GetQualifiedList,至于这个函数怎样编写,怎样与数据库打交道,以致会见的是何种数据库都与其有关(你必定有过如许的履历,在一种数据库体系上运转得很好的SQL语句,偶然换到另外一种数据库体系上必需加以修正);在两头层DLL中完成这个GetQualifiedList函数,假如用户对"及格"的界说变了,只必要修正这个函数就能够了,只需此函数的出口参数和前往内容稳定,在客户端不需作任何修改。在这里,我们看到了面向工具编程的特征之一封装性的长处,而这一点在开辟年夜型使用时特别有效--我们能够把开辟职员分红两组,一组卖力开辟界面层,另外一组卖力开辟贸易逻辑层,两边只需依照事前约定的函数接口,并行地开辟就能够,而不用向夙昔那样,前面的事情必需等后面的事情完成后才干入手下手。固然,如许的开辟形式必要很好的项目和谐和文档作撑持。

你大概会问,假如我把这些函数些在一个独自的文件中,再在必要挪用的中央把它包括出去,不是一样能到达目标吗?第一,这类办法效力不高,不管你把这些函数分离到几个文件中,当你必要挪用个中一个时,总会包括进一些实践上其实不必要的函数,这无疑减轻了服务器的包袱,对服务器功能请求较高的Web使用特别云云。而DLL只在必要时才调进内存且只调进必要的函数,而且多个使用程序实例能够共享统一个DLL实例;第二,假想一个员工,有20个属性(工号,姓名,岁数,性别......),如今给定某工号,请求前往此员工一切信息。此时假如纯真用函数,只能界说20个全局变量,在函数中改动这些变量值,大概界说一个有20个传参(byreference)参数的函数。明显,第一种办法很贫苦而一旦增添一个属性后一种办法就必要变动函数接口。而在一个工具里,既包括成员办法(即函数和历程),也包含成员属性。假如我们接纳工具的办法,则在函数中只必要改动工具的属性,在函数外能够间接援用改动了的工具属性值。这类办法有些相似第一种办法,但1.属性值无需在函数外一一申明;2.这些属性值只属于工具,与工具有关的代码不会偶然地改动属性值;3.一旦工具被开释,这些值会被一同开释。

3、怎样开辟三层布局的ASP使用程序
ASP具有优秀的扩大性,我们会见数据库时,接纳的时ADO工具,会见文件时,接纳的是文件体系工具(FSO),实在这时候程序已是三层布局的使用程序了,只不外因为是使用内置的工具而为意想到而已。这些工具都遵守COM/ActiveX接口,因而我们本人开辟的工具也要遵守这个接口。上面,我们就以上文提到的"及格"尺度为例,演示怎样创立本人的三层布局的ASP使用。
1、在数据库体系中创建以下数据库表:
    Employee:EMPLIDchar(5)notnull,
            Name  char(10)notnull,
            Genderchar(1)notnull,
            Score  intnotnull
此表存储员工信息和测验成就,为复杂起见,这里只包括工号,姓名和性别三项,而且只要一门测验,EMPLID为主键。

2、创建静态链接库

启动VB(这里以VB为例,你能够用你喜好的任何撑持ActiveX接口的开辟工具开辟),新建一工程,工程范例为ActiveXDLL。在工程中新建一个类,取名为Employee。你能够ClassBuilder可视化的向类中填加属性和办法,也能够间接手工编纂。起首填加EMPLID属性以下:
  PrivatemsEMPLIDasstring
  PropertyLetEMPLID(sEMPLIDasstring)
  msEMPLID=sEMPLID
  EndProperty
  PropertyGetEMPLID()asstring
  EMPLID=msEMPLID
  EndProperty
一样平常地讲,每个属性都应当有PropertyLet和PropertyGet两个办法,它们分离当向属性赋值和读取属性值时被挪用。假如某个属性只被赋值而从不被读取(这类情形多产生在对应数据库表的主键的属性上),则PropertyGet办法能够省略。PropertyLet办法不克不及省略。你能够模仿下面的程序再创建Name,Gender和Score三个属性。然后创立以下办法:
  PublicSubCreate(EMPLIDasstring)
  dimconnasnewConnection
  dimrsasnewRecordset
  dimsqlasstring
  SupposethatyoucreateaDSNinthecontrolpanel,theconnectionstringproperty
  canalsobedsn-lessstring
  conn.ConnectionString="dsn=dsnname;uid=username;password=pwd"
  conn.open
  sql="select*fromEmployeewhereEMPLID="&EMPLID&""
  withrs
  .opensql,conn,1,3
  if.eofand.bofthen
    exitsub
  else
    msEMPLID=trim(.Fields("EMPLID"))
    msName=trim(.Fields("Name"))
    msGender=trim(.Fields("Gender"))
    msScore=.Fields("Score")
  endif
  .close
  endwith
  setrs=nothing
  conn.close
  setconn=nothing
  EndSub
这里依据EMPLID创立Employee工具,注重数据库中的值是赋给三个公有变量,而不是间接赋值给属性,假如你单步伐试就会发明,给msEMPLID赋值会挪用PropertyLetEMPLID,也就是给属性赋值。
  上面我们再创立一个类Employees,并填加以下办法:
  privatecolQualifiedListasnewCollection
  privatemnCurrentIndexasinteger
  PublicSubGetQualifiedList()
  dimconnasnewConnection
  dimrsasnewRecordset
  dimsqlasstring
  Supposethatyou</p>由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况;
蒙在股里 该用户已被删除
12#
发表于 2015-3-27 14:11:13 | 只看该作者
Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件
柔情似水 该用户已被删除
11#
发表于 2015-3-19 07:50:38 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
小魔女 该用户已被删除
10#
发表于 2015-3-11 18:48:17 | 只看该作者
那么,ASP.Net有哪些改进呢?
乐观 该用户已被删除
9#
发表于 2015-3-4 11:23:05 | 只看该作者
我想问如何掌握学习节奏(先学什么再学什么)最好详细点?
老尸 该用户已被删除
8#
发表于 2015-3-4 11:23:04 | 只看该作者
我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
兰色精灵 该用户已被删除
7#
发表于 2015-3-4 11:23:03 | 只看该作者
学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
若相依 该用户已被删除
6#
发表于 2015-2-15 07:05:23 | 只看该作者
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
若天明 该用户已被删除
5#
发表于 2015-2-6 03:03:36 | 只看该作者
Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write
不帅 该用户已被删除
地板
发表于 2015-1-29 17:30:46 | 只看该作者
作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。
小妖女 该用户已被删除
板凳
 楼主| 发表于 2015-1-29 06:26:32 | 只看该作者
作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。
活着的死人 该用户已被删除
沙发
发表于 2015-1-20 09:30:09 | 只看该作者
先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 10:14

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表