客户机-服务器环境中优化可移植操作的装置和方法

文档序号:6376687阅读:136来源:国知局

专利名称::客户机-服务器环境中优化可移植操作的装置和方法
技术领域
:本发明涉及计算机和计算机系统,尤其涉及客户机-服务器环境中的活动文档(activedocuments)的处理。
背景技术
:因特网已经深刻地改变了当代社会的许多方面,已经变成用于众多教育、娱乐和商业目的的越来越重要的资源。因特网的流行多是因为文字和图像信息是以相对直观的方式向用户表示的,并且用户被允许以比较无结构的(unstructured)和形式自由的(freeform)方式导航到其他相关的信息储存库。在因特网上被访问的信息一个重要部分是以文档或网页的形式向用户表示的,网页被按照请求从中央“服务器”计算机下载到各个客户机计算机并由在客户机计算机上执行的称作“万维网浏览器”的应用程序显示给用户。多个客户机计算机能访问服务器计算机的信息的方式一般称为客户机-服务器计算,因特网多是基于这个广为接受的联网方案的。被下载到客户机的文档通常被编码成带有一个或多个嵌入的、以诸如超文本标记语言(HTML)的标记语言定义的标记,这种标记控制文档在万维网浏览器上被查看时的格式。这种文档通常大量地利用超文本链接的概念,文档由此被显示在文档中的链接连接在一起并被各种嵌入的标记定义。通过用户对显示在一个文档中的链接的选择,用户通常能够让由该链接所引用的另一个文档被检索出来并显示给用户。已经开发了诸如HTML之类的标准化格式,用于超文本和其它类型的文档,以及用于能被纳入到这类文档中的各种类型的信息,这些格式经常允许这类文档能被各种各样的客户机计算机访问,而不管这些计算机上所用的是什么基础硬件或软件平台。此外,由于因特网所支持的高度直观和灵活的界面,许多专用网络现在采用许多相同功能和标准化格式。此外,通过利用相同的格式来呈现来自因特网和专用网络的信息,经常能用相同的万维网浏览器来显示这两种类型的信息,由此使要求在客户机计算机上安装的软件量最小化。新的技术正在被不断地开发出来,从客户机计算机和服务器计算机两者的角度扩展能通过基于因特网的或类似的界面获得的功能。更为复杂的显示功能,诸如高级用户输入控制、动画、音频/视频等等,继续被采纳到基于因特网的界面中,为终端用户产生总体更动态和强大的界面。举例来说,在许多环境中利用脚本(scripting)来把指令嵌入下载的文档中。这些指令通常在文档一开始被呈现给用户时以及/或者响应从用户接收的特定类型的输入时而由万维网浏览器解释。另外,已经开发了独立于平台的程序设计语言,诸如Java,以提供一个标准化的程序设计接口,程序代码可以被用户通过该程序设计接口下载和执行,以执行比否则由脚本(script)指令执行的更加复杂的任务,这就允许将几乎任何功能结合到客户机中。在许多实例中,可以提供给文档各种形式的嵌入或被引用的程序代码,诸如脚本、Java小应用程序等等,从文档本身内嵌入的或者由文档本身引用的程序代码可以被用来在客户机上执行激活(active)功能的角度来看,这些程序代码能有效地“激活”文档。这种活动文档例如能响应用户输入而具有把数据传送回服务器的能力,以及能处理来自例如服务器的数据,以动态地修改文档在客户机计算机上的显示。另外,从服务器的角度,诸如JavaScript和Java等技术,也能被服务器用来增强总体的信息表示和与用户的交互。例如,在许多基于因特网的接口中使用的一个流行的技术是Java“小服务程序”(servlets),其本质上是为在服务器上而不是客户机上执行而设计的Java小应用程序。小服务程序可以用来动态地生成诸如超文本文档的文档,以及处理借助这种文档从用户接收的输入。小服务程序也可以被用来访问后端服务,诸如应用服务器和数据库。另一个能在服务器上实现的技术是Java服务器页(JSP-JavaServerPage)技术。JSP以一种“活动”服务器页技术为基础,其中在HTML编码的“模板”或表单中嵌入程序代码,用于生成下载到客户机的用户定制文档。活动服务器页通常与服务器侧程序代码相关联,并既被用于生成下载到客户机的文档,又被用于借助这种文档处理从用户接收的输入。此外,与这种页相关联的服务器侧程序代码还可以具有访问诸如应用服务器和数据库的后端服务的功能。特别是对JSP来说,在JSP中使用的HTML编码的表单通常采用脚本和/或服务器侧Java程序代码,这些代码在JSP的初始加载时被编译,以生成一个或多个驻留在服务器上、帮助从JSP表单生成可下载文档、并借助所下载文档处理从用户接收的用户输入的Java小服务程序。使用JSP和其它形式的活动服务器页的一个优点是,代码开发与呈现(presentation)开发在概念上相分离。其结果是,与将内容和控制紧密联系在一起的开发相比,可以实质性地简化和加速要被分布给客户机的内容的开发。小服务程序、JSP之类的使用,已经实质性地简化和加速了功能更强、更灵活和更复杂的用户界面的开发。然而,在因特网和计算机的使用不断增加的情况下,由于通过因特网和/或其它公共或专用网络向客户机提供内容的服务器所受负荷的增加,已经产生了一种严重的需要。具体来说,从多数服务器请求任务的客户机的数量继续增加,如同处理这种客户机所请求的越来越复杂的任务所要求的处理开销量一样。诸如小服务程序、JSP之类的技术的采用,由于这种技术所支持的许多功能的相对的处理密集的性质,进一步增加了服务器负荷。服务器像所有计算机一样,只有有限的资源,尽管在处理能力和存储容量两个方面在不断地增强,这些资源经常被客户机所要求的增加的负荷迅速地消耗掉。随着对服务器的需求的增加,对客户机的响应时间也增加,这降低了用户生产率并常常增加了用户的挫折感。然而,增加服务器容量常常需要将服务器替换为更先进的型号,或者将多个服务器一起连网,以分摊总的负担。然而,无论哪种情况,容量的增加常常都是费用昂贵的事情。因此,继续存在一种对最小化与因特网相连的服务器或者其它客户机-服务器环境的处理开销的方式的严重需要。特别地,存在对减少与生成活动文档和处理借助这种文档与用户交互的相关联的服务器的处理开销的方式的不断需要。
发明内容为解决这些和其它现有技术的问题,本发明提供一种装置、程序产品和方法,其中,通过修改生成活动文档的服务器侧程序代码,有效地将某些操作—这里称作“可移植操作”-的执行从服务器转移到客户机,而使客户机与服务器之间借助活动文档的交互得到优化。这样,服务器在处理活动文档时的处理开销常常得到实质性的减少,由此降低服务器负荷和响应时间,并且常常增加服务器负荷容量。可移植操作可以包括几乎任何能被服务器和客户机执行的、并且适于借助嵌入在活动文档中的程序代码而启动的操作。仅举一例,可移植操作可能是格式化由服务器借助活动文档从客户机接收的输入数据的数据格式化操作,例如将输入字符串转换成整数值的字符串一整数转换。当被服务器执行时,字符串一整数转换可能需要可观的计算资源,在可能需要在给定时间为成千上万与服务器相连的客户机进行转换时尤其如此。然而,如果借助嵌入在被下载到客户机的活动文档中的程序代码将执行这种转换的负担转移到各个客户机,则服务器处理这种转换的处理开销就被大大地降低甚至消除。与本发明相一致的是,可以对设置为要生成向客户机传输的活动文档、并借助所生成的活动文档与客户机交互的类型的程序代码进行优化。这种优化可包括要由服务器在执行程序代码时执行的可移植操作的识别,修改程序码以在活动文档中嵌入至少一个指令用以启动客户机在处理该活动文档时对该可移植操作的执行。作为本发明特征的这些和其它优点和特点,在本文后附的并构成本文一部分的权利要求书中陈述。然而,为了更好地理解本发明以及通过使用本发明而实现的优点和目的,应当参看各附图以及其中描述了本发明的示例性实施例的具体说明。图1是采用与本发明一致的优化程序(optimizer)的客户机-服务器系统的框图。图2是表示在图1的计算机系统中在客户机-服务器交互期间发生的主要步骤的流程图。图3是表示由图1的优化程序执行的优化代码程序的程序流的流程图。图4是表示能被图1的集成开发环境(IDE)执行的编译JSP程序的程序流的流程图。图5是表示能被图1的集成开发环境(IDE)执行的再编译JSP程序的程序流的流程图。具体实施例方式以下讨论的实施例优化在客户机-服务器环境中借助分发给客户机的活动文档的用户交互的处理。这种用户交互的优化,要通过识别由与活动文档相联系的服务器执行的一个或多个可移植操作,以及为了使这种可移植操作转而能被客户机执行而修改被用来生成和/或与这种活动文档交互的代码。因此在本上下文中,可移植操作是一种可以由与生成和/或处理活动文档相关的服务器或客户机执行的操作。活动文档本身又是一种能结合嵌入的程序代码的文档,嵌入的程序代码用于处理可移植操作,或者用于启动由其它程序代码对可移植操作的处理,所述其它程序代码驻留在客户机上或者能被客户机以其它方式—例如借助嵌入在文档中的对程序代码的引用或链接—而获得。一般来说,活动文档被编码成带有一个或多个嵌入的、以诸如HTML、可扩展标记语言(XML)等的标记语言定义的标记。活动文档常常还是一个包括指向其它文档的嵌入链接的超文本文档,不过在有些实例中活动文档可以不包括任何超文本链接。在以下讨论的实施例中,由此生成的活动文档采用的形式是HTML编码的超文本文档;然而,本发明并不限于这些具体类型的活动文档。以下讨论的实施例例如着眼于格式化和/或验证(validate)在客户机与服务器之间传送的数据、并能被客户机处理的可移植操作。然而,本领域中的普通熟练人员通过本说明将认识到,可以与本发明相一致地识别和优化各种各样的其它的与生成活动文档和/或与活动文档交互相联系执行的操作。因此本发明并不局限于本文所述的特定操作。现在转看附图,其中几个视图中自始至终用相同的编号表示相同的部分,图1表示一个与本发明一致的基于客户机-服务器的计算机系统或环境10。系统10包括至少一个装置,例如一个或多个客户机计算机12和一个或多个服务器计算机14。就本发明而言,每个计算机12、14可以代表几乎任何类型的计算机、计算机系统或其它能在客户机-服务器环境中起客户机和/或服务器作用的可编程电子设备。此外,每个计算机12、14都可以用例如群集(cluster)中的或者其它分布式计算系统中的一个或多个连网计算机实现。此外,如许多客户机-服务器系统中普遍的方式一样,通常是多个客户机计算机12与某个给定的服务器计算机14接合。计算机12一般包括一个中央处理单元16,中央处理单元包括至少一个与存储器18相连的微处理器,存储器18可以代表包含计算机12的主存储器的随机存取存储器(RAM),以及任何补充层次的存储器,例如高速缓冲存储器、非易失性或后备存储器(例如可编程存储器或快闪存储器)、只读存储器等等。此外,存储器18可以考虑包括物理上位于计算机12中其它位置的存储器—例如CPU16中的处理器中的任何高速缓冲存储器,以及被用作虚拟存储器的任何存储空间—例如海量存储器20上或与计算机12相连的另一个计算机上的存储空间。计算机12一般也接收许多用于与外部通信的输入和输出。为了连系用户或操作者,计算机12一般包括一个用户接口22,包含一个或多个用户输入设备(例如键盘、鼠标、跟踪球、操作杆、触摸板和/或麦克风等)和显示器(例如CRT监视器、LCD显示板和/或扬声器等)。另外,用户输入可以通过另一个计算机或终端被接收。为了额外的存储,计算机12也可以包括一个或多个海量存储器20,例如软盘或其它可移动盘驱动器、硬盘驱动器、直接存取存储器(DASD)、光驱(例如CD驱动器、DVD驱动器等)和/或磁带驱动器等等。此外,计算机12还可以包括与一个或多个网络(例如LAN、WAN、无线网络和/或因特网等)的接口24,以允许与其它计算机和电子设备进行信息的通信。应当明白,计算机12一般包括位于CPU16与每个部件18、20、22和24之间的适当的模拟和/或数字接口,如现有技术中普遍知道的那样。与计算机12类似,计算机14包括CPU26、存储器28、海量存储器30、用户接口32和网络接口34。然而,假设计算机12和14作为客户机和服务器的性质,在许多实例中,计算机14将采用多用户计算机实现,诸如用服务器计算机、中型计算机、大型计算机等实现,而计算机12将采用台式计算机或其它单用户计算机实现。结果,CPU、存储器、海量存储器、用户接口和网络接口的技术规格一般将在计算机12和14之间变化。其它硬件环境也被设想在本发明的系统设置之内。计算机12、14一般通过网络36彼此接合,网络可以是公共的和/或专用的、有线的和/或无线的、局域的和/或广域的等等。此外,网络36还可以代表多个互连的网络。在所示的实施例中,网络36例如包括因特网。每个计算机12、14在操作系统38、40的控制下运行,并执行或以别的方式依赖于各种计算机软件应用程序、组件(components)、程序、对象、模块、数据结构等等。此外,各种应用程序、组件、程序、对象、模块等也在通过网络与计算机12、14相连的另一个计算机的一个或多个处理器上执行,例如在分布式或客户机-服务器计算环境中执行,由此可以将执行一个计算机程序的功能所需的处理分配到网络上的多个计算机。总而言之,为实现本发明的实施例而被执行的程序,无论是作为操作系统的一部分被执行的还是专用的应用程序、组件、程序、对象、模块、指令序列、甚至它们的子集,在本文中将被称作“计算机程序代码”,或简称“程序代码”。程序代码一般包含一个或多个指令,指令在不同的时期内驻留在计算机中的不同的内存或存储设备中,当被计算机中的一个或多个处理器读取和执行时,使计算机执行为体现本发明的各个方面的步骤或要素所必需的步骤。此外,尽管已经并且在下文中将要在全功能的计算机和计算机系统的设置中描述本发明,本
技术领域
的熟练人员知道,本发明的各种实施例都能以形式各样的程序产品的形式分布,并且不管用于实际地进行分布的信号承载介质的特定类型如何,本发明同样适用。信号承载介质的例子包括但不限于可记录类型的介质和传输类型的介质,前者诸如是易失性和非易失性存储设备、软盘和其它可移动盘、硬盘驱动器、磁带、光盘(例如CD-ROM、DVD等)等等,后者诸如是数字和模拟通信链路。此外,下文所描述的各种程序代码可以根据在本发明的具体实施例中程序代码在其中实现的应用程序来识别。然而,应当明白,下文中任何特定的程序术语都是仅仅为了方便而使用的,因此本发明的用途不应被限定为只在由这种术语所识别和/或暗示的任何特定应用中。此外,假设一般可以有无数的方式将计算机程序组织成程序、过程、方法(methods)、模块、对象、等等,以及有各种方式可以将程序功能在驻留在典型的计算机(例如操作系统、库(libraries)、API’s、应用程序(applications)、小应用程序等等)内的各个软件层次上分配,应当知道,本发明不仅仅限于本文所述的程序功能的特定组织和分配。本
技术领域
的熟练人员将认识到,图1中所示的示例性环境并非是要用来限定本发明。本
技术领域
的熟练人员实际上将认识到,也可以使用其它可选择的硬件和/或软件环境而不偏离本发明的范围。与本发明一致的实施例被设置得能借助活动文档来优化客户机与服务器之间的交互,通常方式是通过从服务器向客户机转移一个或多个可移植操作而优化服务器的性能。如以下将要更详细讨论的那样,可移植操作的转移,可以通过在活动文档内嵌入一个或多个用以启动由客户机对可移植操作的执行的指令而实现。在这方面,以下的讨论将着眼于本发明与Java小服务程序、特别是与Java服务器页(JSP’s)相关联的Java小服务程序的使用相联系的特定实现。本
技术领域
中众所周知,JSP’s可被用来生成客户机通过其提供向服务器传输的输入数据的活动文档。JSP’s通常在运行时被编译,以生成一个或多个在驻留在服务器计算机上的Java虚拟机上执行的Java小服务程序。这种小服务程序中的程序代码然后被执行,以生成适当的活动文档,并处理通过这种活动文档接收的任何用户输入。在有些实现过程中,单独的Java小服务程序可以生成特定的活动文档并处理从中接收的用户输入。例如,如图2中所示的是计算机系统10中的一个客户机与一个服务器之间的一个典型交互,从小服务程序A的启动开始,通过由在框60中的客户机上执行的万维网浏览器对指向小服务程序A的链接选择而启动。例如可以响应选择在所显示超文本文档中的嵌入链接、选择书签等等而选择该链接。该链接的选择,例如通过超文本传输协议(HTTP)请求而导致生成一个对小服务程序A的请求,这是所述
技术领域
中众所周知的。服务器对这样一个请求的处理,导致在服务器上调用小服务程序A,如框62所示。如图所示,小服务程序A生成一个活动文档(HTML页A),并通过一个HTTP响应而把该文档传输到客户机。该文档然后由万维网浏览器显示(框64)。然后,用户可以通过活动文档(HTML页A)提供输入数据。通常,在JSP环境中,这样的数据输入导致生成一个发往驻留在服务器上的适当的小服务程序的HTTP请求,这里的小服务程序是小服务程序B,如框66所示。该输入数据被小服务程序B处理,这通常导致生成第二个超文本文档(这里记为HTML页B),该文档可能是活动的,也可能不是活动的,并且通过对客户机的HTTP响应而被返回到客户机。第二个超文本文档然后被客户机上的万维网浏览器显示,如框68所示。在其它实现过程中,同一个小服务程序内的不同程序代码可以处理文档生成和交互功能。例如,如图2中所示,可以不使用两个小服务程序62、66,而是使用一个单一的小服务程序70,它包括生成超文本文档的部分A(框72)和处理来自该超文本文档的用户输入的部分B(框74)。在另外的实现过程中,可以用服务器侧的程序代码而不是用Java小服务程序来实现文档生成和交互操作的其中之一或者二者,例如活动服务器页(ASP’s-AcitiveServerPages)和其它形式的程序代码。本发明也可以在其它环境中实现,例如在基于公共网关接口(CGI)的或其它的非Java环境中实现。因此,本发明并不仅限于这里所讨论的特定的服务器侧的程序代码实现。也在所示的实施例中,可移植操作一般是在活动文档内用一个或多个脚本语言(例如Javascript)的指令实现的。其它脚本语言,以及其它形式的程序代码,也可以被用来处理可移植操作的客户机侧的执行。此外,可以将实际处理可移植操作的指令包含在文档自身中,或者只将启动客户机对可移植操作的执行的指令包含在超文本文档中。例如,如果执行可移植操作的程序代码已经驻留在客户机上,或者可以与活动文档分开地下载到客户机,则可能希望仅仅把调用客户机上的这种程序代码所需的那些指令包含在活动文档中。此外,在所示的实施例中,将可移植操作从服务器转移到客户机的程序代码的优化,可以与将该程序代码编译为可执行形式相联系地进行。所以,程序代码中可移植操作的识别、以及程序代码的修改,通常都是在这种程序代码的源代码表示上进行的。然而要知道,这种优化在有些与本发明一致的实施例中可以在任何编译过程的外部进行,或者可以应用到从不编译的程序代码,例如可解释的程序代码之类。应当理解,可移植操作从服务器到客户机的转移,可能只涉及简单地将程序代码从服务器侧程序拷贝到客户机侧程序。然而,在许多情况中,可以用在客户机上执行实质上相同操作的可移植操作的(并且常常是用不同的程序语言编写的)不同程序代码来替代在服务器上执行过该操作的程序代码。现在返回到图1,在所示的基于JSP的实现中,认识到要编译在图中显示驻留在服务器计算机14中的一个或多个JSP’s42,以便产生一个或多个小服务程序,这些小服务程序被设置得用于由驻留在服务器上的小服务程序引擎44执行,以生成一个或多个要由也驻留在服务器上的网络服务器46传输到客户机的活动文档。这种活动文档被下载到客户机计算机,例如图1中的框48所示的那样。按本领域众所周知的那样,这种活动文档被客户机侧万维网浏览器50处理,万维网浏览器把文档呈现在客户机显示器上,并响应用户输入而生成向服务器的请求,即请求向服务器提供输入数据。在所示的实施例中,开发JSP’s42的环境是集成开发环境(IDE)52,例如国际商业机器公司提供的IBMWebSphereStudioApplicationDeveloper环境,可包括文本编辑器以及用于创建JSP’s的编译器。图1中也显示,IDE52也可以包括优化程序54,它被用来分析JSP’s,以识别一个或多个通过修改JSP或者任何与其相关联的程序代码而能在客户机侧实现的可移植操作。图3表示一个优化代码程序100,它能被优化程序54执行,以与本发明一致的方式来优化程序代码。程序100例如可以被用户用IDE52明确地调用,或者在有些情况中可以被自动地,例如响应对运行时数据的分析而被调用,或者独立于任何用户输入而以其它方式被调用。此外,在有些情况中,程序100可以与将程序代码编译为可执行形式相联系地被执行,或者可以被应用到独立于任何编译过程的可执行程序代码。程序100在框102开始,通过检索适当的未优化的、需要对其应用本文所述的优化的代码。在JSP环境中,未优化代码可代表嵌入在JSP中的代码或者代表被JSP引用或者以其它方式与JSP相关联的Java程序代码。下一步,框104开始一个循环,处理未优化代码中的每条语句。对于每条这种语句,框104把控制交给框106,以检索下一条语句。框108然后确定该语句是否是个可替换的格式化语句,即该语句是否是个适合在客户机侧而不是服务器侧实现的格式化类型的语句。如果是,框108把控制交给框110,以便修改代码而实现客户机侧格式化,然后删除任何多余的服务器侧功能。控制然后返回到框104去处理另外的语句。如果该语句不是可替换的格式化语句,则控制转移到框112,以确定该语句是否是个可替换的验证语句,即该语句所执行的操作是否是个可以在客户机侧而非服务器侧执行的验证操作。如果不是,控制返回到框104去处理另外的语句。否则,控制转移到框114去确定是否已经识别了任何生成代码。在这个方面,生成代码指的是与JSP相关联的、被设置得能用JSP生成活动文档的服务器侧程序代码。例如,在利用单独的小服务程序来生成活动文档并通过活动文档处理与用户的交互的实现中,框114查找前面的执行活动文档的生成的小服务程序。在使用一个单独小服务程序的其它实施例中,框114只要查找处理活动文档的生成的同一个小服务程序中的程序代码。在另外的实施例中,某些格式化操作可能要求修改实现活动文档的生成的小服务程序,由此使得这种操作以与本文描述的验证操作相类似的方式被处理。如果没有生成代码被识别,框144将控制返回到框104,以处理另外的语句。否则,框114将控制转移到框116以修改生成代码(无论是相同程序或不同的程序或小服务程序),以实现客户机侧的验证。此外,删除服务器侧代码中任何对应的、但不是冗余的验证功能。控制然后返回到框104去处理另外的语句。框104处理代码中的所有语句,直到不再有未处理的语句为止。一旦所有这种语句都被处理过,程序100就完成。可以理解,也可以用其它的程序来实现上述的与本发明一致的优化。因此,本发明并不仅仅限于这里所述的特定程序。对于本
技术领域
的熟练人员来说,通过本说明书,显然,可以按与本发明一致的方式优化各种各样的可移植操作,以在客户机上执行。例如,作为格式化类型的可移植操作的例子,小服务程序可以包含像下面这样的程序代码来显示一个字符串,其中用服务器侧的trim()操作来在显示之前去掉该字符串前后的空白servletOutputStream.println(“Name+nameStr.trim()+”)为了实现trim()操作客户机侧,可以修改被用来生成活动文档的表格标签(formtag),以把下列JavaScript指令加到活动文档while("+this.value.charAt(0)==′′)this.value=this.value.substring(1,this.value.length);while("+this.value.charAt(this.value.length-1)==′′)this.value=this.value.substring(0,this.value.length-1);作为验证类型的可移植操作的例子,小服务程序可以包含像下面这样的程序代码,以在如果为活动文档中的特定字段返回一个空数据时返回一个错误HTML文档Stringdata=queryStringHT.get("fieldl");if(data==null)//返回错误页为了实现这个错误检查客户机侧,可以修改被用来生成活动文档的表格标签,以增加一个onSubmit=”returnvalidate()”参数,以及用于下列函数的程序代码,还可以更新该函数,以包含必要的字段名functionvalidate(){if(document.formName.fieldl.value="")returnfalse;returntrue;}按照本发明,可以设想有各种各样的格式化和验证操作。格式化操作例如可包括将用户输入转换成不同数据格式的操作(例如字符串到整数、整数到浮点、字符串到字符等等),对用户输入应用日期格式的操作(例如将”5-5-98”转换成”May5,1998”),从用户输入中截除一个或多个字符的操作(例如截除空白或首位零),向用户输入加逗号或小数点的操作,等等。验证操作例如可包括检查是否空输入、输入是否超范围、输入格式是否不正确等操作,以及响应无效的输入而进行各种补正、通知或其它纠正动作的操作。例如在下文中描述了几个能被用来在客户机上实现各种客户机侧操作的JavaScript函数“TheJavaScriptSourceFormScripts”[online],INTMediaGroup,Incorporated,2002[2002年5月29日检索],该文从因特网检索<URLhttp//javascript.internet.com/forms/>,这里作为参考引用。然而应该明白,除了那些一就开始就被配置得在服务器侧实现的操作外,几乎任何能被在客户机侧实现的操作,都可以以本文所述的方式被转移到客户机。因此,本发明并不仅仅限于这里所述的具体可移植操作。如上所述,上述的优化功能的实现可以在许多环境中进行。例如,如图4中所示,可以结合JSP的编译、例如通过诸如程序130的程序而实现优化。与这种编译相联系,并且如框132所示,在有些情况中可能请求用户选择高度使用的(high-use)代码,例如通过选择是否应当为正被编译的特定JSP进行优化。例如,如果确定某JSP不是特别地计算密集的,或者可能不会相对频繁地被访问,则希望在编译这种JSP期间禁止优化。然而,在其它环境中,可能不请求用户指定一个JSP作为含有高度使用的代码,这样就可以省略框132。此外,在编译过程期间,可以请求用户提供JSP与其相关程序代码之间的任何关联,如框134中所示。在诸如IDE的图形环境中,用户可将JSP文件与一个或多个处理该JSP的生成和/或交互功能的Java类相关联。建立关系后,优化程序就知道与该JSP相联系而被执行的操作,并因此能够识别那些具有可移植(portable)性质的操作。此外,有了这个信息,就能比较直截了当地修改该JSP文件,把诸如JavaScript指令的指令纳入被用来生成该JSP文件产生的活动文档的HTML代码中。当使用两个协作的小服务程序来处理生成和交互时,IDE关联概念可以被进一步利用,使得开发者能指定从一个小服务程序到另一个小服务程序的“流”,由此优化程序就能将诸如由第二小服务程序执行的格式化和/或参数检查的操作转移到由第一小服务程序生成的活动文档中的JavaScript,由此减少第二小服务程序中的开销。此外,在参数检查被从服务器转移到客户机的有些情况中,可以有效地阻止无效请求到达服务器,并且由于从中省略了验证代码而进一步加快了第二小服务程序对任何有效请求的执行。在用一个单独小服务程序处理生成和交互的情况中,因为所有HTML生成和交互处理都是在同一个小服务程序中进行的,所以,在这些部分之间移动操作就比较直截了当。在另一个实现过程中,例如,如果小服务程序与静态HTML文件交互,则可以修改该静态HTML文件以便纳入通过脚本的之类的活动处理,以实现这里所述的可移植操作。返回到图4,一旦从用户收到关联后,控制就转移到框136,确定是否做出了关联以及所选择的代码是否是高度使用的。如果不是,控制转移到框138,以现有技术已知的方式编译JSP。否则,控制转移到框140,在框138中编译JSP之前优化代码。优化代码程序140可以采取多种形式,包括图3的程序100的形式。JSP被编译后,JSP将被设置得生成包含一个或多个一开始由用于服务器的执行指定的可移植操作的活动文档。这样,就有效地从服务器消除了与该可移植操作相关联的执行开销。在另外的实施例中,优化过程的启动,可以响应JSP或相关联的代码的运行时分析而执行。例如,如图5中所示,再编译JSP程序150可以在框152访问所收集的关于特定JSP的运行时间流信息,收集关于计算机中的程序代码的运行时间流信息的过程,在本
技术领域
中一般是众所周知的。这种信息可以在运行期间被收集,并随后被反馈到IDE,以启动再编译,这类似于反馈导向程序重构(FDPR)的过程或本
技术领域
中已知的其它类似过程。根据这种信息,框154可以例如以与结合图3所述的类似的方式确定是否已经识别出潜在的性能改善。如果没有识别出这种改善,程序150可以终止。否则,控制可以转移到框156,以与上述的相似的方式优化代码,然后转移至框158去编译具有优化的代码的JSP。然而,如上所述,可以以许多其它方式启动对与活动文档相关联的程序代码的优化。因此,本发明并不仅仅限于这里所讨论的具体实现。通过将工作从服务器卸载并转移到一个或多个客户机,服务器的性能可以得到多种方式的改善。例如,可以把与执行特定可移植操作相关联的处理开销从服务器卸载并转移到客户机。此外,对于有些可移植操作来说,从客户机向服务器或者在相反方向上传送的数据量可能会减少,由此改善网络通信。例如,如果执行一个从字符串中消除空白的trim修整操作,则从该字符串中消除的空白就不再被从客户机传送到服务器,由此减少所传输的数据量。在其它情况中,例如与验证操作相关,服务器性能和网络交通也可以通过去除某些请求而得到改善,否则这些请求会要求从客户机向服务器传送额外的请求。例如,如果用户输入无效数据,并且由服务器进行验证,则提交这种无效数据的第一个请求被服务器检索到后宣布无效,这需要客户机发送带有有效数据的新请求。如果验证是由客户机处理的,则无效请求决不会在第一位置被发出。在不偏离本发明的精神和范围的情况下可以对所示实施例作出各种修改。例如,上述的实施例着眼于与对通过活动文档接收的输入数据进行处理相联系的可移植操作。在其它实施例中,可以执行与对由服务器向客户机发送的输出数据进行处理相联系的可移植操作,输出数据例如是在客户机上显示之前被从服务器发送到客户机的格式信息。此外,也可以执行与超文本文档的显示相联系的可移植操作,例如把以特定格式表示文档的一些负担从服务器转移到客户机。通过本说明书,其它修改对于本
技术领域
的熟练人员来说是显而易见的。因此,本发明在于后附的权利要求书。权利要求1.一种编译驻留在服务器上的Java服务器页(JSP)的方法,该方法包含(a)接收与一个JSP相关联的、被设置得生成要向客户机传送的活动文档的第一服务器程序代码,其中,活动文档被设置得响应向活动文档提供的用户输入而启动从客户机向服务器传送输入数据;(b)接收与该JSP相关联的、被设置得处理由服务器从客户机接收的输入数据的第二服务器程序代码;(c)识别由第二服务器程序代码执行的与处理输入数据相联系的可移植操作,其中,可移植操作包括格式化输入数据和验证输入数据的至少其中之一;(d)修改第一服务器程序代码以生成具有至少一个嵌入其中的指令的活动文档,该指令启动由客户机在处理活动文档时对该可移植操作的执行;(e)修改第二服务器程序代码以消除由第二服务器程序代码对该可移植操作的执行;和(f)编译修改的第一和第二服务器程序代码以生成至少一个用于在服务器上执行的Java小服务程序。2.一种优化程序代码的方法,该类程序代码被设置得生成用于向客户机传送的活动文档、并通过所生成的活动文档与客户机交互,该方法包含(a)识别要被服务器在执行程序代码时执行的可移植操作;(b)修改程序代码以在活动文档中嵌入至少一个指令,在处理活动文档时,该指令启动由客户机对该可移植操作的执行。3.权利要求2的方法,进一步包含修改程序代码以消除由程序代码对该可移植操作的执行。4.权利要求3的方法,其中,修改程序代码以在活动文档中嵌入至少一个指令包含修改程序代码以在活动文档中嵌入至少一个Javascript指令。5.权利要求2的方法,其中,识别可移植操作和修改程序代码是在程序代码的源代码表示上进行的,并且其中该方法进一步包含将修改后的该程序代码的源代码表示编译成程序代码的可执行的表示。6.权利要求5的方法,其中,该程序代码的源代码表示与一个Java服务器页相关联。7.权利要求5的方法,其中,该程序代码的可执行的表示包含一个Java小服务程序。8.权利要求7的方法,其中,该Java小服务程序包括被设置得生成活动文档的第一部分和被设置得处理通过活动文档从客户机接收的用户输入的第二部分。9.权利要求7的方法,其中,该Java小服务程序是被设置得生成活动文档的第一Java小服务程序,并且其中的程序代码的可执行的表示进一步包含被设置得处理通过活动文档从客户机接收的用户输入的第二Java小服务程序。10.权利要求2的方法,其中,可移植操作包含格式化通过活动文档接收的用户输入。11.权利要求10的方法,其中,可移植操作选自下面一组操作将用户输入转换到一个不同的数据格式,对用户输入应用一个日期格式,从用户输入中截除一个字符,向用户输入添加一个逗号,向用户输入添加一个小数点,以及上述操作的组合。12.权利要求2的方法,其中,可移植操作包含验证通过活动文档接收的用户输入。13.权利要求2的方法,进一步包含(a)收集程序代码的运行时间流信息;并(b)根据所收集的运行时间流信息再编译程序代码,其中,识别可移植操作和修改程序代码是与再编译程序代码相联系地进行的。14.权利要求2的方法,其中,活动文档包含HTML编码的文档。15.一种装置,包含(a)存储器;和(b)处理器,该处理器被设置得能优化程序代码,该类型的程序代码生成用于向客户机传送的活动文档、并通过所生成的活动文档与客户机交互,其中,该处理器被设置得通过下述方式来优化该程序代码识别要被服务器在执行程序代码时执行的可移植操作;修改程序代码以在活动文档中嵌入至少一个指令,该指令启动由客户机在处理活动文档时对该可移植操作的执行。16.权利要求15的装置,其中,处理器被进一步配置得修改程序代码以消除由程序代码对该可移植操作的执行。17.权利要求16的装置,其中,处理器被配置得通过修改程序代码以在活动文档中嵌入至少一个Javascript指令而修改程序代码以在活动文档中嵌入至少一个指令。18.权利要求15的装置,其中,处理器被配置得识别可移植操作和修改采用程序代码的源代码表示的程序代码,并且其中处理器被进一步设置得将修改后的该程序代码的源代码表示编译成该程序代码的可执行的表示。19.权利要求18的装置,其中,该程序代码的源代码表示与一个Java服务器页相关联。20.权利要求18的装置,其中,该程序代码的可执行的表示包含一个Java小服务程序。21.权利要求20的装置,其中,该Java小服务程序包括被设置得生成活动文档的第一部分和被设置得处理通过活动文档从客户机接收的用户输入的第二部分。22.权利要求20的装置,其中,该Java小服务程序是被设置得生成活动文档的第一Java小服务程序,并且其中的程序代码的可执行的表示进一步包含被设置得处理通过活动文档从客户机接收的用户输入的第二Java小服务程序。23.权利要求15的装置,其中,可移植操作包含格式化通过活动文档接收的用户输入。24.权利要求23的装置,其中,可移植操作选自下面一组操作将用户输入转换到一个不同的数据格式,对用户输入应用一个日期格式,从用户输入中截除一个字符,向用户输入添加一个逗号,向用户输入添加一个小数点,以及上述操作的组合。25.权利要求15的装置,其中,可移植操作包含验证通过活动文档接收的用户输入。26.权利要求15的装置,其中,处理器被进一步配置得收集程序代码的运行时间流信息并根据所收集的运行时间流信息再编译程序代码,其中,处理器被设置为识别可移植操作和修改程序代码是与再编译程序代码相联系的。27.权利要求15的装置,其中,活动文档包含HTML编码的文档。28.一种程序产品,包含(a)第一程序代码,其被设置得能通过下述方式优化生成用于向客户机传送的活动文档、并通过所生成的活动文档与客户机交互的那种类型的第二程序代码识别要被服务器在执行第二程序代码时执行的可移植操作,并修改第二程序码在活动文档中嵌入至少一个指令,该指令用以启动由客户机在处理该活动文档时对该可移植操作的执行;和(b)承载第一程序代码的信号承载介质。29.权利要求28的程序产品,其中,信号承载介质包括传输介质和可记录介质的其中至少一种。30.一种与服务器交互的方法,该方法包含,在客户机中(a)从服务器接收一个活动文档,其中,活动文档是由服务器用程序代码动态生成的,该程序代码已经被优化得在活动文档中嵌入至少一个指令,该指令被设置得启动由客户机对一个可移植操作的执行,其中,该可移植操作被设置得要被服务器在未优化版本的程序代码中执行;和(b)处理活动文档,包括处理用来启动由客户机对一个可移植操作的执行的指令。31.一种装置,包含(a)存储器;和(b)驻留在客户机中的处理器,该处理器被设置得从服务器接收一个活动文档,并处理嵌入在该活动文档中的至少一个指令用来启动由客户机对一个可移植操作的执行,其中,活动文档是由服务器用程序代码动态生成的,该程序码已经被优化得在活动文档中嵌入该指令,其中,该可移植操作被设置得要被服务器在未优化版本的程序代码中执行。32.一种装置,包含(a)被设置得接收活动文档的客户机;和(b)与客户机相连的服务器,被设置得能优化程序代码,该类型的程序代码生成用于向客户机传送的活动文档、并通过该活动文档与客户机交互,其中,该服务器被设置得通过下述方式来优化该程序代码识别要被服务器在执行程序代码时执行的可移植操作;修改程序代码以在活动文档中嵌入至少一个指令,用来启动由客户机在处理活动文档时对该可移植操作的执行。全文摘要一种装置、程序产品和方法借助活动文档而优化客户机与服务器之间的交互,通过修改生成活动文档的服务器侧程序代码,以有效地将可移植操作—例如数据格式化操作和数据验证操作—的执行从服务器转移到客户机。文档编号G06F9/54GK1485734SQ0315463公开日2004年3月31日申请日期2003年8月21日优先权日2002年8月22日发明者E·L·巴斯内斯,R·D·德廷格,J·M·桑托苏索,EL巴斯内斯,德廷格,桑托苏索申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1