
子程序与应用服务器.pdf
7页下载第4章 子程序和应用服务器子程序以各种形式出现—脚本、a p p l e t、s e r v l e t、插件(p l u g - i n) 、辅助应用程序、以及存储过程它们通过一系列协议和接口与程序进行交互,例如 C G I、I S A P I、N S A P I、H T T P、以及H T M L这一章将讨论这些术语以及使用它们的进程具体地说,你将看到下列内容:• 什么是子程序• 客户端程序设计• 服务器端程序设计• 接口协议和A P I• 基本协议4.1 什么是子程序计算机软件的经典观点是处理数据的程序;程序本身和它们的输入输出被严格的划分开但是,从现代计算机刚刚诞生的日子起,这种划分就一直是随意的、充满误解的以及在许多情况下甚至是失败的 (像冯·诺依曼和郝柏这样的先驱者都认识到,要在数据的位和字节与指令的位、字节之间加以区分只是人们的一相情愿 )一个程序(编译器)的输出实际上可以是另一个程序,而且程序也可以作为另一个程序(如操作系统)的输入一旦你认识到程序和数据具有很大的共同性,你就会想如何利用这个事实一种常见的方法就是创建小程序(子程序) ,它们可以和传统的程序一起配套使用。
4.1.1 客户机与服务器的子程序子程序可以用来增强应用服务器体系结构中的任意部分它们的术语不同这由它们属于哪一类子程序以及使用地点来决定,图 4 - 1展示了在We b浏览器(在用户计算机上)和 We b服务器(在服务器主机上)中用到的子程序的术语图4-1 用于浏览器和服务器的子程序浏览器Web服务器Servlet 插件脚本Applet 辅助程序脚本注意,尽管这里只画出了一个 We b服务器,但应用到We b服务器上的术语同样可以用到应用服务器以及某些数据库上子程序可以是独立的程序,也可以在运行间被集成到浏览器和 We b服务器中;这两种结构都在图中有所反映此外,在某些情况下,子程序可以和其他设备与程序进行通信—如图右边的箭头所示4.1.2 子程序的类型子程序可以分为三大类:1)辅助应用程序和插件2)A p p l e t(小应用程序)和S e r v l e t(小服务程序) 3)脚本不管你用到的是哪一类子程序,必须清楚下列几点:• 它是用什么语言编写的?• 它在哪里运行?• 它怎样执行?4.1.3 Applet和S e r v l e tA p p l e t和S e r v l e t通常使用诸如J a v a和Visual Basic这样的语言编写。
浏览器或服务器使用一个虚拟机(通常是在计算机上运行的另一个进程)来执行它们使用像 J a v a这样的语言,这些子程序可以只编写一次,然后编译成一个中间指令集,称作字节代码;这种字节代码与平台无关,并且需要通过虚拟机执行执行这些子程序的原因很多;典型原因是产生了一个事件,而它们和这个事件相关联 (这些事件可以是用户界面事件,如在 We b页面上的鼠标移动,或者是操作事件,如用户登录 )4.1.4 辅助应用程序和插件辅助应用程序和插件通常使用诸如 C + +或C这样的编程语言编写因此,它们需要针对每一个要使用它们的平台来编写和编译它们采用目标代码的形式发放,并且在需要的时候被浏览器或服务器执行它们的运行方式可以是一个独立的进程,也可以是由浏览器或服务器调用的过程对于后一种情况,它们使用的是浏览器或服务器的内存空间常用它们处理一种浏览器或服务器自己不支持的数据类型对We b浏览器的用户来说辅助应用程序已经熟悉了:它们用于处理浏览器本身不支持的数据或协议类型的应用程序当你下载了一个图像片断、一个格式化文档、或者一个压缩文件时,通常需要使用一个辅助应用程序来正确地打开和显示数据1. 文件辅助程序当浏览器检测到这类数据时,它调入对应的辅助应用程序;这个辅助程序可以作为浏览器的插件运行,也可以作为一个独立的应用程序运行。
如果它是一个插件,辅助应用程序将处理数据,并把数据返回给浏览器,并在 We b页面内进行显示 (这就是通常显示视频图像的方式 )44计计第一部分 设计下载如果它是作为一个独立的应用程序运行,数据就显示在辅助应用程序自己的窗口中文件到辅助程序的映射一个特定辅助应用程序和一个文件类型之间的联系,通过使用文件后缀和多用途I n t e r n e t邮件扩展协议(M I M E)类型建立 (把一个特定数据类型连接到一个特定的应用程序并不是We b浏览器所独有:所有的个人计算机操作系统都需要某种机制,以便在你点击一个数据文件时能够打开正确的程序 )你可以在浏览器的选项中设置辅助应用程序和插件;你也可能经常要为你的计算机桌面设置这些选项对于每种情况,最终你见到的信息集合都类似于表 4 - 1中所示这个示例表格没有展示那些特定于浏览器或操作系统的附加选项,这些附加选项允许你进一步改善自己的选择例如,对于某个给定的数据类型,你可以选择是把它存到磁盘上,或者在浏览器的窗口内显示 )当一个文件发送到你的浏览器时,浏览器首先检查它的三个字符的后缀名,以便定怎样处理它这时,它将使用你在选项中设置的应用程序(如表 4 - 1中所列)来处理这个文件。
如果数据包含在一个电子邮件消息中,或者是在一个 We b页面的H T M L中,那么通常把它标识为一个M I M E类型,如表4 - 1所示 (因为嵌入数据是另一个数据流的一部分,因此它不能拥有文件扩展名—数据流可以包含多种嵌入数据类型,同时拥有自己的文件扩展名 )根据这些文件扩展名和M I M E类型将辅助应用程序调入执行当嵌入在 H T M L页面中的数据或一个单独的文件到达时,就会触发这些辅助程序表4-1 辅助应用程序设置示例描述协议/ M I M E类型后缀应用程序E x c e l电子表格a p p l i c a t i o n / v n d . m s - e x c e l. x l sE x c e lMicrosoft Wo r d文档a p p l i c a t i o n / m s w o r d. d o cMicrosoft Wo r dMicrosoft Wo r d模板a p p l i c a t i o n / m s w o r d. d o tMicrosoft Wo r dPC Zip档案文件a p p l i c a t i o n / x - z i p - c o m p r e s s e d. z i pZ i p I t可移植文档格式(P D F)a p p l i c a t i o n / p d f. p d fAcrobat ReaderP o w e r P o i n t演示文档a p p l i c a t i o n / v n d . m s - p o w e r p o i n t. p p tP o w e r P o i n tTe l n e tt e l n e t-NCSA Te l n e tU n i x磁带档案(TA R)a p p l i c a t i o n / x - t a r. t a rt a r尽管你能经常单独地启动辅助应用程序(例如 Microsoft Wo r d) ,但在其他情况下只能在这些数据到达时启动它们。
当它们作为辅助应用程序时,只能采用后一种启动方式2. 协议辅助程序协议辅助程序(例如表4 - 1中展示的NCSA Te l n e t程序)可以帮助浏览器管理它自己不能处理的协议典型的协议有 Te l n e t,G o p h e r,以及其他一些早期 I n t e r n e t协议在某些情况下,还可以通过定制编写的协议辅助程序来支持定制的协议文件辅助程序和协议辅助程序之间的区别是:文件辅助程序是在浏览器接到一个文件时对这个文件进行处理;而协议辅助程序则是在消息层上交互,管理浏览器与远程服务器之间的持续数据流第4章 子程序和应用服务器计计45下载4.1.5 脚本脚本用某种脚本语言编写,例如 V B S c r i p t、J S c r i p t、T C L、J a v a S c r i p t、或P e r l它们通常采用文本形式发放,由浏览器或服务器在需要时解释执行它们是在浏览器或服务器自己的内存空间中执行的常把它们作为对事件的反应来执行(例如 a p p l e t和s e r v l e t) 你也可以通过让浏览器直接连接到它们的U R L来执行它们(假定浏览器可以处理有关的脚本语言—通过自身的支持或使用一个辅助程序或插件) 。
4.1.6 为什么这和应用服务器有关你可能并不打算编写一个应用服务器—或者一个数据库,或者一个We b服务器(更不用提We b浏览器了) 但是,部署基于应用服务器的解决方案经常要涉及到编写和部署软件这可能是定制编写的软件,用于处理与任务相关的问题,也可能是商业软件产品和可重用的软件组件,它们既能够彼此交互,也能和We b服务器、数据库以及应用服务器进行交互现在我们已熟悉的We b服务器-应用服务器-数据库体系结构能够为这些系统完成大量的处理任务不过,对界面、特定的数据库、乃至业务逻辑进行定制仍然是必要的只有在理解了基本体系结构的基础上,才可能知道需要对它做哪些扩展:一个最常见的问题是扩展得过多一般来说需要编写的子程序不会太多4.2 客户端程序设计客户端程序设计是指在用户计算机上的程序设计;它通常要以某种方式或其他方式集成到一个We b浏览器中所有三种类型的子程序都可以用到客户端程序设计中客户端程序设计通常用于下述目的:• 界面增强• 数据条目的编辑• 客户机集成4.2.1 界面增强客户端程序设计最常见的用途是界面增强,例如当鼠标移过 We b页面时它的动画部分这种类型的程序设计通常是自我包含的,而且可能用到存储例程。
(当你用鼠标经过它时,实际上并不在意图形会改变成什么样 )4.2.2 数据条目的编辑比界面增强更复杂的应用是使用客户端程序设计进行数据条目的编辑脚本和 a p p l e t可以用来对数据条目字段进行有效性验证这些有效性验证既可以是一些简单的检查,例如确保一个字段非空,也可以是复杂的验证,例如确定在一个字段中输入的值是否有效(这个验证过程涉及到的子程序可能需要和用户计算机上的数据库或其他程序进行交互) 46计计第一部分 设计下载4.2.3 客户机集成最复杂的一类客户端程序设计是由服务器发送的脚本或 a p p l e t,它们在用户计算机上完成操作(例如数据检索) 这一类程序设计的最简单的例子是一个客户端的脚本,它从用户计算机取得一个c o o k i e,并使用c o o k i e信息创建诸如“欢迎再次访问, U t a ”这样的消息更复杂的例子与此相似,不过它将从用户计算机上的一个文件或数据库中检索信息4.2.4 这有什么关系客户端程序设计可以从图形方面或者显示的数据方面扩展浏览器的功能当你在设计要使用应用服务器的系统时,你可以在客户端放置一些操作,例如数据有效性检查,最低限度地减少网络传输量和计算需求,这常常非常有用。
客户端程序设计的缺点是它要求资源—不仅包括计算资源,还包括操作资源要运行 J a v aa p p l e t,你必须安装并激活J a v a;类似地,A c t i v e X对象也需要有自己的环境如果你设计的系统只在一个企业的内部使用,这不是什么问题但是,如果你设计的系统要被范围很 广的不同人访问,而且他们可能使用不同的浏览器和不同的配置,这就是一个严重的问题有时候设计者会难以理解他们的“标准”环境的要求是不现实的对典型用户(或雇员)来说,他们需要做大量的琐碎工作,从联机银行到在 We b上做电子商务冲浪,没有一个标准的环境能够满足所有这些任务的要求4.3 服务器端程序设计服务器端程序设计是对客户端程序设计的补充:它。
