为改进客户机服务器通信使用分组压缩缓冲器的系统和方法

文档序号:7554601阅读:88来源:国知局
专利名称:为改进客户机服务器通信使用分组压缩缓冲器的系统和方法
技术领域
本发明通常涉及计算机网络,更具体地说,涉及用于在客户机应用程序与服务器应用程序(例如,电子邮件应用程序)之间进行通信的方法。
背景技术
电子邮件已成为一种重要的通信方法。电子邮件系统通常包括一个服务器部件(例如,微软交换服务器(Microsoft Exchange Server))和一个客户机部件(例如,Microsoft Outlook或Microsoft Outlook Express)。这些部件通常是被配置成在计算设备(例如,服务器、PC、便携式计算机和PDA)上执行的软件应用程序。
一些类型的电子邮件服务器被配置成允许经由因特网浏览器客户机(例如,Microsoft Internet Explorer)(而不是专用的电子邮件客户机)来获得电子邮件。在这些系统中,浏览器与电子邮件服务器相互作用,并通过浏览器(例如,通过下载Java描述语言(Javascript))或通过使用“活动服务器网页”(Active Server Pages)来执行被要求在客户机系统上加以执行的任何功能。
由于客户机和服务器经常通过带宽低、等待时间长(例如,缓慢的拨号连接)的网络而连接,因此,将许多电子邮件客户机和服务器配置成存储待决指令,然后将几个指令一起发送。例如,替代发送打开文件夹命令和发送打开日历命令,客户机可以存储第一个指令并将其与第二个指令组合,然后将这两个指令一起发送。这种存储、组合和发送的方案趋向于允许更有效率地使用网络和服务器资源,因为每次传输都会发生与其关联的某种额外开销。
一些原先技术的系统一直依靠所分配的单一缓冲器,该单一缓冲器在每个客户机处和服务器处,用作正等候被一起发送的指令和/或数据的数据存储区。在这种系统的一个例子中,客户机使用缓冲器来存储将要被发送到服务器的指令和数据。一旦该缓冲器装满或接近于装满,客户机就将该缓冲器的内容发送到服务器。服务器将所接收的内容存入缓冲器,并开始分析和执行这些指令。可以使用指针来指定将要获得服务的下一个请求。
服务器将其对在缓冲器中的响应组装,并确保其缓冲器的内容不会超过客户机缓冲器的容量。如果服务器不能完成其缓冲器中的任何请求(例如,因为该缓冲器中没有足够的空间),则服务器将这些未完成的请求写入缓冲器,并以已完成的响应将它们发回给客户机。
在一些系统中,可以对客户机进行配置,以规定客户机愿意为其缓冲器分配多少存储器。例如,客户机可以向服务器指示将只为其缓冲器投入32KB。作为响应,服务器将保证一次不会为客户机发送多于32KB。
假设在许多电子邮件客户机与服务器之间所使用的连接具有低带宽和长等待时间的性质,则需要一种用于改进性能的系统和方法。
发明概述以下是本发明的简要概述,以便提供对本发明的一些方面的基本理解。此概述不是本发明的大范围纵览。并不意在识别本发明的关键/紧要的要点或描绘本发明的范围。其唯一的目的是作为下面更加详细的描述的前言,用简化的形式来呈现本发明的一些概念。
揭示了一种用于要求响应的方法。在一个实施例中,对该方法进行优化,以用于电子邮件客户机与电子邮件服务器之间。该方法可以包括分配客户机上的第一个缓冲器,然后使用该缓冲器组装对服务器的一个或多个请求。客户机也可以被配置成将一个头部附加到第一个缓冲器的内容,该头部可以被配置成包括一个指示符,用于指出对服务器所提出的请求的响应是否将在这些请求被返回给客户机之前加以压缩。
服务器的另一个选项可能是在请求被发送给客户机之前,隐蔽它们或为它们加密。这些特点的对应的指示符位也可能被包括在该头部中。
在一些实施中,可以将客户机配置成利用RPCs(远程过程调用)来执行这些请求。在一些这些实施中,头部可能是固定长度的远程过程调用头部。在一些实施例中,头部还可以包括一个指示符,用于指示客户机被配置进行处理的一响应集合的未被压缩的大小。
还揭示了一种用于将数据从服务器传送给客户机的方法。该方法可以包括从客户机那里接收一批请求,其中,这些请求中的一个请求是请求服务器使用链接方式来发送对这些请求的响应。作为响应,服务器可以组装第一组对客户机的响应,压缩这响应集合,并附加提供有关第一响应集合的信息(例如,其大小)的头部。服务器可以为多个响应集合重复这个过程,然后c一个批文件的方式将这些头部和响应发送给客户机。每个头部可以包括指向该批文件中的下一个头部的指针,从而允许客户机正确地为这些响应解码。该批文件中的最后一个头部用特殊标志来加以配置,以指出它对应于最后一个响应。
在一些实施中,可以将客户机配置成向服务器传送其缓冲器的大小。然后,服务器可以使用该信息来设置其自己的缓冲器的大小,从而防止当客户机接收响应时这些响应时溢出客户机的缓冲器。此外,可以将客户机配置成传送其被配置成进行处理的一组未被压缩的响应的大小。服务器可以使用该信息来创建大小正确的各响应集合,并且可以或可以不压缩各响应集合。服务器可以链接(chain)各响应集合,并可以继续链接被压缩或未被压缩的各响应集合,直到服务器的缓冲器装满或接近于装满为止。然后,可以将这链接响应集合发送给客户机,客户机可以对各响应集合进行解压缩(如果可应用的话),并可以个别地处理该响应集合中的每响应集合。
通过压缩服务器上的多个响应集合并在单个批文件(即“链式”或“分组式”批文件)中发送这些响应,可能能够提高客户机与服务器之间的通信性能。虽然原先的系统已利用压缩来减少在客户机与服务器之间所发送的字节的总数,通过在发送缓冲器之前对其进行组装,更多数据可以被加到缓冲器,并且在每段时间内被发送,这样,减少了长等待时间网络的来回程的总数。
这项技术可具有广泛的适用性,但它尤其适合电子邮件客户机与电子邮件服务器之间的操作。例如,该方法可以与Microsoft Outlook一起用于“快速传送操作”(例如,CopyMessages)。这项功能将来自服务器的报文首部拷贝给客户机。
下文将陈述本发明的额外的特点和优点;部分的这些特点和优点通过该描述将变得显而易见,或者可以通过本发明的实践来加以了解。通过所附权利要求书中所特别指出的方法和组合,可以实现并获得本发明的这些特点和优点。通过以下描述和所附权利要求书,本发明的这些和其他的特点将变得更加一目了然,或者,如下文所述,可以通过本发明的实践来了解本发明的这些和其他的特点。以下详细的描述中所包括的标题只出于组织目的,并非意在限制或修改本发明或所附权利要求书的范围。
通过以下详细的描述并结合附图,其他优点将变得一目了然。
附图简述

图1是表示本发明可被加入其中的计算机网络的框图;图2是本发明可被加入其中的计算机的结构的框图;图3是框图,表现了根据本发明的、电子邮件客户机与电子邮件服务器之间的请求和响应交换;图4A是根据本发明的一个方面的两步的快速传送模式过程的表示;图4B是根据本发明的一个方面的一步的快速传送模式过程的表示;图5是表示根据本发明的一个实施例的请求的框图;图6是流程图,表示根据本发明的一个实施例的、电子邮件服务器用于操纵请求处理的一种方法;图7是根据本发明的一个实施例的、由电子邮件服务器执行的压缩的表示;图8是根据本发明的一个实施例的、由电子邮件服务器所作的压缩并链接响应的表示;图9是根据本发明的一个实施例的电子邮件服务器的响应缓冲器的内容的表示;图10是根据本发明的一个实施例的流程图,一般表示电子邮件服务器所执行的步骤,用于将各响应帧提供给缓冲器内的电子邮件客户机,该缓冲器大于这些帧;以及,图11是根据本发明的一个实施例的流程图,一般表示用于哄骗服务器将额外的响应加到响应缓冲器的步骤。
详细描述在下文中,将描述本发明的各个不同的方面。出于说明目的,陈述特殊的配置和细节,以便提供对本发明的透彻的理解。但是,精通该技术领域的人也将会明白可以在不具备这些特殊细节的情况下实践本发明。另外,为了使本发明清晰分明,可以忽略或简化众所周知的特点。
在描述本发明的各个实施例之前,现在将描述本发明的各个实施例可以在其中加以实践的计算机和联网环境。虽然并未要求,但是,本发明可以由计算机所执行的程序来实施。通常,这类程序包括例行程序、对象、部件、数据结构和执行特殊任务或执行特殊的抽象数据类型的类似物。这里所使用的术语“程序”可能意味着单一程序模块或一致运作的多个程序模块。这里所使用的术语“计算机”包括用以电子方式执行一个或多个程序的任何设备,例如,个人计算机(PCs)、手持设备、多处理器系统、基于微处理器的可编程消费电子设备、网络PCs、小型计算机、大型计算机、具有一个微处理器或微控制器的消费器具、路由器、网关、网络集线器和类似的设备。本发明也可以被用于分布式计算环境中,在那里,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序可能位于本地记忆存储设备和远程存储器设备中。
现在将参照图1来描述本发明可以被用于其中的联网环境的一个例子。该范例网络包括在网络11(由一云状图表示)上彼此进行通信的几台计算机10。网络11可以包括许多众所周知的部件(例如,路由器、网关、网络集线器等),并且允许计算机10经由有线和/或无线媒体进行通信。当在网络11上彼此相互作用时,计算机10中的一台或多台计算机可以作为客户机、服务器或与其他计算机10有关的对等机。相应地,可以在客户机、服务器、对等机或其组合上实践本发明的各个实施例,即使这里所包含的特殊例子并没有提到所有这些类型的计算机,也是如此。
参照图2,示出计算机10的基本配置的一个例子,这里所描述的本发明的所有或部分内容可以在计算机10上加以实施。在其最基本的配置中,计算机10通常至少包括一个处理单元14和存储器16。处理单元14执行指令以便根据本发明的各个实施例来执行任务。在执行这类任务的过程中,处理单元14可以将电子信号传送到计算机10的其他部分,并传送到计算机10以外的设备,以产生某种结果。根据计算机10的确切的配置和类型,存储器16可以是易失的(例如,RAM)、非易失的(例如,ROM或快闪存储器),也可以是这两者的某种组合。图2通过虚线18展示了这种最基本的配置。
计算机10可能具有额外的特点和/或功能性。例如,计算机10也可以包括额外的存储器(可移动的存储器20和/或不可移动的存储器22),该额外的存储器包括(但不局限于)磁盘(带)或光盘(带)。计算机存储介质包括易失和非易失的可移动和不可移动介质,这些介质用信息(包括计算机可执行指令、数据结构、程序模块或其他数据)存储的任何方法或技术来加以执行。计算机存储介质包括(但不局限于)RAM、ROM、EEPROM、快闪存储器、CD-ROM、数字通用磁盘(DVD)或其他光学存储器、盒式磁带、磁带、磁盘存储器或其他磁性存储设备、或可以被用来存储所需信息并可以由计算机10进行访问的任何其他介质。任何这类的计算机存储介质都可以是计算机10的一部分。
计算机10最好也包含允许该设备与其他设备进行通信的通信连接24。通信连接(例如,通信连接24中的一个通信连接)是通信介质的一个例子。通信介质通常具体表现为计算机可读指令、数据结构、程序模块或已调数据信号(例如,载波或其他传送机制)中的其他数据,并且包括任何信息传递介质。举例来讲(不作限制),术语“通信介质”包括有线介质(例如,有线网络或直接连线连接)和无线介质(例如,声音、RF、红外线和其他无线介质)。这里所使用的术语“计算机可读介质”既包括计算机存储介质,也包括通信介质。
计算机10也可以具有输入设备26(例如,键盘、鼠标、笔、语音输入设备、触摸式输入设备等)。也可以包括诸如显示器30、扬声器、打印机等输出设备28。所有这些设备在该技术领域中众所周知,这里不需要对其进行详细讨论。
缓冲器组装现在参考图3,示出本发明可在其中加以实施的电子邮件网络100的一个例子。本发明的电子邮件网络100利用请求和响应交换,在电子邮件网络100中的客户机部件与服务器部件之间传递询问和数据。在实践中,被用来执行电子邮件网络(例如,电子邮件网络100)中的客户机与服务器之间的通信的基础通信网络传送机制可能会影响协议的性能。例如,在将远程过程调用(RPCs)用作基础通信网络传送机制的电子邮件网络中,与执行较小规模(例如,2KB)的几个远程过程调用相比,执行较大规模(例如,32KB)的单一远程过程调用可能会有效率得多。提高这种电子邮件网络中的性能的一种已知方法是缓冲在单一远程过程调用中传输的多个请求和/或响应。
举例而言,图3表现了电子邮件客户机102与电子邮件服务器106之间的请求和响应交换,其中的一个或这两者可以被进行配置(例如,计算机10)。在这个例子中,电子邮件客户机102分配一发送缓冲器104,并用将要被发送到电子邮件服务器106的请求(可能是一个或多个子请求或远程操作(ROPs))来填充它。当发送缓冲器104装满(或几乎装满)时,电子邮件客户机102将这些内容发送到电子邮件服务器106,电子邮件服务器106将它们存储在请求缓冲器108中。电子邮件服务器106从请求缓冲器108中读取请求,并处理这些请求。处理每个请求都会产生一个采取响应形式的结果。这些响应可以包括电子邮件客户机102所要求的数据(例如,特定的电子邮件消息)。电子邮件服务器106将这些响应存入响应缓冲器110。
根据本发明的一个实施例,当电子邮件服务器106处理每个请求时,它使用指针来跟踪哪个请求是将要从请求缓冲器108中被加以处理的下一个请求。当电子邮件服务器106确定响应缓冲器110装满(例如,从32KB中剩余不到8BK)时,电子邮件服务器106停止处理请求缓冲器108中的这些请求。将还没有被处理的任何剩余的请求(即未完成的请求)附加到响应缓冲器110的内容。将这些未完成的请求和对完成的请求的响应发送到电子邮件客户机102处的接收缓冲器112。
在本发明的一个实施例中,电子邮件客户机102能够指定缓冲器104、108、110、112中的任何一个缓冲器的大小。响应的大小通常比请求的大小大。因此,电子邮件客户机102可能将响应缓冲器110和接收缓冲器112(总起来说是“响应缓冲器110和112”)的大小指定为大于发送缓冲器104和请求缓冲器108(总起来说是“请求缓冲器104和108”)的大小。
发明者所知道的原先技术的电子邮件网络系统不能执行这项功能,因为它们只使用电子邮件客户机和电子邮件服务器处的单个缓冲器。虽然临时申请(本说明书声明了其权益)的背景部分描绘了一种电子邮件网络,在该电子邮件网络中,电子邮件客户机和电子邮件服务器各具有两个缓冲器,但是,在本发明之前,申请者不知道在每处利用一个以上的单个缓冲器的任何电子邮件网络。
利用缓冲器的一些电子邮件网络(例如,图3中所示的电子邮件网络100)可以采用客户机(例如,电子邮件客户机102)与服务器(例如,电子邮件服务器106)之间的快速传送模式。快速传送模式包括客户机所提出的请求(例如,ROPs),这些请求至少被分成两类导致服务器处的快速传送数据源的初始化的请求和导致数据从快速传送数据源到客户机的高效的传送的请求。例如,快速传送数据源可能是数据库表。快速传送数据源用作现成的数据临时存储器,它使关于数据的以后的请求在获得服务时延迟比其他情况小。有时,第二类快速传送模式请求通过明确规定响应的大小来寻求实现高效的数据传送。举例而言,响应的大小可以被设置为整个接收缓冲器112的大小,再减去响应开销。
图4A表现了至少具有两个请求-响应周期的快速传送操作。在第一个请求401中,ROP(例如,FXPrepare)对电子邮件服务器106上的快速传送数据源进行初始化。在电子邮件服务器106处,只处理FXPrepare(即,快速传送数据源被初始化),并且在第一个响应402中返回其结果。在第二个请求403中,ROP(例如,FXGetBuffer)要求电子邮件服务器106从快速数据源装满响应缓冲器110。电子邮件服务器106将快速数据源腾空放在响应缓冲器110中,并在第二个响应404中返回结果。如果电子邮件服务器106的响应缓冲器110在快速数据源被腾空之前装满,则可能会需要额外的FXGetBuffer ROPs。
图4B表现了只具有一个单一请求-响应周期的快速传送操作。在第一个请求405中,由电子邮件服务器106来处理FXPrepare和FXGetBuffer,并在第一个响应406中返回两项操作的结果。电子邮件服务器106处的FXGetBuffer可使用FXPrepare的结果,因为每个缓冲器的一部分都被明确定义为共享的数据表。
需要减少请求-响应周期的数量,因为这种减少会导致更有效的数据传送。当响应缓冲器110太满而无法保存FXGetBuffer ROP的结果时,可能会发生不止具有一个单一请求-响应周期的快速传送操作。
现在参考图5,示出客户机的发送缓冲器104的内容120的一个例子。在这个例子中,发送缓冲器104包含远程过程调用(RPC)头部122和许多请求124。
根据本发明的一个方面,RPC头部122可以包括一个压缩位126和一个隐蔽位128。压缩位126指示电子邮件服务器106是否将要压缩对这些请求的响应。可以在内容120内提供其他信息,以指示电子邮件服务器106将要压缩这些响应。可能并不是始终需要进行压缩。例如,如果客户机具备等待时间低的高速连接并且具有足够的储备处理能力来有效率地执行解压,则客户机可以发送具有“不需要压缩”的指示的请求。作为选择,如果客户机具有足够的处理能力并且与服务器的连接是低带宽,则客户机可以向服务器指示它需要压缩(例如,在头部中设置压缩指示器位)。
隐蔽位128指示电子邮件服务器106是否将要隐蔽这些请求。“隐蔽”是为防止数据作为清楚可读的文本在网络上被发送而执行的一种简单的操作。“隐蔽”的一个例子是在发送请求之前,XOR(一种已知的“隐蔽”方法)它们。在一些实施例中,可以用加密代替“隐蔽”。再次可以在内容120内包括其他信息,该信息指出这些请求将要被隐蔽或被加密。
如图5所示,在一些实施例中,可以将电子邮件客户机102配置成包括内容120内的特殊请求130,该请求指示电子邮件服务器106使用链接来对客户机的请求作出响应,以下将对此加以描述。
现在参考图6,提供了一幅流程图,展示了一种用于根据本发明的一个实施例在客户机与服务器之间传送数据的方法。从步骤600开始,电子邮件服务器106从客户机那里接收多个请求(例如,请求124)。
根据本发明的一个实施例,电子邮件客户机102可以对电子邮件服务器106要求以链接方式或非链接方式发送响应。在步骤602中,电子邮件服务器106检查请求124,以确定这些请求是否包括链接请求(例如,特殊请求130)。如果不包括,那么,步骤602分支到步骤604,在那里,电子邮件服务器106开始建立关于请求124的响应。图8中示出使用非链接来建立响应的过程的一个例子,图7中的步骤将被应用于该描述中的那个例子。
在步骤604(图6)中,电子邮件服务器106创建头部140。在步骤606中,检索对请求124的响应142(图6),并将其存储在响应缓冲器110中。一旦电子邮件服务器106已建立足够的响应,以致响应142和头部140装满或几乎装满响应缓冲器110,电子邮件服务器106就停止处理请求。可以由电子邮件服务器106和/或电子邮件客户机102来定义响应缓冲器110是装满还是几乎装满。举例而言,当响应缓冲器110的剩余部分不到8k(起始的缓冲器为32k)时,可以认为该响应缓冲器装满。
如果电子邮件客户机102指出它支持压缩(例如,通过正确地设置压缩位126),则在步骤608中,电子邮件服务器106将响应缓冲器110内的响应压缩成一个响应142的压缩组144(图7)。同样,也在步骤608中,如果电子邮件客户机102指出它支持隐蔽(例如,通过正确地设置隐蔽位128),那么,电子邮件服务器106可以按指示隐蔽响应142或为其加密。
在步骤610中,将还没有被处理的任何请求附加到请求缓冲器108中的响应。这些未被处理的响应可以被放置在压缩之后未用过的内存(通常在图6中的内存146处被示出)中。然后,在步骤612中,电子邮件服务器106将这些响应和未完成的请求发送给电子邮件客户机102。
从以上所描述的和图7中所示的例子中可见,在非链接方式响应中,压缩之后未用过的内存(即内存146)可能是占大部分。根据本发明的一个方面,可以使用链接过程来使未用过的内存数量减到最少。但是,至今所描述的非链接方法可能(例如)在电子邮件客户机102不想要链接时有用,并且(例如)在不需要快速传送模式的ROP中有用。
如果电子邮件客户机102指出电子邮件服务器106应该使用链接方式,那么,步骤602分支到步骤614,在那里,电子邮件服务器106创建第一个头部150(图7)。图8表现了建立链接响应的过程的一个例子,可用于步骤614~620的说明。
在步骤616中,电子邮件服务器106检索响应缓冲器110,并用响应152为其填充。一旦响应缓冲器110达到预定的界限,就可以认为它装满。可以只用一个响应就装满响应缓冲器110,但是,如这里所使用的,“一响应集合”意味着一个或多个响应。在步骤618中,一旦响应缓冲器110装满或几乎装满,电子邮件服务器106就根据来自电子邮件客户机102的指令(例如,按照一压缩位126和/或隐蔽位128)来压缩并/或隐蔽响应缓冲器110内的响应。创建一个压缩组154的响应,留出请求缓冲器108中未用过的内存的一个大的部分156。
在压缩和/或隐蔽之后,在步骤620中确定额外的响应是否可适合在响应缓冲器110内。再次可以由电子邮件客户机102或电子邮件服务器106来定义额外的响应是否会适合。但是,在第一次压缩之后,预期将具有额外的空间可供使用。如果具有额外的空间,那么,过程返回到步骤614,在那里,电子邮件服务器106创建并附加第二个头部158(图8),并且再一次开始处理请求(步骤616)。
一旦响应缓冲器110装满或几乎装满响应,电子邮件服务器106就在步骤618中压缩并/或隐蔽新近增加的响应160。在步骤620中,再次确定是否为进一步的响应留有空间。如果留有空间的话,则过程再一次返回到步骤614,在那里,附加第三个头部,电子邮件服务器106再次用响应填充响应缓冲器110,并且压缩和/或隐蔽这些响应(步骤616和618)。重复这个过程,直到所有请求已完成或者响应缓冲器110充满或几乎充满头部和对应的被压缩的响应为止。一旦响应缓冲器110充满或几乎充满压缩响应和头部(在图8的底部示出),步骤620就分支到步骤610,在那里,电子邮件服务器106附加任何未完成的请求(如果有的话),并将响应缓冲器110的内容发送给电子邮件客户机102。
然后,在其接收缓冲器112中接收响应缓冲器110的内容的电子邮件客户机102可以处理这些头部之间的每一响应集合。如果这些响应组被压缩并/或被隐蔽,那么,电子邮件客户机102可以对隐蔽进行解压缩或隐蔽。在这种情况下,电子邮件客户机102仍然具有其随后可以进行处理的多个响应组。
通过在图7中的非链接过程中所发送的数据与在图8中的链接过程中所发送的数据之间的差异,可见,链接允许将多个头部/响应对被链接或组装在一起,并在一个“批文件”中对其进行发送,从而潜在地减少电子邮件客户机102与电子邮件服务器106之间的来回程的数量。在这里,这个过程被称作这些响应的“链接”或“组装”。对于网络而言,尤其在低带宽环境中,链接可能会有效率得多。根据本发明的一个实施例,电子邮件服务器106可以为链接提供快速传送模式请求,并且可以不为链接提供不是快速传送模式的请求。
现在参考图9,示出响应缓冲器159的一个更加详细的例子。在这个例子中,每个头部1611、1612…161N包括指针1621…162N到该缓冲器中的下一个头部。作为选择,头部161可以包括对应的响应的压缩大小。无论这样或那样,这个特点都允许电子邮件客户机102在压缩的批文件被接收时更容易地为其解码,这是因为电子邮件客户机102将会知道每个响应的大小和下一个响应的开始位置。
每个头部161也可以包括(例如)采取位文件形式的信息1641…164N,该信息指出头部161是否对应于缓冲器中的最后一个响应。头部161也可以包括其他信息(例如,对应的响应信息的未被压缩的大小)。
注意,电子邮件服务器106可以并行地接收和处理来自多个电子邮件客户机102的请求。为了达到那个目的,仅仅示出单一电子邮件客户机102,以简化附图和附随的说明。
使用较大的响应缓冲器如上所述,可以将电子邮件客户机102配置成向电子邮件服务器106通知将使用什么容量的请求缓冲器和/或响应缓冲器。例如,在本发明的一个实施例中,请求缓冲器104和108各是32KB,响应缓冲器110和112的最佳容量各是96KB,其比率是3/1。
虽然电子邮件客户机102可以规定较大的响应缓冲器110和112,但是,可以将电子邮件客户机102配置成使用比响应缓冲器110和112的实际容量小的各个响应数据块而工作。例如,可以为响应缓冲器110和112规定96K缓冲器,但电子邮件客户机102可能希望所有数据块的响应是32K或更小。通过本发明的组装或链接,这种系统可以生效。
图10中的流程图示出允许执行这项功能的方法的一个实施例。从步骤1000开始,电子邮件客户机102将一组请求连同定义响应缓冲器大小(例如,96K)的信息和有关该客户机被配置进行处理的数据块的大小的信息一起发送到电子邮件服务器106。在步骤1002中,电子邮件服务器106在响应缓冲器110内创建一个帧,该帧等同于由客户机定义的数据块的大小。然后,在步骤1004中,电子邮件服务器106将头部写入响应缓冲器110中的这个帧中。在步骤1006中,电子邮件服务器106开始处理这些响应,直到它装满或接近于装满该帧。在步骤1008中,这响应集合可以或可以不被压缩或被隐蔽。
然后,在步骤1010中,确定响应缓冲器110是否装满。通常,在第一次响应处理之后,响应缓冲器110将不会装满。如果响应缓冲器110未被装满,则过程返回到步骤1002,在那里,电子邮件服务器106创建始于刚刚被处理的那响应集合的末端的一个新的帧。可以使用指针,以便电子邮件服务器106知道在何处开始这下一个帧。如果响应缓冲器110内有足够的空间,则这个新的帧也将具有电子邮件客户机102可以进行处理的数据块的大小。在步骤1004中,电子邮件服务器106在这个新的帧中写入下一个头部。然后,过程进行到步骤1010。
一旦响应缓冲器110被装满(或者,所有请求都已被处理,无论哪一个在前),过程就分支到步骤1012,在那里,电子邮件服务器106拷贝响应缓冲器110中剩余的未被处理的请求。在步骤1014中,电子邮件服务器106将响应缓冲器110的内容发送给电子邮件客户机102。
然后,在其接收缓冲器112中接收响应缓冲器110的内容的电子邮件客户机102可以处理各个头部之间的每个数据块(每响应集合)。如果这些响应没有被压缩或隐蔽,那么,电子邮件客户机102可以按现状处理各个头部之间的每个响应组。这些响应组将等同于或小于由电子邮件客户机102定义的数据块,所以,电子邮件客户机102应该能够正确地处理这些数据组。如果这些响应组被压缩并/或被搞乱,那么,电子邮件客户机102可以对隐蔽进行解压缩或解隐蔽。在这种情况下,电子邮件客户机102仍然具有多个响应组,这些响应组的每一个都小于或等同于该电子邮件客户机可以进行处理的数据块的大小。
哄骗服务器处理更多请求当电子邮件服务器106已完成处理一组请求时,可能必须“哄骗”电子邮件服务器106继续处理额外的请求。例如,通常将现存的电子邮件服务器配置成处理请求,并提供对某个大小(例如,32KB)的响应,该大小通常由电子邮件客户机102规定。在此处理之后,将现存的电子邮件服务器配置成要么发送指示“响应就绪”的响应(FXPrepare响应),要么自动发送该响应(FXGetBuffer响应)。但是,通过使用这里所揭示的压缩,电子邮件服务器106可能会需要处理关于FXGetBuffer响应的甚至更多的请求,以便装满响应缓冲器110内的额外的空间。该额外的空间可以通过压缩来创建。作为选择,在处理其帧中的一个帧之后,以上所描述的大缓冲器实施例可能具有额外的空间。
图11示出用于处理这种情况的方法的一个实施例。从步骤1100开始,确定是否为更多的响应留有空间,以及是否有更多要处理的请求。如果否,那么,步骤1100分支到步骤1102,在那里,电子邮件服务器106将响应发送给电子邮件客户机102。如果在提供一响应集合之后,电子邮件服务器106的状况指出有更多要处理的请求并具有处理它们的空间,那么,步骤1100分支到步骤1104,在那里,电子邮件服务器106生成“假”入站请求(例如,假FXGetBuffer请求)。然后,这个伪RPC(远程过程调用)入站请求由电子邮件服务器106来进行处理,好象它已从电子邮件客户机102那里被接收。RPC是“伪”的,体现在它实际上不是从远程计算机那里被发送的,而是从该服务器内被发送的。将这个伪RPC的出站缓冲器设置成是压缩之后的原始出站缓冲器的剩余部分(可能由以上所定义的帧来加以限制)。然后,如上所述,电子邮件服务器106在步骤1106中处这些新的响应。
电子邮件服务器106继续重复这个过程,直到它达到下列准则中的一个准则时为止要处理的入站请求上没有留下什么,剩余的出站缓冲器大小比预定的门限(例如,8KB)小,已链接了最大数量的缓冲器(例如,64个),或者,存在硬错误。
每个响应的分组集合具有其自己的头部,该头部具有其自己的标记。可以压缩一个分组,并隐蔽下一个分组;或者,作为选择,这两个分组中的任何一个分组都可以不被压缩或隐蔽。对于链式响应中的每个新的缓冲器而言,都被赋予标记。
缓冲器的内容的例子以下是出站响应缓冲器中有两个链式缓冲器的一个例子的详细视图 如上所示,每个响应分组缓冲器都有其自己的HSOT(处理-存储操作表)表。HSOT是关于每个网络请求中其将要作用于电子邮件服务器106上的什么对象的标识符。这是HSOT的表,其中的各个项目对应于内部存储对象。请求缓冲器108中的每项操作包含进入该表格的一个索引,用于识别该操作应用于哪一个存储对象。如果在操作期间创建了一个新的内部存储对象,则电子邮件服务器106也将会把各表项加入该表。如上所述,HSOT表格在值上不应该与清单中的第一项不同,但将只包含所有HSOT的HSOT表项,一直到并包括FXGetBuffer ROP中所使用的一项。这主要是实施决策,因为它将会减少电子邮件服务器106上的复杂性。HSOT表格通常只是两三个DWORDs,因此,这应该不会消耗有效带宽。
注意,这只是一个例子,不同实施的细节将会有所不同。例如,可以根据电子邮件客户机102和/或电子邮件服务器106支持哪些特点来对这些标记中的部分标记进行不同的解释。例如,如果电子邮件客户机102指出它支持紧缩缓冲器和/或压缩缓冲器,但电子邮件服务器106不支持其中一种缓冲器或这两种缓冲器,则电子邮件服务器106可以忽略对应的标记。
如上所述,可以在电子邮件客户机102上增加两个新的登记密钥,以确定电子邮件客户机102是否应该或不应该使用链式响应,以及出站缓冲器容量应该是什么(例如,32k<=容量<=128k)。这也可以被用于要求进行压缩。可以根据实施,在缺省的情况下启用这些特点,或在缺省的情况下禁止这些特点。
在一些实施中,可以组装去向电子邮件服务器106的入站缓冲器。这些实施可以执行电子邮件客户机102上的类似过程,以便按以上所描述的那样为电子邮件服务器106处理组装。但是,由于项目下载所消耗的时间通常比上载长,因此,一些实施可以无须组装而将入站缓冲器发送到电子邮件服务器106。
该说明揭示着重于电子邮件客户机实施和电子邮件服务器实施,但这里所揭示的各种系统和方法也可适用于其他类型的应用程序。例如,可以应用这里所揭示的各项技术来使映射应用程序(例如,Microsoft的MapPoint)中的映射客户机与服务器之间的信息同步化。另外,已在软件应用程序方面描述了这些系统和方法的实施例,但精通该技术领域的人将会理解可以在硬件、软件或硬件和软件的组合中执行这些系统。这些例子着重于拨号连接,但也可以考虑其他类型的网络连接(例如,不限制、LAN、无线、ISDN和DSL)。
这样,可见,已提供了一种用于通过使用缓冲器组装而在客户机应用程序与服务器应用程序之间进行通信的新的、有用的系统和方法。鉴于可以应用本发明的原理的许多可能的实施例,应该认识到这里根据附图所描述的实施例意在只起说明性的作用,而不应该被用作限制发明范围。例如,精通该技术领域的人将会认识到可以在硬件中执行软件中所示的说明性实施例的各个要素,反之亦然;或者,在不脱离本发明的精神的前提下,可以在布置和细节方面修改各个说明性实施例。所以,这里所描述的本发明将所有这些实施例都视作在以下权利要求书及其等同物的范围以内。
权利要求
1.一种响应于来自客户机的一批请求的计算机实现的方法,该方法的特征在于包括a)遍历这些请求并生成响应,直到这些响应的大小小于所需数量为止,这些响应包括第一响应集合;b)将头部附加到第一响应集合;c)压缩第一响应集合;d)在响应遍历每个请求过程中,遍历剩余的请求并生成额外的响应,直到这些额外的响应和缓冲器的其他内容的大小小于所需数量为止,这些额外的响应包括一组额外的响应;e)将一个额外的头部附加到这组额外的响应;以及,f)将这些头部和各响应集合发送给客户机。
2.权利要求1的方法,其特征在于还包括在发送缓冲器之前g)压缩这组额外的响应;以及,h)重复步骤d)、e)和g),直到这些头部和各响应集合已达到等于所需数量的大小为止,或直到这些请求都已被遍历为止。
3.权利要求1的方法,其特征在于其中,所需数量对应于客户机被配置进行处理的响应集合的大小。
4.权利要求1的方法,其特征在于其中,所需数量与被建立用于保存各响应集合和这些头部的缓冲器有关。
5.权利要求1的方法,其特征在于还包括在步骤d)之前,生成关于处理请求的入站请求。
6.权利要求5的方法,其特征在于其中,入站请求是伪远程过程调用。
7.一种计算机可读介质,其特征在于具有用于执行权利要求1中所陈述的方法的计算机可执行指令。
8.一种响应于来自客户机的一批请求的计算机实现的方法,该方法的特征在于包括a)遍历这些请求并在响应遍历每个请求过程中,生成响应,直到这些响应的大小装满服务器处的缓冲器内的第一个帧的所需数量为止,这些响应包括第一响应集合,与客户机被配置进行处理的响应集合的大小有关第一个帧的大小,且第一个帧的大小小于缓冲器的大小;b)将一个头部附加到第一响应集合;c)遍历剩余的请求并在响应遍历每个请求过程中生成额外的响应,直到这些响应的大小装满缓冲器内的一个额外的帧的所需数量,这些额外的响应包括一组额外的响应,这个额外的帧的大小与客户机被配置进行处理的一响应集合的大小或缓冲器的剩余部分有关,无论哪一个更小,这个额外的帧的大小小于缓冲器的大小;d)将一个额外的头部附加到这组额外的响应;以及,e)将缓冲器的内容发送给客户机。
9.权利要求8的方法,其特征在于还包括f)在步骤c)之前,压缩第一响应集合。
10.权利要求9的方法,其特征在于还包括g)在步骤e)之前,压缩这组额外的响应。
11.权利要求10的方法,其特征在于还包括重复步骤c)、d)和g),直到缓冲器被装满所需数量。
12.权利要求8的方法,其特征在于还包括重复步骤c)和d),直到缓冲器被装满所需数量。
13.权利要求8的方法,其特征在于还包括在步骤c)之前,生成关于请求处理的入站请求。
14.权利要求13的方法,其特征在于其中,该入站请求是伪远程过程调用。
15.一种计算机可读介质,其特征在于具有用于执行权利要求8中所陈述的方法的计算机可执行指令。
16.一种其上存储有数据结构的计算机可读介质,其特征在于包括多个操作请求;以及,一个指示,它指出应该经由链接来返回对请求的响应。
17.权利要求16的数据结构,其特征在于其中,链式包括a)组装第一响应集合;b)将一个头部附加到第一响应集合;以及,c)为一组或多组额外的响应重复a)和b)。
18.权利要求17的数据结构,其特征在于还包括指示应该压缩的各响应集合。
19.权利要求18的数据结构,其特征在于还包括压缩之前各响应集合的大小界限的指示。
20.权利要求17的数据结构,其特征在于还包括各响应集合的大小界限的指示。
21.一种用于在服务器与客户机之间传送数据的方法,该方法的特征在于包括a)从客户机那里接收多个请求,包括关于对这些请求的响应进行链接的请求;b)组装对客户机响应的第一集合;c)压缩该第一响应集合;d)将一个头部附加到该第一响应集合;e)为一组或多组额外的响应重复(b)~(d);以及,f)将各组被压缩的响应和头部一起发送给客户机。
22.权利要求21的方法,其特征在于还包括在步骤e)之前,生成关于对请求处理的入站请求。
23.权利要求22的方法,其特征在于其中,该入站请求是伪远程过程调用。
24.一种计算机可读介质,其特征在于具有用于执行权利要求21中所陈述的方法的计算机可执行指令。
全文摘要
一种方法,用于将处理服务器上的多个响应集合形成批,并以单个批文件(即“链式”或“组装”批文件)形式将这些响应发送给客户机。各响应集合都可以被隐蔽并/或被压缩。一旦客户机接收到该批文件,就个别地处理每个集合。可以将该客户机配置成传送其能够进行处理的一组未被压缩的响应的大小。服务器可以使用该信息来创建具有正确大小的各响应集合,并可以或可以不压缩各组响应集合。服务器可以链接各响应集合,并可以继续链接被压缩或未被压缩的各集合,直到服务器的缓冲器装满或接近于装满为止。然后,可以将这经链接的响应集合发送给客户机,并可以个别地处理各响应集合中的每响应集合。
文档编号H04L29/06GK1574795SQ200310116490
公开日2005年2月2日 申请日期2003年11月20日 优先权日2002年11月20日
发明者J·R·瓦伦, K·弗洛里奇, N·A·博尼拉, R·A·勒马查德, R·E·格雷, A·邓, A·哈特韦尔, S·F·高达德, B·库蒂斯, B·鲍尔 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1