仓酷云

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

[学习教程] ASP编程:组件对象开辟Web使用的实例剖析

[复制链接]
飘飘悠悠 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:32:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
强大的可扩展性。ASP具有强大的扩展性,可以实现与多种网络、硬件设备的连接:通过专用的通讯线路远程接入企业; 通过远程拨号服务器为远程拨号客户提供服务;通过WAP为移动电话互联网客户服务。   转载盘算机世界)
夏长虹 童亮 陈文博
一. 使用实例的剖析与开辟

---- 咱们以学籍办理体系为后台,基于Windows DNA的思惟,开辟了一套使用体系。在该体系中,有关教务学籍的事务逻辑都是由定制COM组件来处置的,静态Web页面经由过程ASP剧本挪用这些组件。体系在开辟速度和软件质量等方面都优于不必COM组件而仅用ASP剧本的计划。为申明成绩,咱们经由过程一个定制组件和ASP剧本的次要代码复杂引见部分功效的完成进程。

---- 在displayscore.asp页面中承受、分辨用户的查询恳求,做出分歧的查询处置。当客户的身份为教员或教务时,可以查询一切先生的成就;当客户的身份为先生时,只能查询该生自己的成就。

---- 定制COM组件Score.dll停止查询处置。起首设计该组件的接口,为组件设置四个属性: Subj(课程)、Term(课程所属学期)、Class(查询的班级)和Stu_No(查询先生的学号);界说两个办法:RequeryScores和RequeryAllScores,分离对教员、教务部分和先生的恳求做出响应的处置,并将查询了局集前往给用户。

---- 以下是完成该组件Score.dll的局部关头代码。从中咱们可以看到组件的接口是若何完成的:

Option Explicit
Private m_StuNo As Variant
Private m_Subj As String
Private m_Term As String
Private m_Class As String
  ' 设置属性为可写入的
Public Property Let StuNo(ByVal vNewValue As Variant)
m_StuNo = vNewValue
End Property
Public Property Let Subj(ByVal vNewValue As Variant)
m_Subj = vNewValue
End Property
......            
' 先生查询成就恳求处置
Public Function RequeryScores() As Object
Dim objContext As MTxAS.ObjectContext
Set objContext = GetObjectContext()
             ' 创立事务性组件
Dim ObjConn As ADODB.Connection
            ' 使用ADO会见数据库
Dim ObjRecordset As ADODB.Recordset
Set ObjConn = New ADODB.Connection
ObjConn.Open "xia", "sa", ""
Set ObjRecordset = New ADODB.Recordset
Dim query As String
' 依据查询请求(查询一切课程、查询特定学期的一切课程、
  查询指定课程、查询特定学期的某一课程)停止分歧的查询操作
If (m_Subj = "all" And m_Term <> "all") Then
  query="select   Client_Name,Client.Client_No,Courses.subject,
         stu_score.score,stu_score.term,sub_type"
  query = query & " from client,stu_score,courses"
  query=query&"where client.client_no=stu_score.client_no
  and stu_score.subject=courses.subject
  and courses.term=stu_score.term
  and courses.term='" & m_Term & "'
  and Client.Client_no='" & m_StuNo & "'"
End If
......
ObjRecordset.Open query, ObjConn
         ' 停止数据库查询
ObjContext.SetComplte
             ' 若事务胜利完成,则提交该事务
RequeryScoresExit:
Set RequeryScores = ObjRecordset
          ' 前往查询了局集
Exit Function
RequeryScoresErr:
Set RequeryScores=Nothing
           ' 事务掉败处置
End Function
' 教员、教务查询成就恳求处置
Public Function RequeryAllScores() As Object
......
End Function
---- 在ASP页面displayscore.asp中援用组件,ASP代码以下(个中加粗的局部即是对该组件的挪用):
< %@ LANGUAGE="VBSCRIPT" % >
< HTML >
< HEAD >
< META NAME="GENERATOR" Content="Microsoft
Visual InterDev 1.0" >
< META HTTP-EQUIV="Content-Type"
content="text/html; charset=gb_2312-80" >
< TITLE >Show To Teacher< /TITLE >
< /HEAD >
< BODY background="images/bk.GIF" >
< %
  dim objResult
  set objResult=Server.CreateObject("Display.Score")
  dim Term,Subject
  Term=Cstr(Request.Form("Term"))
  Subject=Cstr(Request.Form("Subject"))
  objResult.term=Request.Form("term")
  objResult.Subj=RequestForm("Subject")
  objresult.class=Request.Form("Class")
  dim Scores
  set Scores=objResult.RequeryAllScores
  % >
' 以下代码为显示处置的了局
< div align="center" >< center >
......
< table border="0" cellpadding="0"
cellspacing="1" width="100" >< tr >
< %For I = 0 To Scores.Fields.Count - 1% >
< td bgcolor="#004080" >
< strong >< font color="#FFFFFF" > < small >  
< %=scores(I).Name% >< /font > < /strong > < /td >
< %NEXT
  Do While (Not Scores.EOF)% >
   < /tr >< tr >
     < % For I = 0 To Scores.Fields.Count - 1% >
        < td bgcolor="#ACE8F9" >< p align="center" >
          < %= Scores(I).Value% >< /td >
        < %Next
        Scores.MoveNext% >< /tr >
  < %Loop% >
< %Scores.close
       ' 封闭数据库毗连
set Scores=Nothing
set objResult=Nothing % >
      ' 释放对象
< /table >< /center >< /div >
< /BODY >
< /HTML >
---- 可以想象,假如仅利用ASP剧本停止营业处置就会使ASP页面中代码非常痴肥、流畅。而利用组件的计划也较纯真的ASP剧本履行速度速度快。而且可以将全部查询处置作为一个事务,包管数据库信息的平安、完全。将该组件在MTS中注册,又可防止多用户会见该主页时能够酿成的收集堵塞。实践使用中,先生和教员的利用权限是分歧的。在先生查询成就的页面中,可重用该组件,只是挪用其分歧的接口罢了。仅利用ASP剧本停止营业处置,则需从头编写与displayscore.asp相似的、一样烦琐的代码。在开辟过程当中,分歧的开辟人员可各展其长,同时停止组件和ASP页面的设计,延长了软件开辟周期。
---- 以下两图显示的是教员(教务)查询成就和显示查询了局的页面:

二. 开辟过程当中帮助东西的利用

---- 传统的软件工程停止的需求剖析、数据库设计等都是人们“纯手工”完成的,缺少严谨性和标准性。而在以组件为中间的体系剖析和软件开辟过程当中,应力争利用无效的盘算机帮助东西,以顺应疾速建模和组件办法新情势的需求,进步剖析的质量及精度。

---- 有良多帮助东西可以使用。因为以组件为中间的体系剖析进程仍保存着传统软件工程办法的头绪陈迹,北大青鸟的CASE东西对传统的软件工程办法对照无效,咱们采取了这一东西。在数据库建模方面,咱们选用了SYBASE 公司的S-Designer,可将数据库概念模子主动转化为物理模子。

---- 1. 使用青鸟CASE东西编写需求剖析文档

---- 久长以来,人们已习气于“纯手工”地停止需求剖析。开辟人员对现有体系和用户请求停止查询拜访后,需求设计体系的数据流图(DFD图),编写小申明,设计体系的布局图(SC图)。但这类剖析办法是不严谨的,因为各种缘由,能够会产生加工、数据流、文件的语法界说毛病;数据流图高低各层纷歧致;数据流图分化后的数据不屈衡,或文件等重名及文档不完整等各类成绩,影响了咱们对用户需求的剖析和了解,防碍了从此的任务。特别是对组件的剖析恰当,效果不可思议。

---- 青鸟CASE东西供应的便是一套撑持软件工程中采取传统的布局化办法停止需求剖析、软件设计的东西。由东西生成的每一个文件即一个项目,每一个项目均包含数据流图和模块布局图两局部:

数据流图局部帮助体系剖析员完成对软件体系的需求剖析、创立方针体系的需求模子、生成一份准确、完全的关于方针体系的申明文档;同时,供应对需求文档的查询、列表、分片、影响局限等剖析功效,帮助软件设计人员对需求剖析的了局文档停止深切、仔细的剖析和了解,以利于软件设计任务。

模块布局图局部帮助法式设计人员在需求剖析阶段完成后对软件体系停止设计,撑持模块的逐层细化,创立体系的软件系统布局,最初失掉一份准确、完全的软件设计文档。同时,供应对设计文档停止查询、列表、分片、影响局限等剖析功效,完成对设计的了局文档停止深切、仔细的剖析了解,以利于软件开辟及保护任务。在SC图中组件的计划计划已见眉目,持续细化将得出每一个组件的概要设计计划。
---- 在教务体系的实例中,使用青鸟CASE东西生成的DFD图和SC图以下图所示:
---- 体系1层DFD图 体系0层SC图

---- 2. 使用S-Designer停止数据库设计

---- 当完成体系的具体设计后,接上去即是数据库设计。数据库设计在全部软件工程中占领无足轻重的位置。数据库设计不公道,数据得不到公道、无效的存储,数据存在潜伏的纷歧致性、不完全性或有大批冗余,城市下降体系功能,乃至使体系溃散。

---- 手工的数据库设计完整依附于设计者的设计程度。设计者起首必需依据实践需求创立若干个逻辑上存在的数据库表,并使其知足第三范式;尔后依据它们之间的接洽创立特定命据库表将其接洽起来。这是一件相当烦琐的事。数据库设计者既要停止数据库的逻辑设计,又要将逻辑模子转成物理模子,并且设计出的数据库纷歧定能知足第三范式。公道的库表布局决意了访库组件接口的设计质量,所以本来数据库设计体例不合用于以组件对象为中间的软工设计。

---- 在教务体系的实例中,S-Designer使数据库设计变得轻松、复杂起来。设计者只须依据实际需求,设计出数据库的E-R图,S-Designer会将逻辑模子转化为物理模子,为数据库表间的接洽创立新表,指明表的主码、外码,并主动对数据库表停止分歧性、冗余性、完全性反省,使数据库表知足第三范式。

---- 例:可起首设计出数据库表课程(Courses)和先生(Client)的逻辑模子:

---- 接上去,为表Courses和Client间创立接洽。由S-Designer主动生成的物理模子,以下图所示,它们为访库组件的接口设计供应了正确的根据。

---- 可以信任,跟着软件工程学的进一步成熟,将呈现更多的盘算机帮助东西,匡助软件开辟人员构建出更完美的使用体系。很多帮助软件东西可以完成类似的任务,究竟选用何种帮助东西取决于这些东西的功能和利用者的习气。

---- 以组件对象为中间的静态Web办法和DNA思惟其实不一目了然,开辟手艺也越发标准化。应该说,这套办法更合适客不雅信息布局的实际,也更接近于人们的思惟体例,其手艺有如行云流水般天然,很合适在中小型企业情况中推行和普及。因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。还无法完全实现一些企业级的功能:完全的集群、负载均横。
海妖 该用户已被删除
沙发
发表于 2015-2-4 01:56:44 | 只看该作者
作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。
变相怪杰 该用户已被删除
板凳
发表于 2015-2-9 09:38:10 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
分手快乐 该用户已被删除
地板
发表于 2015-2-27 05:18:46 | 只看该作者
不能只是将它停留在纸上谈兵的程度上。
小女巫 该用户已被删除
5#
发表于 2015-3-8 22:11:57 | 只看该作者
那么,ASP.Net有哪些改进呢?
愤怒的大鸟 该用户已被删除
6#
发表于 2015-3-15 04:57:21 | 只看该作者
多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
小妖女 该用户已被删除
7#
发表于 2015-3-21 18:26:23 | 只看该作者
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
8#
发表于 2015-3-27 20:09:57 | 只看该作者
哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
老尸 该用户已被删除
9#
发表于 2015-3-29 23:50:00 | 只看该作者
运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
因胸联盟 该用户已被删除
10#
发表于 2015-4-5 11:50:14 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
透明 该用户已被删除
11#
发表于 2015-4-12 12:22:02 | 只看该作者
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
蒙在股里 该用户已被删除
12#
发表于 2015-4-13 01:30:46 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
柔情似水 该用户已被删除
13#
发表于 2015-4-17 20:40:25 | 只看该作者
以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。
简单生活 该用户已被删除
14#
发表于 2015-4-26 07:11:51 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
乐观 该用户已被删除
15#
发表于 2015-4-28 02:01:25 | 只看该作者
学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
飘灵儿 该用户已被删除
16#
发表于 2015-6-10 06:38:22 | 只看该作者
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
灵魂腐蚀 该用户已被删除
17#
发表于 2015-6-13 21:22:57 | 只看该作者
先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习
再见西城 该用户已被删除
18#
发表于 2015-6-17 03:22:39 | 只看该作者
Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件
山那边是海 该用户已被删除
19#
发表于 2015-6-28 08:47:21 | 只看该作者
完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。
第二个灵魂 该用户已被删除
20#
发表于 2015-7-9 20:22:55 | 只看该作者
我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-7 08:00

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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