|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP.NET和ASP的比较,技术上比较已经没什么可说的了.新一代在大部分程度来说当然是比旧一代好了. 关键看你对所做软件的理解了.因人而定.会写的话也可能比ASP.NET写得更有效率和更方便重用法式|掌握|数据|数据库 在编程中,常常需求利用事务。所谓事务,就是一系列必需都胜利的操作,只需有一步操作掉败,一切其他的步调也必需撤消。好比用ASP开辟一个收集硬盘体系,其用户注册局部要做的事有:
将用户信息记入数据库
为用户开个文件夹用于存储
初始化用户操作日记
这三步必需利用事务,不然万一磁盘操作掉败,而没有撤消数据库操作,就会形成只能上岸而不克不及操作的“逝世用户”景象。
因为数据库体系特别的开展汗青,小至Access,大到DB2,无不带有事务撑持。因而上述步调可以以下暗示:
On Error Resume Next
第一步:
在事务情况下把用户信息记入数据库
If Err Then
封闭毗连
加入
Else
第二步:创立文件夹
If Err Then
回滚第一步数据库操作,加入
Else
第三步:在事务情况下操作日记数据库
If Err Then
回滚第一步操作,删除第二步创立的文件夹
加入
End If
End If
End If
提交第一步数据库操作的事务
提交第二步数据库操作的事务
End
每步都需求停止判别,假如掉败,还需求手工回滚后面多步操作,使法式变得庞杂、难明。假如从此更新了法式,增添其他步调,还需求嵌套更多层的If...Else...End If,使法式流程加倍庞杂。
准确的处理举措是利用ASP的事务掌握功效。IIS经由过程和MTS办事接洽,可以掌握多种撑持事务的体系,当法式收回“掉败”的旌旗灯号时,一切撑持事务的体系均将主动回滚,即便操作已正式完成;对不撑持事务的操作也供应了便利的手工回滚体例。下面的例子用ASP事务掌握功效重写以下:
<%@ TRANSACTION = Required %>
On Error Resume Next
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open ....
Conn.Execute "INSERT...."
Conn.Close
Set Conn=Nothing
Set Conn2=Server.CreateObject("ADODB.Connection")
Conn2.Open ....
Conn2.Execute "INSERT...."
Conn2.Close
Set Conn2=Nothing
Set FSO=Server.CreateObject("Scripting.FilesystemObject")
FSO.CreateFolder "...."
If Err Then
ObjectContext.SetAbort '告诉一切撑持事务的组件回滚,并运转手工回滚代码
Else
ObjectContext.SetComplete
End If
Set FSO=Nothing
Sub OnTransactionAbort
Response.Write "毛病"
FSO.DeleteFile Server.Mappath("a.txt") 'FSO的手工回滚――删除文件夹
End Sub
Sub OnTransactionCommit
Response.Write "成功完成义务"
End Sub
%>
第一行的<%@ TRANSACTION = Required %>暗示这一页ASP文件需求MTS的事务撑持。两头的各个操作都按通俗按次书写,而不必思索回滚成绩。在法式最初判别是不是有毛病。假如有,挪用ObjectContext的SetAbort办法,IIS会经由过程MTS办事告诉一切撑持事务的组件回滚(次要是数据库),而且运转Sub OnTransactionAbort对不撑持事务的操作手工回滚;假如没有产生毛病,挪用ObjectContext的SetComplete办法,则会运转Sub OnTransactionCommit来显示胜利的动静。
全部ASP法式不需求为判别毛病和回滚操作书写过剩的代码,只须在最初停止判别,即便从此增添了多步操作,也只需求在Sub OnTransactionAbort中停止掌握便可,十分便利,法式员可以专注于进程编写而不是书写纠错代码。
其实ASP还供应了很多更有效的功效,等着咱们利用,万万不要觉得ASP利用剧本言语,功效就必定弱。
</p> 由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况; |
|