爱飞 发表于 2015-1-16 23:18:28

ASP网页设计VBScript - JScript:谁怕谁?

ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于WindowsNT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失;js|jscript|vbscript导读
  在ASP情况下,VBScript和JScript哪一种言语更好一些?本文测试这两种剧本言语完成罕见操纵所必要的工夫,剖析它们各自的优点和不敷,并依据测试了局得出了一些值得存眷的结论。
作者:神仙掌事情室2000-12-19
  原文出处:http://www.asptoday.com/articles/20000920.htm
  选择计划系统必要思索很多要素,常常干系到基于功能、容量、可保护性、人员履历、现有基本、团体喜好的本钱上风剖析。在典范的Microsoft/IIS完成中,这类思索将持续深切扩大到ASP与大批分歧的COM+组件合作时所承当的脚色:在一个极度,注意功能远远凌驾编程和保护的便利水平,ASP只作为整合营业逻辑和用户界面的“粘合剂”;在另外一个极度,注意编程和保护的便利水平凌驾功能,ASP自己用于完成很多营业逻辑。
  这类思索乃至还能够持续深切一步,剖析ASP的两种次要剧本言语(VBScript和JScript)绝对而言各有哪些优弱点。从功效上看,同意JScript的人能够说JScript供应了诸如更好的毛病把持、承继、位操纵和一种客户端、服务器端基础通用的剧本言语等长处;反过去,同意VBScript的人能够说VBScript也有本人的特性,如极为丰厚的当地化才能,巨细写有关的代码,加倍复杂直不雅的语法(固然,C程序员对这一点会有贰言)。极度地说,我们不但能够到达如许一个在统一网站分歧ASP页面上剖析两种言语各自长处的深度,并且在单个ASP页面以内也是云云!
  固然偶然在统一ASP页面内利用多种剧本言语可以简化编程,但它对功能倒霉。只需大略地思索一下这个成绩,我们就晓得运转这类ASP页面必要启动并缓存两个剧本引擎,极年夜地增添了开支。(并且,即便我们能够疏忽功能成绩,夹杂使用两种剧本言语自己就是不平安的,这是由于引擎缓冲机制将影响实行按次。简而言之,假如开辟者不当心的话,利用二个或以上剧本引擎的ASP页面大概不会按次地实行。)
  本文所要深切研讨的就是这个Windows2000/ASP3.0平台上VBScript对照JScript(和VBScript加JScript)的功能成绩。详细地说,本文将回覆以下成绩:
是不是个中一种剧本言语要比别的一种快一点?
假如是,是在哪一种情况之下和为何?
是不是存在夹杂利用两种剧本言语能够削减实行工夫的情况?(这类情况是不是具有实际意义?)
假如某种言语老是比别的一种要快,二者速率差别的巨细是不是足以成为选择剧本言语的思索要素?
  为回覆这些成绩,我们将对照8个典范例程的实行工夫,这些例程用VBScript、JScript和二者分离编写(二者分离是指,一种剧本言语作为ASP页面的次要言语(基础言语),由它来挪用另外一种剧本言语编写的内嵌函数)。这8个例程是:
字符串翻转(倒置),
在一个字符串内搜刮另外一个字符串,
正则表达式形式婚配,
位移操纵,
复杂数学盘算,
庞大数学盘算,
数组初始化,
ADO纪录集遍历。
  剖析办法
  鉴于影响Web使用功能的要素是云云浩瀚,并且真正坚苦的大概还在于设置出一个完整受把持的(也叫做“不实际的”)测试情况,本文的目标不是给出两种言语功能对照而言其差别的准确测度,而是给出各类编程计划下功能绝对上风的牢靠唆使。
  这就是说,我们的方针不是为了晓得JScript的正则表达式形式婚配操纵要比VBScript的快23%,我们次要体贴的是:是不是存在这类差别,这类差别一样平常有几分明,在甚么样的情形下存在这类差别,和为什么会云云。
  本文只给出汇总(均匀)数据。假如要检察更详细的数据,能够在data.xls找到原始的测试了局。data.xls能够从本文前面下载。
  测试是在一个桌面体系长进行,设置为:400MHzCeleron处置器,128MBRAM,操纵体系是Windows2000Server(5.00.2195),Web服务器是运转ASP3.0(asp.dll5.0.2180.1)的IIS5.0.2157.1。剧本引擎(JScript和VBScript)的版本是5.1.0.4615。测试时代体系所运转的服务减小到最小数目,并且为尽量地包管测试情况的不乱性,这个最小数目一向坚持稳定。
  别的,思索到IIS的默许剧本引擎设置大概形成测试了局的偏向,很多测试在两种大概的默许剧本引擎设置下举行。在一切测试过的计划中,该要素均不影响实行工夫的前后和实行了局差别的巨细。
  测试工具
  两个测试用的工具页面分离用VBScript(default.asp)和JScript(default-js.asp)编写。这两个页面具有一样的功效:让测试者选择一个ASP页面并指定实行该页面的次数,纪录准确到千分之一秒的累计实行工夫(见下图)。(被实行页面由测试工具页面的Server.Execute挪用)。

  


              【】
  一样,思索到剧本引擎的初始化操纵大概影响被挪用页面的实行工夫,很多测试计划都分离用两个测试工具页面在分歧的IIS默许剧本引擎设置下举行了测试。和后面一样,在一切测试过的计划中该要素均不影响实行工夫的前后和实行了局差别的巨细。(但是,关于测试纪录来讲,即便IIS的默许剧本引擎设置成了JScript,用VBScript写的测试工具页面仍是要比用JScript写的测试工具页面略微快一点)。
  功能器度尺度
  本文测试的功能器度尺度是实行工夫。实行工夫四舍五进到最靠近的毫秒值。假如测试工具页面屡次实行测试页面(比方1000次的Server.Execute挪用),实行工夫肇端地位在包抄测试页面挪用的“Forloop”轮回之前,实行工夫的停止地位在轮回停止后。
  基于VBScript的测试工具页面用Timer()函数盘算实行工夫,基于JScript的测试工具页面用JScript的Date工具盘算实行工夫。
我们选择了八个分歧的测试例程(一切测试用到的代码已在本文前面的下载ZIP文件中供应)。假如言语自己不具有某个办法或函数,则编写一个公用的办法。
  1.字符串翻转:举行这个测试不但是由于它是一个很有代表性的操纵,并且由于VBScript供应了内建的StrReverse()函数而JScript却没有等价的函数或办法。这为我们供应了一个很好的夹杂言语编程测试案例。本测试中被翻转的字符串是“StringReversal”。
  2.在一个字符串中搜刮另外一个字符串:VBScript和JScript自己都供应完成该义务的办法。我们用VBScript的InStr()函数和JScript的indexOf()办法在字符串“Thisisasentencewrittenforthesakeofwritingasentence.”中查找字符串“ke”的肇端地位。
  3.正则表达式形式婚配:固然VBScript比来才到场了正则表达式撑持,但这仍然是一个很好的对照测试案例。JScript供应林林总总可以承受形式的String工具办法,使我们可以更天真地举行处置;而VBScript没有这么天真,必需在RegExp工具所界定的局限内举行。测试页面包括一个函数,这个函数承受字符串“RegularExpressionPatternMatch”和正则表达式“/(eg)|y|t{2,}/”,并前往婚配总次数。
  4.位移操纵:JScript有位操纵符而VBScript没有,这又是一个很好的对照测试案例。在举行这个测试的页面中将举行以下操纵:97<<5和-14>>2。
  5.复杂数学盘算:举行以下盘算:18976.6754+(-908.6)+1475.211。
  6.庞大数学盘算:测试页面包括如许一个函数,它依据两个点的坐标盘算出它们之间的间隔(英里)。VBScript的盘算表达式为:Distance=Round(Sqr(((69.1*(latA-latB))^2)+((69.1*(Abs(lngA)-Abs(lngB))*Cos(latB/57.3))^2)),1).
  7.数组初始化:只需呈现对数组元素的会见,VBScript和JScript引擎都将创立全部数组的一时拷贝,这也是一个很好的测试案例。别的,JScript的数组同时也是带有很多办法和属性的工具,而VBScript中数组只是一个数组。这个测试经由过程For轮回初始化一个有100,000个元素的数组,每一个元素都被付与轮回计数器的值。
  8.ADO纪录集遍历:这个测试利用的数据库是Access2000的“Northwind”数据库,程序经由过程ADO毗连工具实行“SELECT*FROMORDERS”命令取得一个ADO纪录集。程序使用两个嵌套的轮回:内部轮回遍历纪录,外部轮回遍历每一个纪录的一切字段。这个测试案例之以是好,是由于JScript必要实例化一个Enumeration工具才干遍历工具汇合,而VBScript只必要一个ForEach...Next轮回就能够完成一样的义务。
下面的第1、3、4、六几种算法有一个配合特性:大概是个中一种言语独具某个功效,大概在正则表达式婚配和间隔盘算中,两种言语的不同十分年夜,足以成为一个很成心义的夹杂言语编程测试项目。这就为我们测试这些算法增添了两种计划:以VBScript作为基础言语挪用内嵌的JScript函数;以JScript为基础言语挪用内嵌的VBScript函数。测试代码举比方下(测试计划:字符串翻转,以JScript为基础言语,VBScript内嵌):<%@Language=JScript%><SCRIPTlanguage="VBScript"runat="Server">FunctionStrRevVB(strParm)StrReverse(strParm)EndFunction</SCRIPT><%StrRevVB("StringReversal")%>
  一切其他例程都只包括言语自己供应的功效,这些例程只用纯VBScript和纯JScript版的代码测试。换句话说,关于任何情况的夹杂言语编程公道性测</p>asp是基于web的一种编程技术,可以说是cgi的一种。它可以完成以往cgi程序的所有功能,如计数器、留言簿、公告板、聊天室等等。

只想知道 发表于 2015-1-20 09:28:49

Session:这个存储跟客户端会话过程的数据,默认20分钟失效

山那边是海 发表于 2015-1-21 07:13:39

那么,ASP.Net有哪些改进呢?

冷月葬花魂 发表于 2015-1-24 21:06:34

不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍

飘灵儿 发表于 2015-1-30 14:23:37

Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件

愤怒的大鸟 发表于 2015-1-31 06:11:27

虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。

简单生活 发表于 2015-2-6 17:45:05

多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。

变相怪杰 发表于 2015-2-17 20:38:13

我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.

小魔女 发表于 2015-3-5 22:43:52

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

再见西城 发表于 2015-3-12 16:30:03

代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。

飘飘悠悠 发表于 2015-3-19 23:56:35

如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。
页: [1]
查看完整版本: ASP网页设计VBScript - JScript:谁怕谁?