当拿起话筒,拨通售货服务的热线(中间会伴随拨号行为)。热线拨通之后,你向服务员说明要购买的商品和购买数量,并告诉服务员送货的详细地址和联系方式。服务员于是帮你查询库房中是否还存有现货。如有现货,则由送货员负责送货,并通知你等待接货;如果没有现货,则服务员会告诉你现在已经没有存货,请以后再继续购买。
其实动态网站的工作方式与电话购物的流程基本相同,唯一的区别就是对象的不同,即由人变成了机器(两台或多台计算机)。我们可以简单的把动态网站的工作原理看作是两台或多台计算机的对话。如果使用简单的示意图来描述则如图3-1所示。
图 3-1
动态网站其实就是这么简单,一应一答,最终完成信息的传递和网页更新,从而形成网页的动态显示效果。请注意,这里的动态效果不是网页特效,而是网页数据的更新显示。
当然简单中饱含着“艰辛”,也许当你轻松点击某个超链接时,眼前会立即显示所指商品的详细信息。可曾想,计算机内部需要经过多少次计算,也许这些数据正是从遥远的地球另一面“腾云驾雾”飞驰而来,还不知其间要经历多少道“手续”和“关卡”。
在学习动态网站时,请读者先明白4个基本概念:客户端、服务器端、请求和响应。因为它们是动态网站的灵魂,也是本书使用最频繁的词语,所以这里先提前介绍。
3.1.1.1 客户端和服务器端
客户端英文意思为Client,服务器端英文意思表示为Server。在计算机里,凡是提供服务的一方,我们都可以称之为服务器端(Server),而接受服务的一方则称之为客户端(Client)。
例如,你把自家的几台电脑连在一起,形成一个简单的家庭局域网。其中一台电脑连接有打印机,其他电脑都可以通过这台电脑进行打印,那么我们可以把这台电脑称为打印服务器,因为这台电脑提供打印服务,而使用打印服务器提供打印服务的另一台电脑就可以称为客户端。
当然,谁是客户端、谁是服务器端,这些角色都不是绝对的,而且随时是变化的。例如,如果原来提供服务的服务器端电脑要使用其他电脑提供服务,则服务器端所扮演的角色即转变为客户端。
如果把这种关系迁移到动态网站开发中,则客户端和服务器端就变成了浏览器和网站之间的对应关系。浏览者(在本地计算机中)通过浏览器向网站请求浏览服务,网站(在远程服务器上)根据请求进行响应服务。
当然,你不能根据位置关系来判断客户端和服务器端。如果你在本地机中组建了支持服务器的环境,而你又在同一台计算机中向服务器请求服务,则客户端和服务器端都会在同一台机器上,位置关系发生了变化。
如果本地机被连接到互联网上,且远方的朋友知道你的IP地址,则他可以在远方浏览你在本地机上设计的动态网页,这时本地计算机就变成了服务器端,而远程计算机就变成了客户端。
3.1.1.2 请求和响应
请求英文意思为Request,响应英文意思为Response。请求和响应是HTTP传输协议中两个基本概念。HTTP是超文本传输协议,它是Web应用的基础。我们知道网页都是通过HTTP协议进行传输的。
HTTP是一种请求/响应模式的协议,通俗说就是客户端浏览器向服务器发出一个请求,服务器一定要进行响应,HTTP消息在一来一回中完成一个请求/响应过程。
当客户端浏览器与服务器建立连接之后,客户端会发送一个请求给服务器,请求消息的格式是:统一资源定位符(URI网址)、协议版本号,后面是类似MIME的信息(什么是MIME可参阅第12.2.1节介绍),包括请求修饰符、客户机信息和可能的内容(这些内容我们都将在后面章节中进行讲解)。服务器接到请求后,会返回相应的响应消息,其格式是:一个状态行包括消息的协议版本号、一个成功或错误的代码,后面也是类似MIME的信息,包括服务器信息、实体信息和可能的内容。
在动态网站中,请求/响应就这样构成了全部活动的基础,实现信息的动态显示。
简单了解动态网站是怎么回事儿,这仅是肤浅的认识,还没有触及到动态网站的技术内幕。当然我们不准备去探讨动态网站技术的理论体系,对于初学者来说过早接触这些深奥的理论知识,只能让人 犯晕。
你可以想象一下,动态网站的工作方式其实很简单。那么是不是读者的学习和开发就轻松了呢?答案是否定的。要使动态网站动起来,其中会需要多种技术进行支撑。简单概括就是:数据传输、数据存储和服务管理(包括系统配置和环境设置)。
3.1.2.1 数据传输
有的读者可能会想到,HTTP不是专门负责数据传输的吗?是的。但是HTTP仅是一个应用层的自然协议。如何获取HTTP请求消息,又如何进行响应(即把指定消息反馈给浏览器)?你还必须使用一种技术来实现。
也许你可以选用一种编程语言(如C、Java等)来设置和接收HTTP请求和响应消息的构成,但是这种低级、复杂的过程是非常费时、费力,也是易错的劳动,对于广大初学者来说简直就是望尘莫及。
如果能够提供现成的技术,封装对HTTP请求和响应消息的控制,岂不是简化了开发,降低学习的门槛。而服务器技术的一个核心功能就是负责对HTTP请求和响应消息的控制。例如,在ASP中,我们直接调用Request和Response这两个对象,然后利用它们包含的属性和方法就可以完成HTTP请求和响应的控制。在其他服务器技术中,也都提供这些基本功能,但是所使用的对象和方法可能略有不同。
3.1.2.2 数据存储
数据传输是动态网站的基础。但是如何存储数据也是动态网站必须解决的核心技术之一。试想一下:如果数据不能够存储,换句话说网页之间信息不能够很好的进行沟通,这是一件多么可怕的事情,那么我们所看到的动态网页可能就是半静态网页了,因为动态网页缺乏动态数据的支撑,仅是简单的来料加工车间,失去了创新的源泉,Web应用开发就无从谈起,网站犹如众多孤立页面的集合体,失去了凝聚力,所有信息如同死水一般,失去了应用程序的灵活性。
也许你可能想到利用HTTP协议实现在不同页面之间传输信息。是的,但是这仅解决了信息传输的基本途经,但不是最佳方式。试想,在会员管理网站中,为了保证每一位登录会员都能够通过每个页面的验证,我们可能需要在HTTP中不断附加每位登录会员的信息,这本身就是件很麻烦的事情。如果登录会员很多,无疑会增加HTTP传输的负担,甚至造成网络的堵塞,更为要命的是这很容易造成整个网络传输的混乱。
显然如果使用HTTP来完成所有信息的共享和传输问题是很不现实的,也是行不通的。最理想的方法是服务器能够提供一种技术来存储不同类型的数据。例如,根据信息的应用范围可以分为:应用程序级变量(存储的信息为所有人共享)和会话级变量(存储的信息仅为某个用户使用)。一般服务器技术都能够提供服务器内存管理,在服务器内存里划分出不同区域,专门负责存储不同类型的变量,以实现数据的共享和传递。另外,一般服务器技术都会提供Cookie技术,以便把用户信息保存到用户本地的计算机中,使用时再随时从客户端调出来,从而实现信息的长久保存和再利用。
3.1.2.3 服务管理
如果说解决动态网站的数据传输和存储这两个基本问题,动态网站的条件基本成立了。但是要希望动态网站能够稳健的运行,还需要一套技术来维持这种运行状态。这套技术就是服务器管理,实际上这也是服务器技术中最复杂的功能。
俗话说得好,破家值万贯,要管好一个家庭不容易,同样要管理好一个动态网站也不容易,当然如果要管理好一个服务器就更难了。很多时候还需要服务器端的操作系统来协助管理,仅依靠服务器技术本身可能会力不从心。
当然,我们这里所说的服务管理仅仅是狭义的管理概念,它仅包括服务器参数设置,动态网站环境设置,以及网站内不同功能模块之间的协同管理。例如,网站物理路径和相对路径的管理、服务器安全管理、网站默认值管理、扩展功能管理和辅助功能管理,以及一些管理工具支持等。真正服务器管理那是网站管理员的事情,本书就不再涉及。
你可以想象一下,如果没有服务器管理技术的支持,整个服务器可能只能运行一个网站(或一个Web应用程序),动态网页也无法准确定位自己的位置。整个网站处于一片混乱、混沌状态。例如,在ASP服务器技术中,我们可以利用Server对象来管理各种功能,如网页定位、环境参数设置、安装扩展插件等。
当然,要弄懂服务器技术的架构是相当麻烦的事情,笔者不建议初学者刚开始就从这些艰涩的理论学习入手,明白服务器技术是怎么回事就够了,然后在不断实践中会逐渐理解这些基本原理。
可能你也听说过:ASP、PHP和JSP。说起来很顺口,记起来也很容易。它们可是当今Web应用开发领域内的三大服务器技术巨人。
实际上目前常用的三类服务器技术就是ASP(Active Server Pages,活动服务器网页)、JSP(JavaServer Pages,Java服务器网页)、PHP(Hypertext Preprocessor,超文本预处理程序)。这些技术的核心功能都是相同的,但是它们基于的开发语言不同,实现功能的途径也存在差异。如果当你掌握了一种服务器技术,再学习另一种服务器技术,就会发现简单多了。这些服务器技术都可以设计出常用动态网页功能,对于一些特殊功能,虽然不同服务器技术支持程度不同,操作的难易程度也略有差别,甚至还有些功能必须借助各种外部扩展才可以实现。
另外,Adobe公司开发的基于Flash技术的FMS(Flash Media Server)服务器技术,目前也受到很多网友的热捧。同时,ASP技术经过升级后的ASP.NET服务器技术,功能强大得更是让人眼花缭乱。下面我们简单了解一下ASP、PHP和JSP三大服务器技术特点。虽不系统学习,也大概知道咋回事就行。
3.1.3.1 ASP
ASP是一种Web应用开发的环境,它不是一种语言,其实其他几种服务器技术也不是具体的编程语言。ASP简单、好学,是目前服务器应用比较广泛的一种技术,群众基础和技术支持都比较雄厚。ASP采用VBScript和JScript脚本语言作为开发语言,当然你也可以嵌入其他脚本语言。ASP服务器技术只能在Windows系统中使用。ASP页面的扩展名为.asp。
3.1.3.2 PHP
PHP也是一种比较流行的服务器技术,它最大的优势就是开放性和免费服务。你不用花费一分钱,就可以从PHP官方站点(http://www.php.net)下载PHP服务软件,并不受限制地获得源码,甚至可以从中加进自己的功能。PHP服务器技术能够兼容不同的操作系统。现在PHP+MySQL组合开发已成为中小企业应用开发的首选搭档。PHP页面的扩展名为.php。
3.1.3.3 JSP
JSP是Sun公司推出的服务器技术,我们知道Sun公司打造的Java开发平台现在完全可以与微软的.NET平台相抗衡,也是大型网站首选的开发工具。JSP可以在Serverlet和JavaBean技术的支持下,完成功能强大的Web应用开发。另外,JSP也是一种跨多个平台的服务器技术,几乎可以执行于所有平台。JSP页面的扩展名为.jsp。
3.1.3.4 ASP、PHP和JSP比较
ASP、PHP和JSP这三大服务器技术具有很多共同的特点:
l 都是在HTML源代码中混合其他脚本语言或程序代码。其中HTML源代码主要负责描述信息的显示结构和样式,而脚本语言或程序代码则用来描述需要处理的逻辑。
l 程序代码都是在服务器端经过专门的语言引擎解释执行之后,然后把执行结果嵌入到HTML文档中,最后再一起发送给客户端浏览器。
l ASP、PHP和JSP都是面向Web服务器的技术,客户端浏览器不需要任何附加的软件支持。
当然,它们也存在很多不同,例如:
l JSP代码被编译成Servlet,并由Java虚拟机解释执行,这种编译操作仅在对JSP页面的第一次请求时发生,以后就不再需要编译。而ASP和PHP则每次请求都需要进行编译。因此,从执行速度上来说,JSP的效率当然最高。
l 目前国内的PHP和ASP应用最为广泛。由于JSP是一种较新的技术,国内使用较少。但是在国外,JSP已经是比较流行的一种技术,尤其电子商务类网站多采用JSP。
l 由于免费的PHP缺乏规模支持,使得它不适合应用于大型电子商务站点,而更适合一些小型商业站点。ASP和JSP则没有PHP的这个缺陷。ASP可以通过微软的COM技术获得ActiveX扩展支持,JSP可以通过Java Class和EJB获得扩展支持。同时升级后的ASP.NET更是获得.NET类库的强大支持,编译方式也采用了JSP的模式,功能可以与JSP相抗衡。
总之,ASP、PHP和SP三者都有自己的用户群,它们各有所长,读者可以根据三者的特点选择一种适合自己的语言。当然,既然读者选择本书来进行学习,相信你们对于ASP已经情有独钟,本书也将全面讲解ASP带给你的轻松开发体验。
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛