若相依 发表于 2015-1-16 22:54:30

ASP编程:甚么才是进步ASP功能的最好挑选(续二)...

源代码保护方面其实现在考虑得没那么多了..NET也可以反编译.ASP写得复杂的话别人能看得懂的话.他也有能力自己写了.这方面担心的倒不太多.纵观现在网上可以下载的那些所谓BBS还有什么网站等等的源代码功能当利用一个纪录集时,是不是应当创立一个独自的Connection工具?

  要想准确回覆这个成绩,必要在两个分歧情形下查验测试了局:第一是每页实行一个数据库处置的情形,第二是每页实行多个数据库处置的情形。

  在后面的例子中,我们已创立了一个独自的Connection工具,并将它传送到纪录集的ActiveConnection属性。可是也有大概仅仅把毗连字符串传送到这个属性中,从而能够制止一个分外的步骤,即在剧本(ADO__03.asp)中例示和设置一个独自的组件:

  objRS.ActiveConnection=Application("Conn")

  只管我们仍旧在纪录会合创立了一个毗连,但它是在十分优化的情形下创立的,以是刚一入手下手我们就看到启动工夫比之前的测试削减了23%,同意料中一样,同每一个纪录的显现工夫几近没有甚么不同。

  因而,我们的第二个划定规矩是:

  *当利用一个单个纪录集时,将毗连字符串传送到ActiveConnection属性中。

  上面要断定当在一个页面上创立多个纪录集时,这个逻辑是不是仍然建立。为测试这个情形,我引进了FOR轮回,将后面的例子反复10次。在这个测试中,我们还将研讨3种选择:

  第一,我们在每一个轮回中创立并烧毁Connection工具(ADO__04.asp):

  Dimi
  Fori=1to10
  SetobjConn=Server.CreateObject("ADODB.Connection")
  objConn.OpenApplication("Conn")
  SetobjRS=Server.CreateObject("ADODB.Recordset")
  objRS.ActiveConnection=objConn
  objRS.CursorType=0adOpenForwardOnly
  objRS.LockType=1adLockReadOnly
  objRS.OpenApplication("SQL")
  IfobjRS.EOFThen
  Response.Write("NoRecordsFound")
 Else
  writeheadings
  ...
  writedata
  ...
  EndIf
  objRS.Close
  SetobjRS=Nothing
  objConn.Close
  SetobjConn=Nothing
  Next

  第二,在轮回外创立一个独自的Connection工具,并与每一个纪录集共享它(ADO__05.asp):

  SetobjConn=Server.CreateObject("ADODB.Connection")
  objConn.OpenApplication("Conn")
  Dimi
  Fori=1to10
  SetobjRS=Server.CreateObject("ADODB.Recordset")
  objRS.ActiveConnection=objConn
  objRS.CursorType=0adOpenForwardOnly
  objRS.LockType=1adLockReadOnly
  objRS.OpenApplication("SQL")
  IfobjRS.EOFThen
  Response.Write("NoRecordsFound")
  Else
  writeheadings
  ...
  writedata
  ...
  EndIf
  objRS.Close
  SetobjRS=Nothing
  Next
  objConn.Close
  SetobjConn=Nothing

  第三,在每一个轮回中将毗连字符串传送到ActiveConnection属性(ADO__06.asp):

  Dimi
  Fori=1to10
  SetobjRS=Server.CreateObject("ADODB.Recordset")
 objRS.ActiveConnection=Application("Conn")
  objRS.CursorType=0adOpenForwardOnly
  objRS.LockType=1adLockReadOnly
  objRS.OpenApplication("SQL")
  IfobjRS.EOFThen
  Response.Write("NoRecordsFound")
  Else
  writeheadings
  ...
  writedata
  ...
  EndIf
  objRS.Close
  SetobjRS=Nothing
  Next

  你大概已猜到了,在每一个轮回中创立并烧毁Connection工具是一个低效力的办法。可是使人受惊的是,仅仅在每一个轮回中传送毗连字符串比共享单连续接工具的效力只低一点点。

  只管云云,我们的第3条划定规矩是:

  *在一个页面上利用多个纪录集时,创立一个Connection工具,在ActiveConnection属性中反复利用它。

指针和锁的范例中,哪些是最无效的?

  到今朝为止,我们一切测试都只用了只向前(ForwardOnly)的指针在纪录会合轮回。可是,ADO还为纪录集供应了3品种型的指针:Static,Dynamic和Keyset。每种都供应了分外的功效,好比向前和向后挪动和当他人创建数据时能够看到修正情形的功效。不外,会商这些指针范例的内在不是本文会商的局限。我把这些留给你本人。上面是各类范例的对照剖析。

  与它们的同类ForwardOnly比拟,这些分外的指针都分明地形成了更年夜的负载(ADO__03.asp)。别的这些指针在轮回时代也更慢。我想与你一同分享的一条忠言是要制止这类设法:“我不时地必要一下Dynamic指针,以是爽性老是用它算了。”

  从实质上说,一样的成绩也合用于锁的范例。后面的测试中只利用了ReadOnly(只读)范例的锁。可是,另有三品种型的锁:LockPessimistic、LockOptimistic和LockBatchOptimistic。同指针的选择一样,这些锁也为处置纪录会合的数据供应了分外的功效和把持。一样,我将进修每种锁设置的得当用处的内容留给你本人。

  以是引诱我们思索划定规矩4的逻辑很复杂:利用最合适你的义务的最复杂的指针和锁的范例。

猎取一个纪录集最好的体例是甚么?

  到今朝为止,我们只是经由过程Recordset工具来恢复纪录集。可是ADO还供应了一些猎取纪录集的直接办法。下一个测试就将ADO__03.asp中的值与间接从一个Connection工具中创立一个纪录集工具(CONN_01.asp)来对照。

  SetobjConn=Server.CreateObject("ADODB.Connection")
  objConn.OpenApplication("Conn")
  SetobjRS=objConn.Execute(Application("SQL"))

  我们看到,负载有一个稍微的增添,显现每笔记录的工夫没有变更。

  然后,我们看看从一个Command工具中间接创立一个Recordset工具(CMD__01.asp):

  SetobjCmd=Server.CreateObject("ADODB.Command")
  objCmd.ActiveConnection=Application("Conn")
  objCmd.CommandText=Application("SQL")
  SetobjRS=objCmd.Execute

  我们再次看到负载有一个稍微的增添,每一个纪录的显现工夫有一个名义上的区分。固然最初这两种办法对功能的影响很小,却有一个年夜成绩必要思索。

  经由过程Recordset类创立一个纪录集关于把持怎样处置纪录集供应了最年夜的天真性。固然别的办法也没有提出一个压服性的功能成绩,可是你会被默许形态下前往何种指针范例和锁范例而狐疑,这些关于你的特定需求来讲纷歧定是最优的。

  以是,除非由于某种特别缘故原由你必要别的办法的话,请遵守第5条划定规矩:经由过程ADODB.Recordset类例示纪录集以取得最好的功能和最年夜的天真性。

是不是应当断开纪录集?

  ADO为断开一个纪录集供应了一种选择,纪录集要在一个向前查询中恢复一切数据、封闭毗连、利用一个当地(或客户)指针在数据会合挪动。这还供应了一个初期开释毗连的时机。这类情形关于处置远程数据</p>使用filesystemobject,可以对服务器上的文件进行操作,浏览、复制、移动、删除等。有ado的支持,asp对数据库的操作非常得心应手。你甚至可以像使用本地数据库那样,管理远程主机上的数据库,对表格、记录进行各种操作。

若相依 发表于 2015-1-19 16:58:46

学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。

爱飞 发表于 2015-1-24 14:50:33

交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。

透明 发表于 2015-2-1 17:03:07

运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。

若天明 发表于 2015-2-7 10:17:20

代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。

愤怒的大鸟 发表于 2015-2-21 18:09:46

如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:

飘飘悠悠 发表于 2015-3-6 20:40:26

学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:

兰色精灵 发表于 2015-3-13 08:17:46

作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。

小魔女 发表于 2015-3-20 17:26:46

虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。
页: [1]
查看完整版本: ASP编程:甚么才是进步ASP功能的最好挑选(续二)...