流的邮件处理流水线的制作方法

文档序号:7591123阅读:381来源:国知局
专利名称:流的邮件处理流水线的制作方法
技术领域
本发明涉及邮件处理,尤其涉及降低处理邮件的缓冲区要求并因此允许发邮件收发系统使用给定的缓冲区大小发送或接收相对较大的邮件的方法、系统和计算机程序产品。
背景技术
邮件处理发生在多种环境中,包括一般在通信协议内的分布式应用程序支持,等等。邮件处理系统一直面临的一个问题是处理无限制大小的邮件。常规邮件处理系统一般缓冲合理大小的邮件,但大邮件导致不可预测的且可能巨大的内存要求,除非被拒绝。大是一个相对术语,部分地取决于邮件处理系统自身。但随着网络速度的提高,邮件大小也增加,特别是给定的多媒体和图形内容交换的普及。虽然按照网络带宽,当考虑到包括内存和处理时间在内的处理事项时,多兆字节的邮件不在代表太大的问题,多兆字节的邮件可以代表邮件收发系统上的重大变形,尤其如果它们比较规则地被接收时。
当然,具有增加的处理功率以及可用的内存的计算机日益跌价,减少了大邮件所引起的某些资源需求。假定过去几年的硬件进步,一种方法可能包括提高可用的缓冲区大小和处理速度以补偿较大的邮件。多数邮件会相对较小,因此一条推理路线提出偶然的大邮件不会有很大的问题。
这条推理线未能考虑到至少两个注意事项。首先且最重要的前提是,大邮件将只会偶然到达。邮件收发系统总是有可能受到服务攻击的拒绝。通常,服务攻击的拒绝试图用请求来压倒一块硬件,这些请求使接收计算机处理的时间比发送计算机产生的时间要长。向邮件处理系统发送大邮件是恶意拒绝服务攻击的出发点,因此假定仅会偶然接收到大邮件对于处理大邮件来说是危险的策略。其次,许多邮件处理系统时常以接近的容量进行工作,因此不能忽视大邮件在繁忙时刻到达的可能性。
由于传统邮件收发系统中发现的这些及其他问题,期望一些方法、系统和计算机程序产品,它们能在处理邮件时降低缓冲区要求,使得邮件收发系统可以使用给定的缓冲区大小来发送或接收相对较大的邮件。

发明内容
本发明涉及降低邮件收发系统中的缓冲区要求使得邮件收发系统可以使用给定的缓冲区大小来发送或接收相对较大的邮件的方法、系统和计算机程序产品。按照下面更详细描述的本发明的示例实施例,邮件收发系统经过一次或多次邮件传输而把邮件发送到末端或从末端接收邮件。邮件收发系统可以是用于路由邮件对象的中介物,或是发送和接收邮件的末端。
在一个示例实施例中,提供了一个或多个邮件处理机,各个处理机标识了对邮件对象执行的一个相应的处理操作。邮件对象包括具有面向流的接口的流化部分。为了把所述一个或多个邮件处理机管理为顺序的集合,也提供了流水线。邮件对象由邮件流水线中的一个或多个邮件处理机所处理,使得至少一个邮件处理机用相应的处理操作封装邮件对象的流化部分。相应的处理操作要在将来时间执行,并且封装邮件对象的流化部分,而不在缓冲器内具体化该流化部分。在某些实施例中,可以提供包括嵌套流水线在内的多个流水线,用于用各个邮件处理机来处理该邮件对象。
如果流水线包括多个邮件处理机,则各个处理机可以连续地打包流化部分,使得与邮件处理机对应的处理操作层叠在邮件对象的流化部分上。邮件对象可以包括一个或多个标题部分、一个或多个正文部分以及一个或多个附件部分,其中至少正文和/或附件部分一般包括邮件对象的流化部分。
在示例实施例中,邮件对象可以是简单对象访问协议(SOAP)邮件。为了路由并且处理SOAP邮件,可以为了访问而缓冲或具体化邮件的标题,而无须具体化流化部分。路由可以包括复制邮件对象,用于传递到多个末端。
调用邮件流水线的一个或多个邮件处理机发生在为邮件对象的流化部分指定一个流之前。由于在调用邮件处理机时无须具体化流化部分,因此可以首先为邮件标识流水线内邮件处理机的处理操作,然后在稍后的时间可以为邮件对象的流化部分指定其上会执行操作的实际流。把邮件对象发送到另一末端或从另一末端接收邮件对象会引起处理操作封装流化部分,用于在流化部分上执行。
在下面的描述中会提出本发明的附加特征和优点,部分从描述中变得显而易见,或者可由实践本发明而获悉。本发明的特征和优点可以用所附权利要求中特别指出的工具和组合来实现和获得。从下面的描述和所附权利要求中,本发明的这些及其他特征将变得更加明显,或者可以从下面提出的发明的实现中获悉。


为了描述可以获得本发明的上述及其他优点和特征的方式,将参照特定的实施例为上面简要描述的发明提出更具体的描述,这些实施例在附图中说明。可以理解,这些附图仅描述了本发明的一般实施例,因此不应被视为限制本发明,通过使用附图会更具体和详细地描述并解释本发明,附图中图1说明了按照本发明由邮件收发系统进行处理的示例邮件;图2A示出从一个流中读取邮件对象的示例;图2B示出将邮件对象写入一个流的示例;图3A说明了用于处理邮件对象的示例流水线;图3B说明了用于邮件对象处理的嵌套流水线示例;图4说明了邮件对象的流化邮件内容的打包或封装;图5A-5C示出邮件对象的路由的示例;图6说明了复制邮件对象而无须缓冲流化部分的示例;图7A-7B示出按照本发明,用于处理邮件对象的方法的示例动作和步骤,该方法降低了缓冲区要求;以及图8说明了提供本发明的适当操作环境的示例系统。
具体实施例方式
本发明延及用于处理邮件对象的方法、系统和计算机程序产品,它降低了对至少一部分邮件对象的缓冲区要求。通过降低缓冲区要求,本发明允许邮件收发系统使用给定的缓冲区大小发送或接收相对较大的邮件。如下面详细讨论的,本发明的实施例可以包括以把或多个专用和/或一个或多个通用计算机,计算机包括各种计算机硬件。
图1说明了按照本发明由邮件收发系统进行处理的示例邮件对象100。邮件是末端间通信的基本单位。邮件对象100包括标题集合110,该集合10包含标题112标题114、标题116还可能有其他标题。邮件对象100还包括内容120。如图所示,邮件对象100的标题集合110被缓冲,而内容120被流化。缓冲邮件对象的标题的一个动机是在实际处理之前,在决定怎样处理邮件时一般使用标题。例如,为了把邮件对象100路由到适当的末端,一般有必要检查特定的标题。然而,路由一般不要求检验内容。因而,流化内容120并且为了方便而缓冲标题在某些情况下可能是适当的。
当然,缓冲标题集合110并流化内容120仅仅是一个示例的邮件格式。由于标题相对较小且通常较好地被定义,因此它们未给出邮件内容所见的无限制的缓冲区要求。然而,本发明中包括流化全部的邮件对象100,包括标题集合110。而且,应该强调,邮件对象100的格式仅仅是许多可能格式中的一个。尽管邮件对象100通常会包括分开的标题集合110以及内容或正文120,本发明仍不限于任何特定的邮件格式,对特定邮件格式的任何引用应该仅被视为示例。
邮件对象100的格式一般对应于简单对象访问协议(SOAP)邮件。SOAP是基于可扩展置标语言(XML)的轻量邮件收发协议,它用于在网络上发送web服务请求和应答邮件时,对其中的信息进行编码。SOAP邮件非常适用于web服务,因为它们是独立于操作系统的,并且可以用各种因特网协议中的任一种来传输和编码,各种协议如简单邮件传输协议(SMTP)、超文本传输协议(HTTP)、多用途因特网邮件扩展(MIME)、直接因特网邮件封装(DIME)等等。
通用SOAP邮件处理器需要至少能访问邮件中存在的特定标题,以便确定其正确的处理。下面更详细地描述的是,在一个示例实施例中,可以使用邮件处理机的流水线来处理邮件。这些处理机的每一个可以检查并工作在邮件内存在的零个或多个标题上。(处理机也检查并工作在流化的邮件内容上。)这些处理机的组合动作定义了会影响邮件的处理。一旦SOAP处理器完成了它的工作,它就把邮件传递给邮件的目标接收者。
然而注意到,在该状态下,SOAP处理器无须具体化缓冲区内的完整邮件以执行邮件的正确处理。特别是,SOAP处理器仅需访问特定的标题元素,甚至可能是某些正文元素,但无须访问其他内容。因而在下述的示例实施例中,可以缓冲SOAP邮件的各个标题,而仅在需要时才缓冲SOAP邮件的正文。通过向正文传递一个基准并且允许用户一经需要就提取内容,从而基本完成了仅在需要时才产生SOAP邮件的正文。
在一个示例实施例中,邮件标题集合110具有查找标题集合内的单个标题的查找方法。查找通常由标题专用的邮件处理机用来检取适当的标题,或者根据标题类型、标题的XML元素名称、其中定义标题的XML名称空间以及/或者与标题所指向的末端相对应的动作者(actor)/任务(role)。在可用内存的约束内为了简化而缓冲所有的标题,但如上所述,本发明包括流化一个或多个标题,如果对于特定的实现是适当的。为了进一步防卫服务攻击的拒绝,可以为了缓冲标题而建立内存限额,例如32k字节。
图2A-2B示出对一个流读写邮件对象的示例。格式化程序230A和230B在代表邮件的流和内存中的邮件实例之间转换。当在网络上从另一末端接收到一个邮件时,格式化程序230A从流210A读取220A,并且调用240A一个邮件处理机250A来处理该邮件。类似地,当在网络上把一个邮件发送到另一末端时,格式化程序230B把邮件处理机250B所产生的内存中的实例写到流210B。如上所述,处理机250A和250B一般会是邮件处理机的一个或多个流水线。
图3A-3B说明了用于处理邮件对象的示例流水线。邮件处理机的顺序执行是普通的邮件处理模式。流水线简化了异步码邮件处理机的管理。一个流水线是一个邮件处理机,并且可以用于可使用邮件处理机的任何地方。流水线包含邮件处理机的顺序集合。图3A中,流水线330包括邮件处理机332、邮件处理机334和邮件处理机336。当调用流水线330来处理邮件300时,流水线调用其集合内的每个邮件处理机,以便处理该邮件。下面将更详细地描述邮件流水线作用于流化内容上的效应。
由于流水线是邮件处理机,因此如图3B所述,流水线可以是嵌套的。如上结合图3A所述,当调用流水线来处理邮件300时,邮件通过流水线内的各个处理机(除非发生差错或者处理机决定应该中止进一步的处理)。如果流水线内的一个处理机是流水线本身,如图3B所示,邮件就通过那些处理机的每一个,依此类推。图3B中,流水线330具有三个邮件处理机邮件处理机332、邮件处理机340和邮件处理机336。流水线340也有三个邮件处理机邮件处理机342、邮件处理机344和邮件处理机346。调用处理机的顺序由图中的线指出。如果像邮件处理机344这样的邮件处理机指示不应发生任何进一步的邮件处理,则邮件处理机346和邮件处理机336都不会被调用。当然,图3A-3B中所示的流水线是相对简单的流水线示例,应该理解可以使用复杂得多的流水线。
图4说明了邮件对象的流化的邮件内容的打包或封装。对于流化的邮件内容而言,邮件处理机,比如图3A-3B中所述的邮件处理机,用邮件处理机的处理操作来打包或封装流化的邮件内容。由于在调用邮件处理机时对流化的邮件内容执行处理操作会要求缓冲或具体化流化的邮件内容,因此发生打包或封装,这会打消把邮件内容作为一个流的目的。
如图4所示,在邮件400通过流水线410时,用各种处理操作来打包或封装邮件400的流化的邮件内容420。邮件处理机432用处理操作432A封装流化的邮件内容420。邮件处理机434用处理操作434A打包流化内容420和处理操作432A。最后,邮件处理机436用处理操作436A封装流化内容420、处理操作432A和处理操作434A。
根据流化内容上层叠的这些处理操作,当用户开始访问流化内容时,会执行适当的处理操作,邮件处理机的顺序称为流水线410,而无须具体化流化的内容。因此,降低了对处理邮件400的缓冲区要求,这允许邮件收发系统使用给定的缓冲区大小来发送或接收相对较大的邮件。如上所述,层叠的处理也使邮件收发系统较不易损,从而拒绝基于大邮件的服务攻击,这是因为邮件收发系统能执行大多数所需的处理而无须具体化内容,如果邮件收发系统参照下面图5A-5C执行路由功能,这尤其是有利的。应该注意到,当访问流的部分或大块时可能会发生流化内容的缓冲,但这个缓冲是有限的,因为它基于大块大小,而不是整个流。在其最后的目的地以及在中介物处,可以把接收到的流简单地写到另一个流,比如最后目的地处的磁盘或者下一次跳跃的流。
在这个阶段,用两个更具体的例子来讨论图4是有帮助的。假定流水线410正在准备要被写的邮件400的流化内容420。邮件处理机432包括数字签名操作432A,邮件处理机434包括加密操作434A,而邮件处理机436包括压缩操作436A。当邮件400通过流水线410时,数字签名操作432A、加密操作434A和压缩操作436A层叠在流化内容420的顶部、封装流化内容420或者打包流化内容420。因而,当写入流化内容420用于传输时,流化内容420提供了流的部分或大块,它们用数字签名操作432A数字地签名、用加密操作434A加密并且用压缩操作436A来压缩。因此,被写的内容是流化内容420的经签名、加密和压缩的形式。
相反,假定流水线410正在准备要读的邮件400的流化内容420。在读的情况下,流水线410内邮件处理机的顺序与上面写的例子相反。邮件处理机432包括解压缩操作432A,邮件处理机434包括解密操作434A,而邮件处理机436包括数字签名验证操作436A。当邮件400通过流水线410时,解压缩操作432A、解密操作434A和数字签名验证操作436A层叠在流化内容420的顶部、封装流化内容420或者打包流化内容420。
因而,当读取流化内容420时,流化内容420提供了流的部分或大块,它们用解压缩操作432A来解压、用解密操作434A来解密并且用数字签名验证操作436A来验证数字签名。因此,所读取的是经签名、加密和压缩的流化内容420的经解压缩、解密和数字签名验证的形式。发生在流水线410内的层叠或封装可以用一系列对象的调回函数来实现,这些函数对应于每个邮件处理机内的处理操作。换言之,最初我们从一个流开始,然而解压缩操作使该流成为经解压的流,解密操作使流成为经解密、经解压的流,而数字签名验证操作使流成为经验证、经解密、经解压的流,这恰恰是接收到的经签名、加密和压缩的流所需的。在执行每个操作时,相应的对象记住签名的操作是什么,从而形成一连串的调回。这仅仅是封装或打包处理操作的一个可能实现—许多其他实现也是可行的,并且应被视为在封装、打包和/或层叠的范围内。
图5A-5C示出对邮件对象500进行路由的一个例子。图5A类似于图1,其中邮件对象500包括标题集合510,该集合510包含标题1 512、标题2 514和标题3 516以及正文520。图5B中,当邮件对象500达到路由器530时,路由器530查看标题集合510以确定邮件应该怎样被路由。注意到如上所述,邮件对象的正文部分520无须为了路由而被具体化,而是可以被打包。于是,如图5C所示,适当地路由标题集合510和正文520。通过把邮件正文520打包,可以把在路由器530处读取的流写回到被路由的流,而无须将其具体化。因此,降低了路由器的缓冲区要求,允许路由器530以给定的缓冲区大小处理相对较大的邮件,并且使路由器530更有拒绝服务攻击的弹性。
图6说明了复制邮件对象而无须缓冲流化部分的例子,例如在把一个邮件对象发送到多个目的地时。使用基于流的模型的一个含义是相同的邮件对象不能被发送两次。转发代码660允许发送接收到的邮件,并且自动地执行构造新邮件所需的工作。
同样,类似于图1,源线路邮件(wire message)620包括标题集合610和流化正文620。标题集合610和流化正文620的一部分622已经被转发代码660所处理。注意到,目的地1线路邮件600-1包括标题集合610和正文部分622的拷贝,用标题集合610-1和正文部分622-1指出。同样,目的地2线路邮件600-2也包括标题集合610和正文部分622的拷贝,用标题集合610-2和正文部分622-2指出。
正文620的大块624作为到转发代码660的一个流624A。转发代码660读取流624A,从而在转发代码624内再次形成大块624。注意到转发代码660缓冲正文620的大块624。然而,如上所述,缓冲流的一大块表示出有限的缓冲区大小,这与缓冲全部正文620会表示无限缓冲区相反。转发代码660把大块624写入(664)目的地1邮件内容652-1和目的地2邮件内容652-2,分别显示为流624A-1和624A-2。然后,把流624A-1和624A-2写入目的地1线路邮件600-1和目的地2线路邮件600-2处的大块624-1和624-2。当转发代码660已经处理了全部源线路邮件600时,目的地1和目的地2都会有一个拷贝。
本发明还用包括功能性和/或非功能性动作的方法来描述。下面是可以在实现本发明时执行的动作和步骤的描述。通常,功能性步骤用所完成的结果描述本发明,而非功能性动作描述用于实现特定结果的更具体的动作。尽管可以以特定的顺序描述或要求功能性步骤和非功能性的动作,然而本发明不必限于动作和/或步骤的任何特定顺序或组合。
图7A-7B示出按照本发明能降低缓冲区要求的处理邮件对象的方法的动作和步骤。用于为邮件对象指定对象定义的步骤(710)可以包括为邮件对象创建邮件对象定义的动作(712),该定义至少包括一个流化部分和相应的面向流的接口。用于提供一个或多个邮件处理机的步骤(720)可以包括定义所述一个或多个邮件处理机的动作(722),其中各个邮件处理机都标识了对邮件对象执行的一个相应的处理操作。用于提供邮件流水线的步骤(730)可以包括标识并排列要被包括在可配置的流水线内的一个或多个邮件处理机的动作(712),其中邮件流水线由一个或多个邮件处理机的顺序集合组成。
用所述邮件流水线的一个或多个邮件处理机处理邮件对象以使至少一个邮件处理机封装所述邮件对象的一个流化部分的步骤(740)可以包括调用所述一个或多个邮件处理机的动作(742)。按照本发明的示例方法可以包括为所述邮件对象的流化部分指定一个流的动作(752)。如上所述,指定可以发生在调用所述邮件流水线的所述一个或多个邮件处理机之后。
用于调用邮件对象的一个或多个非流化部分的步骤(760)可以包括把所述一个或多个非流化部分存储在缓冲区内的动作(762)。从另一个末端或中介物接收邮件对象的步骤(790)可以包括从邮件传输流中读取所述邮件对象的动作(792)。把邮件对象发送到另一末端(780)或者复制所述邮件对象用于传递到多个末端(780)的步骤可以包括把所述邮件对象写到邮件传输流的动作(782)。注意到读和写都会造成在所述邮件对象的流化部分上执行来自邮件处理机的处理操作。按照本发明的示例方法还包括根据需要使邮件对象的流化部分具体化的动作。
本发明范围内的实施例还包括用于携带计算机可执行指令或数据结构或者存储它们的计算机可读媒质。这种计算机可读媒质可以是能被通用或专用计算机所访问的任何可用的媒质。例如、但不限制,这种计算机可读媒质可以包括RAM、ROM、EEPROM、CD-ROM或者其他光盘存储器、磁盘存储器或其他磁性存储设备,或者包括用于以计算机可执行指令或数据结构的形式传递或存储期望的程序代码装置、并且可以被通用或专用计算机所访问的任何其他媒质。当时,在网络或其他通信连接(或是硬线、无线的,或者是硬线或无线的组合)上向计算机传输或提供信息时,计算机适当地把该连接视为一个计算机可读媒质。因此,任何这样的连接都适当地被称为是计算机可读媒质。上面的组合应该被包括在计算机可读媒质的范围内。例如,计算机可执行指令包括使通用计算机、专用计算机或专用处理设备执行特定的一个功能或一组功能的指令和数据。
图8和下面的讨论提供了对其中可实现本发明的适当计算环境的简要、一般的描述。尽管不需要,可以用计算机可执行指令的一般上下文来描述本发明,比如由网络环境中的计算机所执行的程序模块。一般而言,程序模块包括执行特定任务或者实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。计算机可执行指令、相关的数据结构以及程序模块表示出用于执行这里公开的方法步骤的程序代码装置的示例。这种可执行指令或相关数据结构的特定顺序表示出用于实现这些步骤中描述的功能的相应动作示例。
本领域的技术人员会理解,本发明可以在具有许多计算机系统配置类型的网络计算环境中实现,包括个人计算机、手提设备、多处理器系统、基于微处理器的或可编程的用户电子设备、网络PC、小型计算机、大型计算机等等。本发明还可以在分布式计算系统中实现,该环境中由通过通信网络相连(或通过硬线、无线链路相连,或通过硬线或无线链路的组合相连)的本地和远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于本地和远程存储设备两者当中。
参照图8,用于实现本发明的示例系统包括形式为常规计算机820的通用计算设备,包括处理单元821、系统存储器822以及把包括系统存储器822在内的各种系统组件耦合到处理单元821的系统总线823。系统总线823可以是几种类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用多种总线结构中的任一种的本地总线。系统存储器包括只读存储器(ROM)824和随机存取存储器(RAM)825。基本输入/输出系统(BIOS)826可以被存储在ROM 824中,它包含帮助在计算机820内的元件间传输信息的基本例程。
计算机820还可以包括用于向磁硬盘839读写的磁硬盘驱动器827、用于向可移动磁盘829读写的磁盘驱动器828以及用于向CD-ROM或其他光学媒质等可移动光盘831读写的光盘驱动器830。磁硬盘驱动器827、磁盘驱动器828和光盘驱动器830分别通过硬盘驱动器接口832、磁盘驱动器接口833和光盘驱动器接口834连到系统总线823。驱动器及其相关的计算机可读媒质为计算机820的计算机可执行指令、数据结构、程序模块及其他数据提供非易失性存储。尽管这里描述的示例性环境采用了磁硬盘839、可移动磁盘829和可移动光盘831,然而也可以使用其他类型的用于存储数据的计算机可读媒质,包括磁性卡带、闪存卡、数字化视频光盘、Bernoulli盒带、RAM、ROM等等。
包含一个或多个程序模块的程序代码装置可以被存储在硬盘839、磁盘829、光盘831、ROM 824或RAM 825上,包括操作系统835、一个或多个应用程序836、其他程序模块837和程序数据838。用户可以通过键盘840、指示设备842或其他输入设备(未示出)把指令和信息输入到计算机820中,其他输入设备有麦克风、游戏杆、游戏板、圆盘式卫星天线、扫描仪等等。这些及其他输入设备通常通过与系统总线823耦合的串行断开接口846连接到处理单元821。或者,输入设备可以通过其他接口相连,比如并行端口、游戏端口或者通用串行总线(USB)。监视器847或其他显示设备也通过像视频适配器848这样的接口连到系统总线823。除了监视器以外,个人计算机一般包括其他外围输出设备(未示出),比如扬声器和打印机。
计算机820可以工作在使用到一个或多个远程计算机的网络环境中,比如到远程计算机849a和849b。远程计算机849a和849b都可以是另外的个人计算机、服务器、路由器、网络PC、对等设备或者其他公共网络节点,并且一般包括上面相对计算机820描述的许多或所有的元件,然而图8中仅说明了存储设备850a和850b以及它们相关的应用程序836a和836b。图8所述的逻辑连接包括局域网(LAN)851和广域网(WAN)852,它们是示例而不是限制。这种网络环境在公司或企业范围的计算机网络、内联网和因特网中是常见的。
当用于LAN网络环境中时,计算机820通过网络接口或适配器853连到局域网851。当用于WAN网络环境中时,计算机820可以包括调制解调器854、无线链路或者用于在像因特网这样的广域网上建立通信的其他装置。调制解调器854可以是内置或外置的,它通过串行端口接口846连到系统总线823。在网络环境中,参照计算机820或其部分而描述的程序模块可以被存储在远程存储设备中。可以理解,所示的网络连接是示例性的,也可以使用用于在广域网852上建立通信的其他装置。
本发明可以包含在其他特定形式中而不背离其精神或基本特征。所述实施例应被视为全部是说明性的而不是限制性的。因此,本发明的范围由所附权利要求指出,而不是由上述描述指出。在权利要求等价物的意义和范围内的所有变化都应被包含在它们的范围内。
权利要求
1.在通过一次或多次邮件传输发送或接收邮件的具有给定缓冲区大小的邮件收发系统中,一种为至少一部分的邮件降低缓冲区要求的处理邮件的方法,从而允许所述邮件收发系统使用给定的缓冲区大小发送或接收相对较大的邮件,所述方法包括以下动作定义一个或多个邮件处理机,每个邮件处理机都标识了对邮件对象执行的一个相应的处理操作,该邮件对象至少包括一个具有面向流的接口的流化部分;标识并排列要被包括在可配置的邮件流水线内的一个或多个邮件处理机;以及调用所述邮件流水线的所述一个或多个邮件处理机以处理所述邮件对象,其中至少一个邮件处理机用要在将来时间执行的它的相应处理操作来打包邮件对象的至少一个流化部分,而不在缓冲区内具体化所述邮件对象的所述至少一个流化部分。
2.如权利要求1所述的方法,其特征在于,所述流水线包括多个邮件处理机,其中多个邮件处理机的每一个接连地用其相应的处理操作来打包所述邮件对象的至少一个流化部分,使得在所述邮件对象的所述至少一个流化部分上层叠了多个处理操作。
3.如权利要求1所述的方法,其特征在于,所述邮件对象包括一个或多个标题部分和至少一个正文部分,其中所述正文部分包括所述邮件对象的所述至少一个流化部分。
4.如权利要求3所述的方法,其特征在于,所述邮件对象包括简单对象访问协议(SOAP)邮件对象。
5.如权利要求4所述的方法,其特征在于,所述邮件收发系统是负责路由所述邮件对象的中介物。
6.如权利要求5所述的方法,其特征在于,所述中介物具体化用于路由所述邮件的至少一个标题,而不具体化所述邮件对象的所述至少一个流化部分。
7.如权利要求1所述的方法,其中所述邮件收发系统是一个末端,所述方法还包括把所述邮件对象写到邮件传输流的动作,其中把邮件对象写到邮件传输流的动作造成对所述邮件对象的至少一个流化部分执行所述至少一个处理操作。
8.如权利要求1所述的方法,其中所述邮件收发系统包括一个邮件用户,所述方法还包括邮件用户根据需要具体化所述邮件对象的至少一个流化部分的动作。
9.如权利要求1所述的方法,还包括为所述邮件对象创建邮件对象定义的动作,所述邮件对象定义为所述邮件对象定义了至少一个流化部分和相应的面向流的接口。
10.如权利要求1所述的方法,其中定义了多个邮件流水线,所述方法还包括调用各个邮件流水线的一个或多个邮件处理机以处理所述邮件对象的动作。
11.如权利要求10所述的方法,其特征在于,所述邮件流水线中的至少一个位于另一个邮件流水线中。
12.对于通过一次或多次邮件传输来发送和接收邮件的具有给定缓冲区大小的邮件收发系统而言,一种计算机程序产品包括携带计算机可执行指令的一个或多个计算机可读媒质,这些指令实现了降低对至少一部分的邮件的缓冲区要求的邮件处理方法,从而允许所述邮件收发系统使用给定的缓冲区大小发送或接收相对较大的邮件,所述方法包括以下动作定义一个或多个邮件处理机,每个邮件处理机都标识了要对邮件对象执行的一个相应的处理操作,邮件对象包括具有面向流的接口的至少一个流化部分;标识并排列要被包括在可配置的邮件流水线内的一个或多个邮件处理机;以及调用所述邮件流水线的所述一个或多个邮件处理机以处理所述邮件对象,其中至少一个邮件处理机用要在将来时间执行的它的相应处理操作来打包所述邮件对象的所述至少一个流化部分,而不在缓冲区内具体化所述邮件对象的所述至少一个流化部分。
13.如权利要求12所述的计算机程序产品,其特征在于,所述流水线包括多个邮件处理机,其中多个邮件处理机的每一个接连地用其相应的处理操作来打包所述邮件对象的所述至少一个流化部分,使得在所述邮件对象的所述至少一个流化部分上层叠了多个处理操作。
14.如权利要求12所述的计算机程序产品,其特征在于,所述邮件对象包括一个或多个附件部分。
15.如权利要求12所述的计算机程序产品,其特征在于,调用邮件流水线的一个或多个邮件处理机发生在为所述邮件对象的所述至少一个流化部分指定一个流之前。
16.如权利要求12所述的计算机程序产品,其中所述邮件收发系统是一个末端,所述方法还包括从邮件传输流读取所述邮件对象的动作,其中从邮件传输流读取邮件对象的动作造成要对所述邮件对象的至少一个流化部分执行所述至少一个处理操作。
17.如权利要求12所述的计算机程序产品,其中所述邮件收发系统包括一个或多个非流化部分,所述方法还包括把所述一个或多个非流化部分存储在缓冲区中的动作。
18.如权利要求12所述的计算机程序产品,其中所述邮件收发系统包括邮件用户,所述方法还包括所述邮件用户根据需要具体化所述邮件对象的至少一个流化部分的动作。
19.如权利要求12所述的计算机程序产品,所述方法还包括把所述邮件对象写到多个传输流用于传递到多个末端,而不在缓冲器内具体化所述邮件对象的所述至少一个流化部分的动作。
20.如权利要求12所述的计算机程序产品,其中定义了多个邮件流水线,所述方法还包括调用各个邮件流水线的一个或多个邮件处理机来处理所述邮件对象的动作。
21.在通过一次或多次邮件传输发送或接收邮件的具有给定缓冲区大小的邮件收发系统中,一种为至少一部分的邮件降低缓冲区要求的处理邮件的方法,从而允许所述邮件收发系统使用给定的缓冲区大小发送或接收相对较大的邮件,所述方法包括以下动作提供一个或多个邮件处理机,各个邮件处理机都标识了要对邮件对象执行的一个相应的处理操作,所述邮件对象包括具有面向流的接口的至少一个流化部分;提供包括所述一个或多个邮件处理机的顺序集合的邮件流水线;以及用所述邮件流水线的所述一个或多个邮件处理机来处理所述邮件对象,其中至少一个邮件处理机用其相应的处理操作来封装所述邮件对象的所述至少一个流化部分,而不在缓冲区内具体化所述邮件对象的所述至少一个流化部分。
22.如权利要求21所述的方法,其特征在于,所述提供邮件流水线的步骤包括标识并排列所述一个或多个邮件处理机的动作。
23.如权利要求21所述的方法,其特征在于,所述流水线包括多个邮件处理机,其中多个邮件处理机的每一个接连地用其相应的处理操作来打包所述邮件对象的所述至少一个流化部分,使得在所述邮件对象的所述至少一个流化部分上层叠了多个处理操作。
24.如权利要求21所述的方法,其特征在于,所述邮件对象包括一个或多个附件部分。
25.如权利要求21所述的方法,其特征在于,调用邮件流水线的一个或多个邮件处理机发生在为所述邮件对象的所述至少一个流化部分指定一个流之前。
26.如权利要求21所述的方法,其中所述邮件收发系统是一个末端,所述方法还包括从另一末端或中介物接收所述邮件对象的步骤,其中接收所述邮件对象的步骤造成要对所述邮件对象的至少一个流化部分执行所述至少一个处理操作。
27.如权利要求21所述的方法,其中所述邮件对象包括一个或多个非流化部分,所述方法还包括缓冲所述一个或多个非流化部分的步骤。
28.如权利要求21所述的方法,其中所述邮件收发系统包括邮件用户,所述方法还包括所述邮件用户根据需要具体化所述邮件对象的至少一个流化部分的动作。
29.如权利要求21所述的方法,所述方法还包括复制所述邮件对象用于传递到多个末端,而不在缓冲器内具体化所述邮件对象的所述至少一个流化部分的步骤。
30.如权利要求21所述的方法,其中提供了多个邮件流水线,所述方法还包括用各个邮件流水线的一个或多个邮件处理机中的每一个来处理所述邮件对象的步骤。
31.对于通过一次或多次邮件传输来发送和接收邮件的具有给定缓冲区大小的邮件收发系统而言,一种计算机程序产品包括携带计算机可执行指令的一个或多个计算机可读媒质,这些指令实现了降低对至少一部分的邮件的缓冲区要求的邮件处理方法,从而允许所述邮件收发系统使用给定的缓冲区大小发送或接收相对较大的邮件,所述方法包括以下动作提供一个或多个邮件处理机,各个邮件处理机都标识了要对邮件对象执行的一个相应的处理操作,所述邮件对象包括具有面向流的接口的至少一个流化部分;提供包括所述一个或多个邮件处理机的顺序集合的邮件流水线;以及用所述邮件流水线的所述一个或多个邮件处理机来处理所述邮件对象,其中至少一个邮件处理机用其相应的处理操作来封装所述邮件对象的所述至少一个流化部分,而不在缓冲区内具体化所述邮件对象的所述至少一个流化部分。
32.如权利要求31所述的计算机程序产品,其特征在于,所述提供邮件流水线的步骤包括标识并排列所述一个或多个邮件处理机的动作。
33.如权利要求31所述的计算机程序产品,其特征在于,所述流水线包括多个邮件处理机,其中多个邮件处理机的每一个接连地用其相应的处理操作来打包所述邮件对象的所述至少一个流化部分,使得在所述邮件对象的所述至少一个流化部分上层叠了多个处理操作。
34.如权利要求31所述的计算机程序产品,其特征在于,所述邮件对象包括一个或多个标题部分和至少一个正文部分,其中所述正文部分包括所述邮件对象的所述至少一个流化部分。
35.如权利要求34所述的计算机程序产品,其特征在于,所述邮件对象包括简单对象访问协议(SOAP)邮件对象。
36.如权利要求35所述的计算机程序产品,其特征在于,所述邮件收发系统是负责路由所述邮件对象的中介物。
37.如权利要求36所述的计算机程序产品,其特征在于,所述中介物具体化用于路由邮件的至少一个标题,而不具体化所述邮件对象的所述至少一个流化部分。
38.如权利要求31所述的计算机程序产品,其中所述邮件收发系统是一个末端,所述方法还包括把所述邮件对象发送到另一末端的步骤,其中发送所述邮件对象的步骤造成要对所述邮件对象的至少一个流化部分执行所述至少一个处理操作。
39.如权利要求31所述的计算机程序产品,其中所述邮件收发系统包括邮件用户,所述方法还包括所述邮件用户根据需要具体化所述邮件对象的至少一个流化部分的动作。
40.如权利要求31所述的计算机程序产品,所述方法还包括为所述邮件对象指定邮件对象定义的步骤,其中所述邮件对象定义为所述邮件对象定义了所述至少一个流化部分和所述相应的面向流的接口。
41.如权利要求31所述的计算机程序产品,其中提供了多个邮件流水线,所述方法还包括用各个邮件流水线的一个或多个邮件处理机的每一个来处理所述邮件对象的步骤。
42.如权利要求41所述的计算机程序产品,其特征在于,所述邮件流水线中的至少一个位于另一邮件流水线中。
全文摘要
公开了降低邮件收发系统中的缓冲区要求,使得邮件收发系统可以使用给定的缓冲区大小来发送或接收相对较大的邮件的方法、系统和计算机程序产品。提供了邮件处理机,每个邮件处理机都标识了对邮件对象执行的一个相应的处理操作,所述邮件对象包括具有面向流的接口的流化部分。也提供了包括邮件处理机的顺序集合的流水线。邮件对象由邮件流水线内的邮件处理机所处理,使得至少一个邮件处理机用其相应的处理操作来封装邮件对象的流化部分。相应的处理操作要在将来实现执行,并且封装邮件对象的流化部分,而不在缓冲区内具体化该流化部分。邮件收发系统可以是用于路由邮件对象的中介物或是一个末端。
文档编号H04L29/06GK1534533SQ20041003226
公开日2004年10月6日 申请日期2004年3月25日 优先权日2003年3月26日
发明者E·B·克里斯腾森, E B 克里斯腾森, D·A·沃尔特, 沃尔特, M·J·考尔森, 考尔森, K·D·沃尔夫, 沃尔夫 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1