谈谈ASP,为其正名
众所周知,微软已经停止了对ASP的更新,跟着许多的开发者相继抛弃它。在Google上搜一下,可以发现一大堆对ASP不好的评价,什么运行速度慢、异常处理机制不好、缺乏面向对象机制、开发效率低、漏洞多等等。然而,到目前为止我还在使用ASP开发Web应用程序,虽然不支持跨平台应用是一个显著的缺点(ASP的核心就是COM,这个东西只能在windows系统上使用了),但是我仍然认为ASP无论是作为入门的技术还是开发平台,都很值得我们继续去使用。下面就结合自己的使用经验和别人的一些看法,来给ASP一个中肯的评价。
一、ASP不慢,慢的是数据库
在使用ASP+Access架构的程序时候(包括我自己写的下载系统),我也遇到了某些人所说的速度慢,后台处理大量数据时卡死不动的问题。然而,当我把Access数据库换成SQL Server数据库后问题就解决了。所以罪魁祸首乃Access。程序执行所需的时间是毫秒级别的,在这个级别内,无论是10毫秒还是100毫秒,实在是难以感觉出来,但是Access的并发性差,阻塞了部分程序执行,导致页面卡死。Access的相对SQL Server的无成本,使得国内人对ASP+Access滥用,导致了大家对ASP的误解。
二、异常处理机制很好,只是很多人不知道
很多人包括我在内都主要用VBScript来编写ASP程序,VBScript的异常处理机制的确是糟透了。然而,JScript则 很好,因为它支持包括C#、Java都有的try…catch语句,足以处理所有异常。
三、在JavaScript蓬勃发展的现在,面向对象也不是问题
自从JavaScript因为Ajax而兴起,它的面向对象机制就已经被模拟出来了。虽然不是真正的面向对象, 但是作为中小型Web程序,这也足够了。同样以ECMAScript为核心的JScript也拥有相同的机制。此外,ECMAScript的语言灵活性无疑是最强的,做前端开发的人员对此最为清楚。
四、漏洞是程序员造成的
经常听到有人说ASP的SQL注入漏洞非常严重,其实无论什么语言都存在这样的漏洞,问题在于程序员会不会堵。ASP中可以通过参数化查询简单高效地解决这个问题。不需要字符串替换,甚至不需要数据验证。
五、开发中小型应用效率不低
很多人说ASP.NET的开发效率高,我对其持反对态度。如果应用程序的功能需求不复杂,绝对是用ASP开发要快。因为ASP是解析执行,不需要编译。修改、调试要方便得多。Windows也为ASP提供了一个很好的运行环境(IIS,这个到目前的最新版本IIS7.5都对ASP提供支持,看来微软也没完全放弃它),无需再作额外的配置。此外,当前后台都用JS时,很多代码都可以复用,这是其他技术平台无法比拟的。
六、可以认识Web应用程序的基本原理
ASP.NET、PHP等技术屏蔽了许多Web的底层,这对初学者认识Web程序的原理非常不利。而ASP则绝对是从最基础写起,比如上传文件的程序就必须分析数据包获取文件数据。一切从头写起,而不是简单的靠一个函数解决,并且目前也没有一个较好的ASP框架,这也许是许多人指责ASP开发效率不高的原因之一吧。
不过有一点是可以肯定的,那就是:ASP的入门门槛最低。这按理说应该算ASP的优点,它秉承了微软技术一贯的作风——简单,入门门槛低。也正是因为这一点,使得大量的Web开发领域的新手能够很快地开发网站。但也正因为这一点,使许多掌握了ASP的一点皮毛知识的人自认为对ASP很懂,结果写出很垃圾的程序,让别人看了ASP的笑话。看ASP的语法很简单,Java的语法也复杂不到哪里去,C++和C虽然复杂但是只要是一个智力正常的人也没有理由学不会。问题是语法本身很简单,但是Web很复杂。我们不是在这里浅尝辄止地玩弄一下某种脚本语言,我们是在做Web开发。Web开发虽然有不同的解决方案,但是基本的原理是相通的。如果你清楚Web端程序的一些运行原理,你就会明白你使用的开发技术的语法难度只不过是一种入门级的难度,真正的难度不在于你用什么技术方案去开发Web应用程序,真正的难度在于错综复杂的Web应用自身。我用ASP写程序也已经有6,7年了,但是却发现写得越多,自己需要学习进步的地方越多。每当看到真正高手写的程序时候,看到那如诗般的代码的时候,自己都感到汗颜,所以学无止境!
