|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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代码,可快速地完成网站的应用程序。还无法完全实现一些企业级的功能:完全的集群、负载均横。 |
|