| 学习用ASP编写计数器(上) |
|
|
| aT Studio Sherlock 赛迪网 2002-02-02 |
序
作为网络上最重要的信息载体的Web服务从互连网诞生尹始就开始了她漫长的发展路程。从最早的HTML 1.0版到之后的HTML 4.0以及DHTML,客户端所使用的语言从来没有停止过发展。但是Web语言如何的进步,也只是在外观上做到"动态",根本的数据以及资料都是静态的,就好比是新瓶装旧酒。如果要想更换资料的话就要运用一些工具对页面本身进行修改,这样做效率势必要低下的多,因为除了修改还要考虑到非本地的上下传所花去的时间;而且,因为是人工操作,一些粗心导致的整个页面的错误也是不可避免的。如果是多人操作,这个困难度更是可想而知。
有问题就要解决,于是能够动态生成页面的语言和平台出现了。从CGI开始,人们就终于能够领会到论坛、聊天室这些网络程序(Scripts)所带来的便利了。但是写过CGI的人都知道由CGI所生成的页面都要一句句的通过语句输出,效率低,而且相当的麻烦。接着,插入式语言就诞生了。ASP、PHP和JSP就是这一类型的代表,他们的特点是通过一些标志可以把一段段的代码插入到页面里,既大大的提高了产生页面的效率,也使编写工作轻松很多。其中ASP是最早出现的,她可以使用VBScript、JavaScript和Perl作为编写语言,而这三者中VBScript又是最常用的。由于ASP去除了变量类型声明(这点有优有劣,降低了难度同时也降低了效率),VBScript继承了相当部分Basic语言的成分,在极短的时间内ASP就流行起来,大小网站都能看到她的身影,似乎不用ASP就不能做网站一般。虽然ASP+已经推出,PHP和ASP也依靠他们过人的某些方面的优点大有取代ASP之势,但是ASP依靠的Win32(不是win 3.2而是Windows32位)平台到底是当今最流行的操作平台,ASP使用的范围还是相当广的。而且这些网络语言有相当大的共通性,熟练了入门级的ASP后可以很容易地向其他语言进发。
不过当你大量使用别人的ASP代码时,是否想过要自己尝试一展身手呢?本篇是针对那些有Basic语言使用经验的入门级程序员的,可以帮助你们快速的掌握一把新的利器。其实ASP的核心--六大对象通过查阅MSDN可以很快的掌握,笔者只用了一天时间就融会贯通了。但是由于与普通的应用程序不同,真正使用的时候会遇到不少的麻烦,积累这些经验这才是真正的财富。笔者就是想在进行语言教学的同时加入自己的心得,使读者能在更短时间学到更多东西。不过笔者毕竟水平有限,读者千万不要被禁锢住思维,要学会不断地学习、尝试、积累,还有别忘了把你们的经验与我交流啊。
ASP及其平台运行机理介绍
也许大家会认为介绍这个是浪费时间,其实不然,了解了原理才能更好的解决实际问题。笔者碰到的很多问题都是在了解了运行机理后得以解决的。
ASP全称是Active Server Pages,这个算废话,知不知道无所谓^_^。重要的是她一般运行在Windows NT+IIS的平台上,如果要使用ASP 2.0也就是现在用的最多的那么最好的搭配平台是Windows 2000+IIS 5.0。个人用户推荐安装Windows 2000 Professional版和自带的IIS 5.0进行调试和运行。ASP是基于解释的,什么意思呢,就是一个ASP程序被运行时每个语句话都会被IIS内带的解释器读取并且进行解释即计算,而不是一般的应用程序那样编译好后再运行。这样的好处是灵活度大,平台移植性好;缺点是代码容易被泄露,速度大大降低。所以现在的PHP,JSP都可以通过一些外挂的模块甚至自身就支持编译后再运行,这样就类似网络应用程序了。但是既然用了ASP就应该有ASP的习惯,与编写应用程序不同要尽量地降低服务器的负担。这么说吧,你运行一次可能差别不大,但是一旦访问量大了,这个差别就要*n,越大数字越是惊人。所以编写ASP一个小小的改进就会带来不小的改善,至于如何改善性能我会在编写程序中介绍。
还有ASP是如何让客户看到那些动态生成的页面的,这个由我来一步步说明。用户想看一个xxx.asp的内容,就和浏览普通网页一样,那么浏览器就发出一个请求"Get xxx.asp",之后IIS就收到了这个请求并发现调用的页面后缀名是ASP。经过一些简单的验证以后IIS就把手中的接力棒交给一个专门处理ASP的动态联结库,这个联结库自己有一个缓存,她一边解释这个ASP文件一边就按照程序里的要求把输出结果放到这个缓存里。最后全部解释完毕,这个缓存的内容就全部倒还给IIS,由IIS把这些结果当作一个普通网页一样(其实调用网页时也是把网页内容读入缓存再传送给用户)返回给终端,然后么……然后你就看到一个内容丰富的ASP页面了。
既然ASP是运行在Windows2000 下,如果你使用了NTFS就一定要注意权限问题,否则有的要吃苦了。这个稍后也会在文中着重指出,所以关于IIS的安装和虚拟目录的设置就交给读者自己去摸索了,有问题只管和笔者联系。
目的及规划
说了那么多,还没说清楚今天到底要做什么呢。计数器大家都用过吧?就是页面上那个会显示访客人数的东西,不过有的是用图象表示,有些是用文字。其实他们运行的原理都是一样的,就是在服务器端上保存下目前的访客数,当有客户访问这个页面即调用这个程序的时候,读出这个数据并输出,同时把访客数加一后保存。
在这个过程中,马上就会发现有几个问题需要解决。
1. 如何让客户调用这个程序?是弹出窗口,还是整个首页为了一个计数器做成ASP,还是……
2. 怎么保存?目前有两种选择:文件或者是数据库。
3. 如何显示?这个其实和第一个问题是相当有关联的,解决第一个问题后只要考虑如何美化输出效果就可以。
其实写程序的时候,最重要的是先想好会遇到的问题以及解决的办法。读者们不要急着如何去写ASP,待我一一解释这些后再讲述实现的具体方法、语句和注意事项。
如何让客户调用这个程序
最先想到的方法就是和普通的ASP程序一样调用整个做成ASP的页面。但如果我们整个页面都是静态的只是想要一个"动态"的计数器这样做明显有几个问题:一是主次颠倒,让ASP解释器去输出一个网页如何也不可能比普通的页面输出快;二是管理难度加大,写程序很重要的一点就是需要模块化,ASP也不例外。所以除非你要使用计数器的页面完全就是一个动态页面否则应该选择其他办法,例如弹出窗口或是在页面内插入一个ASP。前者很好办,只要在页面onLoad的时候运行一个JavaScript语句自动弹出小窗口就可以,方法这里不详述。如此虽可以提高效率,但是却降低了美观性。所以最好的选择就是嵌入一个ASP,如何做到呢?如果是shtml(ServerSide)就可以"include"另外一个页面,要在html里实现就不得不使用JavaScript法宝。如果用过JavaScript的人就会知道我们可以在页面正文的任一位置用document.write();插入一段HTML代码,效果和直接输入HTML效果一样。那么我们可以用
|
|
|
| |