CN100470483C - 用于协作处理的***,设备及方法 - Google Patents
用于协作处理的***,设备及方法 Download PDFInfo
- Publication number
- CN100470483C CN100470483C CNB2006100062925A CN200610006292A CN100470483C CN 100470483 C CN100470483 C CN 100470483C CN B2006100062925 A CNB2006100062925 A CN B2006100062925A CN 200610006292 A CN200610006292 A CN 200610006292A CN 100470483 C CN100470483 C CN 100470483C
- Authority
- CN
- China
- Prior art keywords
- data
- output
- input
- stream
- handling component
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 168
- 238000012545 processing Methods 0.000 title claims abstract description 154
- 230000005540 biological transmission Effects 0.000 claims description 39
- 230000004044 response Effects 0.000 claims description 30
- 238000006243 chemical reaction Methods 0.000 claims description 13
- 230000008676 import Effects 0.000 claims description 4
- 238000003672 processing method Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 39
- 238000013515 script Methods 0.000 description 41
- 230000006870 function Effects 0.000 description 25
- 238000012423 maintenance Methods 0.000 description 19
- 238000004891 communication Methods 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 239000000654 additive Substances 0.000 description 3
- 230000000996 additive effect Effects 0.000 description 3
- 238000004321 preservation Methods 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/541—Client-server
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
协作处理***包括:存在于第一计算机上的第一数据处理组件,该组件用于产生输出保持对象,该对象具有向流输出保持在其中的数据的功能;管线部分,用于使输出保持对象向发送到第二计算机的流输出保持在所述输出保持对象中的数据,以及使第二计算机产生输入保持对象,该对象用于接收流并且存储经该流传输的数据,以及存在于第二计算机上的第二数据处理组件,该组件用于接收输入保持对象以执行数据处理。
Description
技术领域
本发明涉及一种用于使多个数据处理组件以协作的方式执行一系列处理的分布式数据处理技术。
背景技术
用于使多个数据处理组件协作并执行一系列处理的分布式数据处理方法是已知的。根据此方法,关于协作处理的过程的信息及关于中间结果的信息作为传输信息单元通过网络传输,同时执行每个局部处理并保存结果的每个节点从网络获取传输信息单元。基于传输信息单元的过程信息,使用节点保存的局部处理的结果及所获取的中间结果执行部分协作处理,从而,根据结果,中间结果信息被更新并与过程信息一起被发送到网络上。
通过使可在HTTP服务器上运行的处理服务器处理web服务器上的资料文件以及使多个处理服务器协作处理来获取复杂处理的结果的***也是已知的。此***中,web浏览器发送具有第一虚拟URL(统一资源定位符)的请求,该URL用过程名称、参数、计算机名称等限定了资料文件。由多个局部处理的组合形成的复合处理用第一虚拟URL表示。为形成复合处理,局部处理被表示为第二虚拟URL,该第二虚拟URL在第一虚拟URL中被描述为参数。因此,使用虚拟URL作为参数,可以以分层的方式形成表示复合处理的另一个虚拟URL,就像形成功能组合一样。每个处理服务器解释发送到其的虚拟URL,并提取其中包含的不能处理的参数(虚拟URL),将其作为HTTP(超文本传输协议)形式的请求传输到能够处理该参数的第二处理服务器。第一处理服务器获取作为响应的处理结果,并将该结果作为输入数据用于其自己的处理。因此,输入的虚拟URL被当作多嵌套计算处理,从而可以以分布式的方式从最内一个开始依次执行处理。在这种情况下,以HTTP协议连接组件进行彼此通信以实现分布式管线(pipeline)处理。
同样,在单个主机(host computer)上运行的单独的应用程序中,通过按照事件驱动的方式由多个HTTP模块协作处理从外部施加的HTTP请求的方法是已知的。根据此方法,来自外部源的HTTP请求被逻辑地表示以产生用于封装至少一个有关该HTTP请求的属性的环境(context)对象。形成具有多个请求事件的事件管线,其中每个请求事件具有一个对应的事件并与一个环境对象相对应。当对应于请求事件的事件发生时,并且当应用程序和模块中至少一个被与请求事件相关联而注册时,产生回访(callback),并响应对处理环境对象的回访,初始化与请求事件相关联而注册的每个应用程序和模块。
在上述用于使多个数据处理组件协作并执行一系列处理的方法中,中间结果的数据实体被保持在通过网络传播的传输处理单元中,因此,考虑到用于发送并接收中间结果的数据实体的通信,必须编程每个处理组件。因此,此方法与处理组件的复杂编程问题有关。
此问题也发生在单个计算机设备中的多个数据处理组件间的协作上。由诸如Unix(注册商标)这样的操作***(OS)提供的管线处理功能通过首先使用该OS以并发方式激活形成管线的每个程序,将程序的标准输出流连接到管线中下一个程序的标准输入流,从而实现协作处理。然而,这种方法要求每个组件在流中实现数据通信,因此不能用于简单的编程,所述简单的编程使用非流形式的数据或对象作为参数调用方法。
为了经由网络在数据处理组件间进行协作,使用网络通信协议(比如HTTP)通过网络传送中间结果的数据。在这种网络通信协议中,通过网络传输的数据通常是流的形式。发送和接收流的功能通常难以编程。对于数据处理组件重要的是待执行处理的内容,而处理的输入/输出控制是次要问题。不希望为这种次要的输入/输出控制使用编程资源。例如,开发用于实现单独商业逻辑的数据处理组件的厂商通常关注于商业逻辑的编程,而不希望为输入/输出控制的编程分配资源,所述数据处理组件是工作流***的元素。
根据上述用于获取复杂处理结果的方法,每个数据处理组件必须被实现以接收作为输入的HTTP请求并发送作为输出的HTTP响应,因此相同的问题出现了。
上述通过多个HTTP模块协作处理来处理从外部施加的HTTP请求的方法使得在同一主机的,特别是在同一个应用程序中的HTTP模块间进行协作,因此在不进行修改的情况下,就不能用于通过网络进行的不同主机中的处理组件间的协作。换句话说,可以在同一主机的HTTP模块间直接地传递待处理的对象,但对于通过网络进行的通信不能实现这种简单的数据传递方法。
发明内容
本发明提供了一种在协作处理***中使用的技术,用于经由数据通信网络的多个数据处理组件之间的协作,用于即使数据处理组件不具有处理流的数据输入/输出机制,也能通过经由网络传递数据来实现协作。
根据本发明的一个方面,提供了一种协作处理***,其包括:存在于第一计算机上的第一数据处理组件,该组件产生输出保持对象,该对象具有向流输出保持在其中的数据的功能;管线部分,该部分使得输出保持对象向发送到第二计算机的流输出保持在输出保持对象中的数据,并且使第二计算机产生输入保持对象,该对象接收流并且存储经该流传输的数据;以及存在于第二计算机上的第二数据处理组件,该组件接收输入保持对象以执行数据处理。
根据本发明的另一方面,提供了一种计算机设备,其包括:第一数据处理组件,该组件执行第一处理,并且输出输出保持对象,该对象具有将通过第一处理获取的数据作为流输出的功能;以及输出端管道(pipe)部分,当通过第一处理获取的数据被提供至第二计算机设备上的第二数据处理组件以执行第二处理时,该输出端管线部分使输出保持对象将数据作为发送到第二计算机设备的流输出,该数据保持在输出保持对象中。
根据本发明的另一方面,提供了一种计算机设备,其包括第一数据处理组件,该组件执行第一处理;输入端管道部分,其产生输入保持对象,该对象从外部设备接收流并且存储通过流传输的输入数据;以及处理指令部分,通过向第一数据处理组件输入输入保持对象,使第一数据处理组件处理输入数据。
根据本发明的另一方面,提供了一种协作处理方法,其包括:产生输出保持对象作为第一数据处理的输出;向发送到第二计算机的流输出保持在输出保持对象中的数据;产生输入保持对象,该对象接收流并且存储通过该流传输的数据;输出保持在输入保持对象中的数据;使用从输入保持对象输出的数据执行第二数据处理。
附图简述
将基于以下附图详细描述本发明的实施例,其中:
图1示意性地显示应用本发明的网络***;
图2显示包含在形成***的每个主机中的程序模块的结构的例子;
图3显示包含在形成***的每个主机中的程序模块的结构的另一个例子;
图4是描述当以Push方法传递中间结果时所使用的协作处理的流程的示图;
图5是描述当以Pull方法传递中间结果时所使用的协作处理的流程的示图;
图6是描述如何在同一主机内的数据处理组件间传递处理结果的视图;
图7是描述根据第一、第二变形的HTTP能力对象的数据类型控制的视图;
图8显示装备了根据第三变形的HTTP能力对象的高速缓存器的主机的结构;以及
图9显示具有根据第四变形的转换器工厂的主机的结构。
具体实施方式
将参照附图描述本发明的实施例。
在此实施例中,响应来自客户机2的请求,多个主机1通过允许使用HTTP的网络(例如因特网3)协作地执行处理。
参照图2,每个主机1具有用于协作处理的软件,此软件包括四类对象,即,处理控制器类10、数据处理组件类20、输入端“HTTP能力”类30,以及输出端“HTTP能力”类40。
数据处理组件类20是执行单一数据处理的数据处理组件的对象类。不特别限制单一数据处理(在下文中称作“单元处理”)的内容。存在多种可能的单元处理,比如文档的摘要,多个文档的合并。数据处理组件类20包括execute方法22(“execute()”),用于命令由数据处理组件定义的单元处理的执行。特殊的及特定的单元处理的类,比如文档摘要或文档合并,被实现为继承数据处理组件类20的子类。通过调用特殊的及特定的单元处理的对象的execute方法22,可以使对象执行单元处理。本实施例的***通过跨越网络(比如,因特网3)的特殊的及特定的单元处理的数据处理组件的协作,实现提供给客户机2的服务的一系列数据处理。注意到,数据处理组件类20和用于特殊的及特定的处理的子组件类可以具有除execute方法22以外的其他方法。
形成数据处理组件类20及其子类,即,特殊的及特定的处理组件类,以便将下文中描述的输入端HTTP能力类30(或其子类)的对象作为待处理的输入数据,以及将下述输出端HTTP能力类40的对象作为处理结果输出。这些类不需要具有用于数据流输入/输出的功能。
处理控制器类10是控制多个数据处理组件间的协作的对象类,并可以被实现为,例如,Java(注册商标)servlet(服务器端小程序)。处理控制器类10的主要作用是激活数据处理组件的对象以使其执行处理,所述数据处理组件对应于由客户机2或另一个主机1命令的处理。处理控制器类10具有“eval”方法12(“eval()”)和“pipe”方法14(“pipe()”)。
“eval”方法12是客户机2或另一个主机1用来调用主机1上的处理控制器类10的对象的方法。此方法的参数包括指示将由主机1执行的处理的内容的信息,比如特殊的及特定的数据处理组件的标识符以及提供给该组件的处理参数。此外,指定多个数据处理组件所执行的处理的次序的脚本及该脚本的标识信息可以被指定为eval方法12的参数。对于后一种情况,处理控制器类10的对象从主机1或网络上所提供的脚本服务器获取并使用与该脚本的标识信息对应的脚本实体数据。
“pipe”方法14是用于将特定主机1上的数据处理组件的处理结果通过网络(比如因特网3)传递到另一个主机1上的数据处理组件的方法。尽管可以使用各种通信协议以通过网络传递数据,但下面将描述使用HTTP的例子。
作为例子,通过网络传递数据有两种可能的方法。其中一种被称作Push(推)方法,在此方法中,在前一阶段中完成处理执行的主机向后一阶段中的主机发送执行下一个处理的HTTP请求,并且通过HTTP请求的流传输由前一主机执行的处理所产生的数据(即,将由后一主机处理的数据)。另一种被称作Pull(拉)方法,在此方法中,后一阶段中执行处理的主机向在前一阶段中已经执行处理的主机发送待处理数据的HTTP请求,前一主机在对请求的HTTP响应中将处理结果数据传输给后一主机。两种方法都可以用于本实施例。在从两种方法中选中的一个方法中,调用pipe方法14以实现数据传输。在Push方法中,例如,由于从前一阶段中的已经执行处理的主机向在后一阶段中执行处理的主机发送了HTTP请求,因此后一主机中的处理控制器类10的pipe方法14被调用。在Pull方法中,通过来自后一主机的、通知前一主机提供处理结果数据的HTTP请求,前一主机中的处理控制器类10的pipe方法14被调用。注意到,通过为Push和Pull方法安排不同的“方法”,Push方法和Pull方法都可以在单个***中使用。
pipe方法14本身仅需要具有发出HTTP请求(对于Pull方法,还发出HTTP响应)的功能,而不需要将数据处理组件的处理结果作为HTTP流进行发送和接收的功能。可以由下文中描述的输出端HTTP能力类40和输入端HTTP能力类30来执行这种发送和接收流的功能。
处理控制器类10可以具有除eval方法12和pipe方法14之外的其他方法。
尽管在此例子中,通过网络发送数据的功能被实现为处理控制器类10的pipe方法14,但是可选择地,可以定义不同于处理控制器类10的管线类,从而通过网络的数据传输功能可以由此管线类的对象来实现。
输出端能力类40是具有保存数据处理组件输出的处理结果数据的功能,并具有通过HTTP流输出所保存的数据的功能的对象类。本实施例中的数据处理组件类20或其子类的对象将输出端HTTP能力类40的对象(在下文中称为输出端HTTP能力对象)作为由对象执行的数据处理的结果输出。更确切地说,从数据处理组件对象输出的作为处理结果的输出端HTTP能力对象保存数据处理组件对象的处理结果数据。处理结果数据包括HTTP头和体信息的两者之一,或两者兼有。输出端HTTP能力类40具有outputHeader方法42(“outputHeader()”)用于输出HTTP头信息,以及outputBody方法44(“outputBody()”)用于输出HTTP体信息。outputHeader方法42和outputBody方法44将HTTP头和HTTP体的数据所输出到的数据输出流(的标识符)作为参数。其他设备、程序、和对象利用被指定为参数的数据输出流激活输出端HTTP能力对象的outputHeader方法42,从而,可以将输出端HTTP能力对象所保存的数据中的HTTP头(即,产生该对象的数据处理组件对象的处理结果)从该对象输出到数据输出流。类似地,通过利用数据输出流作为参数调用输出端HTTP能力对象的outputBody方法44,可以将该对象所保存的HTTP体的数据输出到数据输出流。
尽管数据输出组件在上面已被描述为将输出端HTTP能力类40的对象作为处理结果输出,但本发明不限于此,继承输出端HTTP能力类40的子类可以被作为处理结果输出。在下面的描述中,只要不必区分两者,那么也将子类的对象称为“输出端HTTP能力对象”。
输入端HTTP能力类30是接收被当作HTTP流通过网络(比如因特网3)发送到数据处理组件的数据的对象类。更确切地说,类30是用于代替数据处理组件接收并保存当作HTTP流发送的数据处理组件的输入数据的对象类。输入端HTTP能力类30具有constructor方法32(“constructor()”)。constructor方法32是用于产生输入端HTTP能力类30的对象(在下文中被称为输入端HTTP能力对象)的方法。constructor方法32将数据输入流当作参数。其他设备、程序和对象可以通过调用指定数据输入流作为参数的输入端HTTP能力类30的constructor方法32来产生输入端HTTP能力对象。产生的输入端HTTP能力对象根据HTTP从数据输入流接收数据,并将其存储。通过将输入端HTTP能力对象作为参数进行接收,数据处理组件获取保存在对象中的数据,并对该数据执行组件的处理。
尽管根据上面的描述,由输入端HTTP能力类30接收经网络发送的待处理的数据,但本发明不限于这种结构,也可以由继承输入端HTTP能力类30的子类的对象接收其。在下面的描述中,除非有必要区分两者,否则也将子类的对象称作“输入端HTTP能力对象”。
上述类30和40的名称中的术语“HTTP能力”是指,该类使得能够从HTTP流输入数据或将数据输出到HTTP流,并可以以符合HTTP的形式保存数据。既然其能够读取HTTP请求,并根据预定的数据类型分析和保存数据,以及根据需要从其自身保存的数据中再生HTTP流,那么HTTP能力类50的对象可以视作被封装的HTTP请求。尽管通过由上述多个HTTP模块协作处理来处理从外部施加的HTTP请求的技术中的环境对象是被封装的HTTP请求,但其仅是HTTP请求的被封装的属性,不必包括处理结果数据或将由组件处理的数据,也不必具有将此数据再生为HTTP流的功能。
注意到,输入端和输出端HTTP能力类30和40及其子类可以具有除上述那些方法之外的其他方法。
尽管上面的例子提供了两个类,即输入端和输出端HTTP能力类30和40,但是可选择的,还可以提供图3中显示的HTTP能力类50,该类具有constructor方法32、outputHeader方法42,及outputBody方法44。HTTP能力类50及其子类的对象可以执行上述输入端和输出端HTTP能力对象的函数。
上面已经描述了形成协作处理***的主机1的软件结构,主机1的硬件结构与通用计算机的结构相似。
将描述多个主机1上的数据处理组件间的协作处理的流程。如上所述,基于如何将一个数据处理组件的处理结果(整个协作处理的中间结果)通过网络传递到另一数据处理组件,协作处理可以粗略地划分成两种方法,即,Push和Pull方法。首先描述采用Push方法的协作处理。
图4显示了协作处理的流程,其中,根据Push方法,通过HTTP请求将第一主机1-1上的数据处理组件(对象)20-1的处理结果传递到远程的第二主机1-2上的另一个数据处理组件20-2。将按顺序描述该流程。
1.请求处理的HTTP请求Req1从外部设备(比如客户机2或另一个主机1)到达。HTTP请求Req1包含,例如,发送请求的设备的下列URL:
http://ho st1.domain/Evaluator?method=eval&script=script l.groovy...(1)
在此URL中,“host1”是第一主机1-1的名称,“domain”指示主机1-1所在域的名称,“Evaluator”指示处理控制器类10的类名。此外,在查询部分(“?”后面的部分)中,“method=eval”指示所调用的方法12“eval”,“&script=scriptl.groovy”指示由eval方法12处理的脚本的名称“scriptl.groovy”。
在接收与这种URL对应的HTTP请求Req1的第一主机1-1中,产生第一处理控制器10-1,它是处理控制器类10的对象。第一处理控制器10-1的eval方法12从网络上的脚本服务器或第一主机1-1获取与在请求Req1中指定的脚本名称相对应的脚本,并按顺序执行脚本指示的指令。下面将显示脚本描述的特定例子:
id0=Componentl.execute(url1);…(2)
id1=Evaluator.eval(host1,“scriptA.groovy”,id0);…(3)
id2=Evaluator.eval(host2,“scriptB.groovy”,id1);…(4)
脚本描述由三个表达式(2),(3)和(4)组成,它是由第一主机1-1(假设此处主机名称是“host0”)中的第一处理控制器10-1的eval方法12执行的脚本的一部分。同样假设第二主机1-2的主机名称是“host1”,图4中未显示的第三主机的名称是“host2”。“Component1”是第一数据处理组件20-1的类名,“Evaluator”是处理控制器类10的类名。例如,表达式(2)指示第一主机1-1中的第一数据处理组件20-1将在数据上执行处理,该数据可以根据“url1”指示的URL得到。作为组件20-1的处理结果的第一HTTP能力对象40a的标识符被设置为变量“id0”。表达式(3)中的指令是用于第二主机“host1”的指令,其命令使用“id0”指示的对象40a作为参数执行脚本“scriptA.groovy”,并将输出端HTTP能力对象,即,执行结果(即,脚本中指示的一系列数据处理组件的最后处理结果)的标识符设置为变量“id1”。表达式(4)中的指令是用于第三主机“host2”的指令,其命令以变量“id1”指示的处理结果作为待处理数据,执行脚本“scriptB.groovy”。
尽管脚本中可以描述控制结构(比如循环和条件分支),但此处省略对其的说明。在日本专利申请No.2004-321445(2004年11月5日申请)(与本申请共同待审未决)中详细描述了使用脚本的多个数据处理组件间的协作处理,通过参考,将该申请的说明书、权利要求、附图,以及摘要包含在此。
因而,脚本中的每个指令都包括待激活的数据处理组件,以及向数据处理组件指示输入数据的参数。因此,在按顺序执行脚本中的指令的过程中,第一处理控制器10-1激活(即,产生实例)由指令指示的数据处理组件(第一数据处理组件20-1),并使组件执行处理。
尽管在上面的例子中,在HTTP请求Req1中指定了将由第一主机1-1执行的脚本,但请求Req1也可以指定将由第一主机1-1(此例子中的第一数据处理组件20-1)执行的单元处理,而不是脚本。
2.当由第一处理控制器10-1激活的数据处理组件需要待处理数据时,必须在激活组件之前,获取待处理的数据并在将其转换成允许输入到组件中的形式。因此,作为将处理HTTP请求Req1的输入数据的接收器,第一处理控制器10-1的第一管线处理器14-1产生第零HTTP能力对象30a,该对象是输入端HTTP能力类30或HTTP能力类50的对象。第一管线处理器14-1是执行pipe方法14的功能的程序模块。
输入到第一数据处理组件20-1的数据被包含在来自例如外部设备的HTTP请求Req1中。例如,当HTTP请求Req1的上述URL实例(1)中的参数的方法名或脚本名称后面跟有输入数据实体时,通过使用由HTTP请求Req1形成的HTTP流的流名称作为参数调用constructor方法32,第一管线处理器14-1可以产生第零HTTP能力对象30a。产生的第零HTTP能力对象30a接收并保存HTTP流数据(更严格地讲,上述方法名称和参数后面的数据部分)。当HTTP请求Req1中包含引用(比如,输入数据的URL),而非输入数据实体时,第一管线处理器14-1向由引用指示的数据源发送对输入数据的HTTP请求,并使用来自数据源的对请求的响应的HTTP流作为参数调用constructor方法32,从而产生第零HTTP能力对象30a。对数据处理组件的输入数据的引用可以作为方法的参数在脚本的指令中描述。这种情况可以通过以下方法类似地处理,其中,第一管线处理器14-1发出对由引用所指示的数据的HTTP请求,从而产生接收对请求的响应的对象30a。
3.在产生第零HTTP能力对象30a后,第一处理控制器10-1使用对象30a的标识符作为参数,调用第一数据处理组件20-1的execute方法22,该方法将处理对象30a的数据,从而激活第一数据处理组件20-1。
4.激活的第一数据处理组件20-1接收由第零HTTP能力对象30a保存的数据,并对该数据执行处理。
5.然后,第一数据处理组件20-1将保存处理结果的数据的第一HTTP能力对象40a输出。对象40a是输出端HTTP能力类40或HTTP能力类50的对象。作为例子,可以由第一数据处理组件20-1通过使用其自身的数据输出流作为参数调用constructor方法32来实现此输出处理。
6.执行其处理后,第一数据处理组件20-1向第一处理控制器10-1发送回包括处理结果的状态的响应。当处理成功时,响应包括由组件20-1输出的第一HTTP能力对象40a的标识符。
7.当由第一处理控制器10-1正在执行的脚本包括以下描述时,即,在第一数据处理组件20-1的执行指令后执行运行在第二主机10-2上的脚本(比如在上述表达式(3)中)的指令的描述,或第二主机10-2上的第二数据处理组件20-2的执行指令的描述,那么第一处理控制器10-1命令第一管线处理器14-1向第二主机10-2发出处理请求。接收到该请求,第一管线处理器14-1发出HTTP请求Req2,用于请求第二主机10-2的第二管线处理器14-2执行第二数据处理组件20-2。例如,当上面的表达式(3)将被执行时,第一处理控制器10-1产生并发出HTTP请求Req2,该请求被发送到第二主机10-2并且包括表达式所指示的目的主机和脚本名称。
8.第一管线处理器14-1使用通过发出HTTP请求Req2形成的HTTP流60作为参数,按顺序调用第一HTTP能力对象40a(由表达式(2)和(3)中的变量“id0”指示)的outputHeader方法42和/或outputBody方法44,从而指示第一HTTP能力对象40a输出数据。
9.响应输出指令,第一HTTP能力对象40a向HTTP流60输出由其自身保存的数据。
10.另一方面,第二主机10-2激活装配了第二管线处理器14-2的第二处理控制器10-2,该处理器执行上述管线功能来响应第一主机10-1的HTTP请求Req2。第二管线处理器14-2使用HTTP流60作为参数调用constructor方法32以产生输入端HTTP能力类30或HTTP能力类50的第二HTTP能力对象30b。产生的第二HTTP能力对象30b获取并保存从HTTP流60输入的数据(HTTP头和HTTP体两者之一或两者兼有)。通过此处理所形成的第二HTTP能力对象30b成为第一主机1-1上的第一HTTP能力对象40a的复制品(副本)。
11.第二HTTP能力对象30b成功产生之后,第二处理控制器10-2使用第二HTTP能力对象30b作为输入数据执行请求Req2所指定的脚本。例如,当脚本中的第一个处理是以对象30b作为参数执行第二数据处理组件20-2时,第二处理控制器10-2使用对象30b的标识符作为参数激活第二数据处理组件20-2。
12.被激活的第二数据处理组件20-2获取对象30b保存的数据,并对该数据执行组件20-2自身将执行的处理。
13.第二数据处理组件20-2将处理结果作为输出端HTTP能力类40或HTTP能力类50的第三HTTP能力对象40b输出。第二数据处理组件20-2向第二处理控制器10-2回送对象40b的标识符。
对象40b保存的数据被传递到后一个数据处理组件以对该数据执行处理。当后一个数据处理组件在已经发出HTTP请求Req2的第一主机10-1上时,对象40b所保存的数据被放入对HTTP请求Req2的HTTP响应的流中,并被返回给第一主机10-1。当后一个数据处理组件在另一个主机上时,与上述处理类似,第二管线处理器14-2向目标主机的管线处理器发出HTTP请求,从而可以通过HTTP流传输对象40b的数据。
尽管描述了以Push方法在第一和第二主机10-1和10-2之间传递数据处理组件的处理结果的处理流程,但是以Pull方法进行这种传递的流程将参照图5描述。
在Pull方法中,在主机1-1和1-2之间传递两种HTTP请求。更具体地讲,有HTTP请求Req4(在下文中称为处理请求),该请求被从完成特定处理的执行的第一主机1-1发送到执行下一个处理的第二主机1-2,以请求执行后一个处理,以及HTTP请求Req5(数据请求),该请求被从第二主机1-2发送到第一主机1-1以请求用于后一个处理的资料数据(即,第一主机1-1的处理结果)。执行处理的请求Req4包括将由目的主机或数据处理组件执行的脚本的指定,以及目标数据的引用(比如具有目标数据的输出端HTTP能力对象的标识符),但不包括目标数据的实体。对目标数据的请求Req5包括引用的信息。
将按顺序描述Pull方法中协作处理的流程。由于除了在数据处理组件之间传递处理结果的流程以外,Pull方法和Push方法相似,所以将不重复描述那些与Push方法的步骤相同的步骤。
1.HTTP处理请求Req3从外部设备(客户机2或另一个主机1)到达第一主机10-1。处理请求Req3包括指定将由第一主机1-1执行的数据处理组件的信息或将由第一主机1-1处理的脚本。
2.根据待执行的数据处理组件的指定或请求Req3中的脚本,第一处理控制器10-1激活并且指示第一数据处理组件20-1执行处理。尽管图中没有显示,当第一数据处理组件20-1需要待处理数据时,并且指示待处理数据的引用信息包含在请求Req3中时,与Push方法类似,第一处理控制器10-1从引用信息指示的数据源获取待处理的数据,将该数据存储在输入端HTTP能力对象中,并使用此输入端HTTP能力对象作为参数激活第一数据处理组件20-1。
3.第一数据处理组件20-1的处理结果被作为第一HTTP能力对象40a输出,该对象是输出端HTTP能力对象。
4.完成该处理后,第一数据处理组件20-1向第一处理控制器10-1发送回包括第一HTTP能力对象40a的标识符的响应,即,处理结果。
5.如果第二主机10-2上的第二数据处理组件20-2必须在第一数据处理组件20-1之后被执行,则第一处理控制器10-1将发出指示执行处理组件的HTTP请求Req4。为使第二数据处理组件20-2识别待处理数据,HTTP请求Req4包括以下信息作为参数,例如第一数据处理组件20-1的标识信息(实例对象)或第一HTTP能力对象40a的标识符。
6.接收到HTTP请求Req4后,第二主机1-2的第二处理控制器10-2,在激活第二数据处理组件20-2之前,使第二管线处理器14-2向第一主机1-1发送HTTP请求Req5以请求将由该组件处理的数据。HTTP请求Req5包括指定待处理数据的标识信息。标识信息可以从HTTP请求Req4中得到。
7.接收到HTTP请求Req5后,第一主机1-1的第一管线处理器14-1向第二管线处理器14-2发送回请求Req5的HTTP响应Res1。
8.第一管线处理器14-1识别对应于HTTP请求Req5中包括的标识信息的第一HTTP能力对象40a,并且使用HTTP响应Res1的HTTP流70作为参数调用outputHeader方法42和outputBody方法44两者之一或同时调用两者,从而命令第一HTTP能力对象40a输出数据。
9.响应输出指令,第一HTTP能力对象40a向HTTP流70输出其保存的数据。
10.同时,响应来自第一主机10-1的HTTP响应Res1,第二主机10-2的第二管线处理器14-2使用HTTP流70作为参数调用constructor方法32,从而产生第二HTTP能力对象30b,即,输入端HTTP能力对象。产生的第二HTTP能力对象30b获取并且保存从HTTP流70输入的数据。
后面的步骤11-13与Push方法的步骤相同。
尽管上面描述了两种通过网络在不同主机之间传递数据处理组件的处理结果的方法,但是处理结果也可以在同一主机的不同数据组件之间传递。在这种情况下,第一处理控制器10-1使用第一HTTP能力对象40a的标识符(即,第一数据处理组件20-1的处理结果)作为参数激活下一个数据处理组件20-3,如图6所示。
如上所述,根据本实施例,由输入端HTTP能力对象或输出端HTTP能力对象执行HTTP流的输入/输出控制,因此,执行单元处理的数据处理组件仅需要被编程为输入/输出其对象类型的数据。更确切地讲,根据本实施例,通过HTTP流的数据输入/输出可以被替换成对象类型的数据输入/输出,而不是流类型的,从而简化了数据处理组件的开发并提高了生产率。
尽管在上面的例子中,每个主机1执行脚本,该脚本中排列数据处理组件的一个或多个执行指令或另一个脚本的执行指令,但是本发明不限于使用这种脚本的情况。例如,可以直接地从另一个主机指示(不通过脚本)执行特定主机中的数据处理组件。此情况下,执行脚本的处理控制器类10不是必要的。代替处理控制器类10,可以为每个主机1提供实现管线处理器14-1,14-2的功能的对象类。可选择地,数据处理组件类20可以包括执行管线功能的pipe方法。
接下来将描述本实施例的变形。
首先描述第一个变形。尽管上面的实施例中没有明确地提到,但HTTP能力对象(输入端或输出端)可以具有数据类型。例如,二进制类型的HTTP能力对象将HTTP请求或响应(输入端)的HTTP流的主体部分(HTTP主体),或数据处理组件(输出端)的处理结果数据解释为二进制数据,并将其保存为字节字符串。类似地,文本类型的HTTP能力对象将来自HTTP流的输入数据或数据处理组件的处理结果数据保存为字符字符串。XML(可扩展标记语言)类型的HTTP能力对象将来自HTTP流的输入数据或数据处理组件的处理结果数据解释为表示为文本的XML数据,并分析XML数据,并将分析结果保存为分析树。CSV(逗号分隔值)类型的HTTP能力对象将来自HTTP流的输入数据或数据处理组件的处理结果数据解释为表示为文本数据的CSV数据,并分析CSV数据,并将其保存为二维的表结构(二维数组)。每个类型的HTTP能力对象根据其保存的数据提供存取方法。例如,CSV类型的HTTP能力对象提供指定二维数组中的索引的来存取目标数据的方法。
为处理根据不同数据类型实现的不同的HTTP能力对象,根据第一变形,设计输出端HTTP能力对象的头输出方法“outputHeader”以将对象自身的数据类型作为HTTP请求或响应中的头的HTTP实体类型(头属性ContentType的值部分;MIME(多用途因特网邮件扩展)媒体类型)输出。如图7所示,为主机(在图7中显示第二主机1-2作为典型的例子)装备HTTP能力工厂35。HTTP能力工厂35分析包含在接收的HTTP流的头信息中的HTTP实体类型,并且激活所指定的数据类型的输入端HTTP能力对象的constructor方法。结果,可以产生保证具有与输出端第一HTTP能力对象40a相同的数据类型的第二HTTP能力对象30b,对象30b可以被用作第二数据处理组件20-2的参数。
接下来将描述第二变形。
在上述第一变形中,接收主机1的HTTP能力工厂35产生与发送主机1的输出端HTTP能力对象的数据类型相同的输入端HTTP能力对象。然而,由发送第一数据处理组件20-1输出的作为处理结果的对象的数据类型不必与由使用第一数据处理组件20-1的处理结果的第二数据处理组件20-2接收的作为输入的对象的数据类型相同。例如,XML数据可以被解释为简单的文本数据(字符字符串)或二进制数据(字节字符串)。因此,从XML类型的HTTP能力对象发送的数据不仅可以被XML类型的HTTP能力对象接收,还可以被文本类型或二进制类型的HTTP能力对象接收并处理。因此,即使前一个和后一个数据处理组件间的数据类型不相同,有时数据也可以在数据处理组件之间传递用于协作处理。
在这种情况下,在第二变形中,执行HTTP能力对象的数据类型转转换。用于这一目的的功能块与图7中显示的第一变形的功能块相同。然而,第二管线处理器14-2的功能不同于其在第一变形中的功能。
更确切地,在第二变形中,当产生第二HTTP能力对象30b时,第二主机1-2的第二管线处理器14-2向处理对象30b的第二数据处理组件20-2或激活并控制数据组件20-2的第二处理控制器10-2查询组件20-2请求的参数(输入端HTTP能力对象)的数据类型。为此,可以使用反射(Reflection)API(应用程序编程接口),一种Java(注册商标)API。第二管线处理器14-2向HTTP能力工厂35指定通过查询获取的数据类型。因此,HTTP能力工厂35产生具有第二管线处理器14-2指定的数据类型的第二HTTP能力对象30b,而不是通过HTTP请求或响应从另一个主机获取的实体类型,并且将其用作数据处理组件20-2的参数。
允许转换的数据类型之间的关系是固定的,因此,仅在可以转换的数据类型之间执行上述的转换操作。
接下来将描述第三变形。
第三变形是图5显示的Pull方法实施例的修改版本。在此实施例中,如图8所示,每个主机1(图中显示第二主机1-2作为典型的例子)包括用于临时存储输入端HTTP能力对象的高速缓存器80。
第二管线处理器14-2根据来自第一主机1-1的HTTP响应产生第二HTTP能力对象30b,即,第一HTTP能力对象40a(见图5)的复制品,并将对象30b与ID82相关联注册到高速缓存器80中。对于高速缓存器80,可以使用Java(注册商标)“HashMap”类的对象等。ID82是唯一标识第一HTTP能力对像40a的标识信息,根据对象40a产生被缓存的对象30b。对于ID82,例如,可以使用第一HTTP能力对像40a的URL或URI(统一资源标识符),但本发明不限于此。
图5的实施例中,当需要将由第二数据处理组件20-2处理的数据时,第二管线处理器14-2发出HTTP请求Req5,用于获取保存待处理数据的第一HTTP能力对像40a。另一方面,在第三变形中,第二管线处理器14-2在发出HTTP请求Req5之前,在高速缓存器80中搜索对象40a的复制品(对象30b)。在此处理中,使用ID82(例如对象40a的URL)作为关键码搜索高速缓存器80。因为待获取对象40a的ID对于产生HTTP请求Req5来说是必要的,所以第二管线处理器14-2知道其,因此可以使用该ID执行搜索。如果通过搜索,在高速缓存器80中找到与待获取对象的ID对应的对象30b(缓存器命中),那么第二管线处理器14-2使用对象30b作为参数激活第二数据处理组件20-2。另一方面,如果未在高速缓存器80中找到,那么第二管线处理器14-2向第一主机1-1发出HTTP请求Req5以请求对象40a,并且产生对象40a的复制品(见图5)。
注意到,高速缓存器80也可以执行维护,比如根据现有的缓存维护方法,比如LRU(最近最久未使用)方法,删除长时间未使用的对象。
根据此变形,当由特定主机(称为第一主机)从另一个主机获取的用于特定数据处理组件(称为第一组件)的数据被第一主机中的第一组件或另一个数据处理组件再次使用时,可以从高速缓存器80中获取该数据,从而提高处理速度。
因为如果每个组件的处理结果如同在相关领域中一样通过输入/输出流被传递,则每个数据处理组件的处理结果不会保存在计算机设备中,所以不足以用于在处理过程中的需要检查结果的动作,比如调试。相反,根据第三变形,处理结果被保留在高速缓存器80中,从而允许当在处理过程中需要结果时提供有用的信息。
接下来将参照图9描述第四变形。
考虑一种情况,其中,为第二数据处理组件20-2(见图8)获取并且保存在第三变形中的高速缓存器80中的对象30b稍后被不同的数据处理组件20-4重新使用。在这种情况下,被用作参数的对象的数据类型在组件20-2和20-4之间可以是不同的。为应对这种情况,根据第四变形,在主机1中提供转换器工厂90。转换器工厂90装备有多种用于数据类型转换的转换器程序,以及指示每个转换器程序可以被用于哪种数据类型转换的转换表。下面显示了转换表的例子。
输入类型 输出类型 转换器
文本/xml 文本/html XSL翻译器
文本/html 文本/csv HTML表转换器
文本/xml 文本/csv XML表转换器
在此表中,“输入类型”指示向转换器输入的数据类型(即,高速缓存器80中的对象),“输出类型”指示转换器的输出(即,将使用该对象的数据处理组件的参数的数据类型)。此外,“转换器”指示用于将“输入类型”转换成“输出类型”的转换器程序的标识符。例如,HTML表转换器分析HTML数据,得到并且解释表元素以产生并输出CSV形式的表。通过设计用于此目的的现有应用程序(比如HC95;http://www.smfknife.com/ht/hc95.php)可以实现将HTML表元素转换到CSV形式。同样适用于XML表转换器。
当从高速缓存器80中找到作为由数据处理组件20-4执行的处理所用的数据的第二HTTP能力对象30b时,第二管线处理器14-2向组件20-4或第二处理控制器10-2查询组件20-4使用的参数的数据类型。然后处理器14-2从转换表中识别具有与对象30b的数据类型相同的输入类型以及与数据处理组件20-4的参数的数据类型相同的输出类型的转换器。通过激活识别的转换器,根据对象30b产生与数据处理组件20-4的输入数据类型一致的第三HTTP能力对象30c,并且将其用作数据处理组件20-4的参数。
第四变形可以被用于包括下面的例子的应用程序。众所周知,通过指定XSLT(可扩展样式表语言转换)样式,利用XSL处理器将XML(文本/xml)数据转换成HTML(文本/html)数据。当高速缓存器80中的对象30b的数据类型是文本/xml并且数据处理组件20-4所等待的数据的类型是文本/html时,转换器工厂90从上面的转换表中选择转换器“XSL翻译器”,并且使用转换器以得到对象30c。
在相关的技术中,当在具有数据实体的不同签名(数据处理组件输入或输出的数据的类型和排列)的数据处理组件之间传递数据时,在后一阶段中的数据处理组件中发生类型错误匹配,从而阻止协作处理。相反,在第四变形中,如果其签名的组合是可以被转换器工厂90转换的组合,前一个和后一个组件可以执行协作处理。
尽管在上述第三和第四变形中为每个主机1装备了高速缓存器80,但是可选择地,可以在网络上提供执行高速缓存器80的功能的缓存服务器。在这种结构中,在上述Push方法中,数据被从主机1传输到缓存服务器,从而将输出端HTTP能力对象的复制品(即,主机1中的数据处理组件的处理结果)传输到缓存服务器。缓存服务器存储与输出端HTTP能力对象的ID相关联的复制品。当需要将被主机1中的数据处理组件处理的数据时,主机1的管线处理器1首先尝试从缓存服务器获取数据,如果尝试失败,从具有待处理数据的主机1获取其。
尽管描述了HTTP被用于在主机间传递数据的例子,但是本发明不限于HTTP,而是适用于一般的用于在主机间将数据作为流传递的协议。
一般地,可以通过使通用计算机执行完成主机1-1和1-2的上述功能的程序来实现上述实施例中的主机1-1和1-2。典型地,以被记录的状态,在计算机可读的存储介质(比如包括CD-ROM和DVD-ROM在内的光盘,包括软盘或硬盘在内的磁盘)之内提供此程序。
尽管结合特定的实施例描述了发明,但是对于本领域熟练技术人员来讲,可以根据前面的描述对其进行修改是显然的。因此,这意味着附加的权利要求包括所有这些在本发明的精神和范围之内的变形。
通过参考,将2005年6月24日提交的日本专利申请No.2005-185416的,包括其说明书、权力要求、附图和摘要在内的完整公开包含在此。
根据本发明的一方面,提供了一种协作处理***,其包括:存在于第一计算机上的第一数据处理组件,该组件产生输出保持对象,该对象具有向流输出保持在其中的数据的功能;管线部分,该组件使输出保持对象向发送到第二计算机的流输出保持在输出保持对象中的数据,并且使第二计算机产生输入保持对象,该对象接收流并且存储经该流传输的数据;以及存在于第二计算机上的第二数据处理组件,该组件接收输入保持对象以执行数据处理。
根据本发明的另一方面,管线部分可以包括存在于第一计算机上的输出端管道部分,以及存在于第二计算机上的输入端管道部分,当第二数据处理组件执行处理时,输入端管道部分可以向输出端管道部分发出对保持处理所需的数据的输出保持对象的数据请求,输出端管道部分可以发出对来自输入端管道部分的数据请求的响应,以使所请求的输出保持对象向响应的流输出保持在其中的数据,输入端管道部分可以产生输入保持对象,该对象从输出端管道部分接收响应的流并且存储经该流传输的数据。
根据本发明的另一方面,管线部分还可以包括高速缓存器部分,用于存储与输出保持对象相关联的输入保持对象,输入保持对象根据该输出保持对象产生,以及当第二数据处理组件执行数据处理时,输入端管道部分在数据请求发出前,可以在高速缓存器部分搜索与输出保持对象相关联的输入保持对象,该输出保持对象保持处理所需的数据,如果找到对应的输入保持对象,则可以不发出数据请求,并向第二数据处理组件提供这样发现的输入保持对象。
根据本发明的另一方面,当存储在高速缓存器部分中的输入保持对象的数据类型与处理保持在输入保持对象中的数据的第二数据处理组件的输入数据类型不同时,管线部分可以对输入保持对象执行类型转换,将其转换为输入数据类型,并且向第二数据处理组件提供作为类型转换的结果而产生的对象。
根据本发明的另一方面,管线部分可以包括存在于第一计算机上的输出端管道部分,以及存在于第二计算机上的输入端管道部分,输出端管道部分可以向输入端管道部分发出请求,并且使输出保持对象向请求的流输出保持在其中的数据,输入端管道部分可以产生输入保持对象,该对象从输出端管道部分接收请求的流并且存储经该流传输的数据。
根据本发明的另一方面,每个输出保持对象和输入保持对象都可以具有一个数据类型,管线部分可以具有在第二计算机上产生输入保持对象的对象工厂,而且该对象工厂可以具有产生两种或两种以上具有不同数据类型的输入保持对象的功能,并且在所述两种或两种以上输入保持对象当中,产生对应于输出保持对象的数据类型的输入保持对象。
根据本发明的另一方面,第二数据处理组件可以接收输入保持对象作为参数以执行处理,每个输出保持对象和输入保持对象都可以具有一个数据类型,管线部分可以具有在第二计算机上产生输入保持对象的对象工厂,该对象工厂具有产生两种或两种以上具有不同数据类型的输入保持对象的功能,并且产生对应于第二数据处理组件的参数的数据类型的输入保持对象。
根据本发明的另一方面,输入保持对象可以是输入保持对象类或继承该类的子类的实例,输入保持对象类可以具有constructor方法,用于接收流并产生输入保持对象,该对象保持经该流传输的数据。
根据本发明的另一方面,输出保持对象可以是输出保持对象类或继承该类的子类的实例,输出保持对象类可以具有数据输出方法,用于向流输出保持在输出保持对象中的数据。
根据本发明的另一方面,输出保持对象和输入保持对象可以是数据保持对象类或继承该类的子类的实例,数据保持对象类可以具有constructor方法,用于接收流,并且产生数据保持对象类的实例作为输入保持对象,其保持经该流传输的数据,以及数据输出方法,用于向流输出保持在作为输出保持对象的数据保持对象类的实例中的数据。
根据本发明的另一方面,流可以是响应发出HTTP请求或HTTP响应而形成的数据流。
根据本发明的另一方面,提供了一种计算机设备,包括:第一数据处理组件,该组件执行第一处理,并且输出输出保持对象,该对象具有将通过第一处理获得的数据作为流输出的功能;输出端管道部分,用于当通过第一处理获得的数据被提供到第二计算机设备上的第二数据处理组件以执行第二处理时,使输出保持对象将保持在输出保持对象中的数据作为发送到第二计算机设备的流输出。
根据本发明的另一方面,提供了一种计算机设备,包括:第一数据处理组件,该组件执行第一处理;输入端管道部分,用于产生输入保持对象,该对象从外部设备接收流并且存储经该流传输的输入数据;以及处理指令部分,用于通过向第一数据处理组件输入输入保持对象,使第一数据处理组件处理输入数据。
根据本发明的另一方面,提供了一种协作处理方法,包括:产生输出保持对象作为第一数据处理的输出;向发送到第二计算机的流输出保持在输出保持对象中的数据;产生输入保持对象,用于接收流并且存储经该流传输的数据;输出保持在输入保持对象中的数据;使用从输入保持对象中输出的数据执行第二数据处理。
Claims (13)
1.一种协作处理***,包括:
第一数据处理组件,其存在于第一计算机上,该第一数据处理组件用于产生输出包含对象,该输出包含对象具有向流输出包含在该输出包含对象中的数据的功能;
管线部分,用于使所述输出包含对象向发送到第二计算机的流输出包含在该输出包含对象中的数据,以及使所述第二计算机产生输入包含对象,该输入包含对象用于接收所述流并且存储经所述流传输的数据;以及
第二数据处理组件,其存在于所述第二计算机上,该第二数据处理组件用于接收所述输入包含对象以执行数据处理,其中
所述管线部分包括存在于所述第一计算机上的输出端管道部分,以及存在于所述第二计算机上的输入端管道部分,
当所述第二数据处理组件执行处理时,所述输入端管道部分向所述输出端管道部分发出对所述输出包含对象的数据请求,该输出包含对象包括所述处理所需的数据,
所述输出端管道部分发出对来自所述输入端管道部分的所述数据请求的响应,以使所述请求的输出包含对象向所述响应的流输出包含在该输出包含对象中的所述数据,以及
所述输入端管道部分产生所述输入包含对象,该输入包含对象用于从所述输出端管道部分接收所述响应的流以及存储经所述流传输的所述数据。
2.如权利要求1所述的协作处理***,其中
所述管线部分还包括高速缓存器部分,该高速缓存器部分用于存储与所述输出包含对象相关联的所述输入包含对象,其中,根据所述输出包含对象产生所述输入包含对象,以及
当所述第二数据处理组件执行所述数据处理时,在发出所述数据请求之前,所述输入端管道部分在所述高速缓存器部分中搜索与包含所述处理所需的数据的所述输出包含对象相关联的所述输入包含对象,并且如果找到对应的输入包含对象,则不发出所述数据请求并且向所述第二数据处理组件提供如此找到的所述输入包含对象。
3.如权利要求2所述的协作处理***,其中
当存储在所述高速缓存器部分中的所述输入包含对象的数据类型与用于处理包含在所述输入包含对象中的所述数据的所述第二数据处理组件的输入数据类型不同时,所述管线部分对所述输入包含对象执行到所述输入数据类型的类型转换,并且向所述第二数据处理组件提供作为所述类型转换的结果而产生的对象。
4.一种协作处理***,包括:
第一数据处理组件,其存在于第一计算机上,该第一数据处理组件用于产生输出包含对象,该输出包含对象具有向流输出包含在该输出包含对象中的数据的功能;
管线部分,用于使所述输出包含对象向发送到第二计算机的流输出包含在该输出包含对象中的数据,以及使所述第二计算机产生输入包含对象,该输入包含对象用于接收所述流并且存储经所述流传输的数据;以及
第二数据处理组件,其存在于所述第二计算机上,该第二数据处理组件用于接收所述输入包含对象以执行数据处理;其中
所述管线部分包括存在于所述第一计算机上的输出端管道部分,以及存在于所述第二计算机上的输入端管道部分,
所述输出端管道部分向所述输入端管道部分发出请求,并且使所述输出包含对象向所述请求的流输出包含在该输出包含对象中的所述数据,以及
所述输入端管道部分产生所述输入包含对象,该输入包含对象用于从所述输出端管道部分接收所述请求的流以及存储经所述流传输的所述数据。
5.如权利要求1所述的协作处理***,其中,
每个所述输出包含对象和所述输入包含对象都具有一个数据类型,
所述管线部分具有产生所述第二计算机上的所述输入包含对象的对象工厂,以及
所述对象工厂具有产生多种不同数据类型的输入包含对象的功能,并且产生在所述多种输入包含对象当中的、与所述输出包含对象的数据类型相对应的数据类型的输入包含对象。
6.如权利要求1所述的协作处理***,其中,
所述第二数据处理组件接收所述输入包含对象作为参数以执行所述处理,
每个所述输出包含对象和所述输入包含对象都具有一个数据类型,
所述管线部分具有对象工厂,该对象工厂用于产生所述第二计算机上的所述输入包含对象,以及
所述对象工厂具有产生多种不同数据类型的输入包含对象的功能,并且产生与所述第二数据处理组件的参数的数据类型相对应的数据类型的输入包含对象。
7.如权利要求1所述的协作处理***,其中,
所述输入包含对象是输入包含对象类或继承该类的子类的实例,以及
所述输入包含对象类具有constructor方法,该方法用于接收所述流,并产生包含经该流传输的所述数据的所述输入包含对象。
8.如权利要求1所述的协作处理***,其中,
所述输出包含对象是输出包含对象类或继承该类的子类的实例,以及
所述输出包含对象类具有dataoutput方法,该方法用于向所述流输出包含在所述输出包含对象中的所述数据。
9.如权利要求1所述的协作处理***,其中,
所述输出包含对象和所述输入包含对象是数据包含对象类或继承该类的子类的实例,以及
所述数据包含对象类具有
constructor方法,用于接收所述流,以及产生包含经该流传输的所述数据的所述数据包含对象类的实例以作为所述输入包含对象,以及
dataoutput方法,用于向所述流输出作为所述输出包含对象的所述数据包含对象类的实例中包含的所述数据。
10.如权利要求1所述的协作处理***,其中,
所述流是响应HTTP请求或HTTP响应的发出而形成的数据流。
11.一种计算机设备,包括:
第一数据处理组件,用于执行第一处理,以及输出一种输出包含对象,该输出包含对象具有将通过所述第一处理获得的数据作为流输出的功能;以及
输出端管道部分,用于当通过所述第一处理获得的所述数据被提供到第二计算机设备上的第二数据处理组件以执行第二处理时,使所述输出包含对象将包含在所述输出包含对象中的所述数据作为发送到所述第二计算机设备的流输出;
其中,所述输出包含对象是输出包含对象类或继承该类的子类的实例,以及
所述输出包含对象类具有dataoutput方法,该方法用于向所述流输出包含在所述输出包含对象中的所述数据。
12.一种计算机设备,包括:
第一数据处理组件,用于执行第一处理;
输入端管道部分,用于产生输入包含对象,该输入包含对象用于从外部设备接收流以及存储经该流传输的输入数据;以及
处理指令部分,用于通过向所述第一数据处理组件输入所述输入包含对象,使所述第一数据处理组件处理所述输入数据;
所述输入包含对象是输入包含对象类或继承该类的子类的实例,以及
所述输入包含对象类具有constructor方法,该方法用于接收所述流,并产生包含经该流传输的所述数据的所述输入包含对象。
13.一种协作处理方法,包括:
产生输出包含对象作为第一计算机执行的第一数据处理的输出;
向发送到第二计算机的流输出包含在所述输出包含对象中的数据;
产生输入包含对象,其用于接收所述流以及存储经该流传输的所述数据;
输出包含在所述输入包含对象中的所述数据;以及
使用从所述输入包含对象输出的所述数据执行第二数据处理;
所述输出包含对象和所述输入包含对象是数据包含对象类或继承该类的子类的实例,以及
所述数据包含对象类具有
constructor方法,用于接收所述流,以及产生包含经该流传输的所述数据的所述数据包含对象类的实例以作为所述输入包含对象,以及
dataoutput方法,用于向所述流输出作为所述输出包含对象的所述数据包含对象类的实例中包含的所述数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP185416/2005 | 2005-06-24 | ||
JP2005185416A JP4852906B2 (ja) | 2005-06-24 | 2005-06-24 | 連携処理システム及び装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1885266A CN1885266A (zh) | 2006-12-27 |
CN100470483C true CN100470483C (zh) | 2009-03-18 |
Family
ID=37583426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100062925A Expired - Fee Related CN100470483C (zh) | 2005-06-24 | 2006-01-25 | 用于协作处理的***,设备及方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8028018B2 (zh) |
JP (1) | JP4852906B2 (zh) |
CN (1) | CN100470483C (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090222506A1 (en) * | 2008-02-29 | 2009-09-03 | Evident Software, Inc. | System and method for metering and analyzing usage and performance data of a virtualized compute and network infrastructure |
JP2012053511A (ja) * | 2010-08-31 | 2012-03-15 | Canon Inc | サーバ装置、情報処理装置、サービス処理装置、ネットワークシステム、ジョブ処理方法及びプログラム |
US20120331038A1 (en) * | 2011-06-23 | 2012-12-27 | Lin Yang | Systems and methods for processing web service piped network requests |
CN103179173B (zh) * | 2011-12-26 | 2018-03-02 | 腾讯科技(深圳)有限公司 | 超文本传输***、客户端和超文本传输方法 |
US9992269B1 (en) * | 2013-02-25 | 2018-06-05 | EMC IP Holding Company LLC | Distributed complex event processing |
JP6753489B2 (ja) * | 2019-06-06 | 2020-09-09 | 株式会社リコー | 情報処理システム、情報処理装置、情報処理方法、及びプログラム |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5999972A (en) * | 1996-07-01 | 1999-12-07 | Sun Microsystems, Inc. | System, method and article of manufacture for a distributed computer system framework |
JPH1027164A (ja) | 1996-07-10 | 1998-01-27 | Nippon Telegr & Teleph Corp <Ntt> | 分散処理方法 |
US6173327B1 (en) * | 1996-07-11 | 2001-01-09 | Jeroen De Borst | Object-oriented method and apparatus for information delivery |
US6263426B1 (en) * | 1998-04-30 | 2001-07-17 | Intel Corporation | Conversion from packed floating point data to packed 8-bit integer data in different architectural registers |
US6266769B1 (en) * | 1998-04-30 | 2001-07-24 | Intel Corporation | Conversion between packed floating point data and packed 32-bit integer data in different architectural registers |
US6092120A (en) * | 1998-06-26 | 2000-07-18 | Sun Microsystems, Inc. | Method and apparatus for timely delivery of a byte code and serialized objects stream |
JP2000076118A (ja) | 1998-09-03 | 2000-03-14 | Fuji Xerox Co Ltd | 分散ファイル処理装置および分散ファイル処理方法 |
US7016966B1 (en) * | 2000-05-09 | 2006-03-21 | Sun Microsystems, Inc. | Generating results gates in a distributed computing environment |
US7162723B2 (en) * | 2001-06-29 | 2007-01-09 | Microsoft Corporation | ASP.NET HTTP runtime |
EP1459181A2 (en) * | 2001-12-14 | 2004-09-22 | Koninklijke Philips Electronics N.V. | Method for data processing in a multi-processor data processing system and a corresponding data processing system |
GB2383495A (en) * | 2001-12-20 | 2003-06-25 | Hewlett Packard Co | Data processing devices which communicate via short range telecommunication signals with other compatible devices |
FR2836568A1 (fr) * | 2002-02-28 | 2003-08-29 | Bull Sa | Procede iteratif de serialisation d'objets logiciels structures |
US7114160B2 (en) * | 2002-04-17 | 2006-09-26 | Sbc Technology Resources, Inc. | Web content customization via adaptation Web services |
US7092973B2 (en) * | 2002-12-23 | 2006-08-15 | Sap Aktiengesellschaft | Conflict detection in a distributed system landscape |
US7197512B2 (en) * | 2003-03-26 | 2007-03-27 | Microsoft Corporation | Type bridges |
US7185060B2 (en) * | 2003-03-26 | 2007-02-27 | Microsoft Corporation | Message processing pipeline for streams |
US20040210663A1 (en) * | 2003-04-15 | 2004-10-21 | Paul Phillips | Object-aware transport-layer network processing engine |
US7526770B2 (en) * | 2003-05-12 | 2009-04-28 | Microsoft Corporation | System and method for employing object-based pipelines |
US7810093B2 (en) * | 2003-11-14 | 2010-10-05 | Lawrence Livermore National Security, Llc | Parallel-aware, dedicated job co-scheduling within/across symmetric multiprocessing nodes |
US8010670B2 (en) * | 2003-12-23 | 2011-08-30 | Slipstream Data Inc. | Meta-data based method for local cache utilization |
US7954051B2 (en) * | 2004-01-13 | 2011-05-31 | International Business Machines Corporation | Methods and apparatus for converting markup language data to an intermediate representation |
CN1735015A (zh) | 2004-08-03 | 2006-02-15 | 中兴通讯股份有限公司 | Java实现web服务器主动发起向浏览器发送数据的方法 |
JP4432733B2 (ja) * | 2004-11-05 | 2010-03-17 | 富士ゼロックス株式会社 | 連携処理装置及びシステム |
US20080140695A1 (en) * | 2006-12-12 | 2008-06-12 | Paragen, Inc. | Intellectual property related method and computer program |
-
2005
- 2005-06-24 JP JP2005185416A patent/JP4852906B2/ja not_active Expired - Fee Related
- 2005-11-29 US US11/289,730 patent/US8028018B2/en not_active Expired - Fee Related
-
2006
- 2006-01-25 CN CNB2006100062925A patent/CN100470483C/zh not_active Expired - Fee Related
Non-Patent Citations (2)
Title |
---|
基于Web 的嵌入式应用***的模型设计与研究. 陈启安,洪雪玉.厦门大学学报(自然科学版),第42卷第2期. 2003 |
基于Web 的嵌入式应用***的模型设计与研究. 陈启安,洪雪玉.厦门大学学报(自然科学版),第42卷第2期. 2003 * |
Also Published As
Publication number | Publication date |
---|---|
US8028018B2 (en) | 2011-09-27 |
US20070011241A1 (en) | 2007-01-11 |
JP4852906B2 (ja) | 2012-01-11 |
CN1885266A (zh) | 2006-12-27 |
JP2007004608A (ja) | 2007-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7689709B2 (en) | Native format tunneling | |
Taelman et al. | Comunica: a modular SPARQL query engine for the web | |
EP3433769B1 (en) | Composition of pattern-driven reactions in real-time dataflow programming | |
US8099709B2 (en) | Method and system for generating and employing a dynamic web services interface model | |
US7743391B2 (en) | Flexible architecture component (FAC) for efficient data integration and information interchange using web services | |
RU2419837C2 (ru) | Рабочие потоки, ориентированные на данные | |
KR101495575B1 (ko) | 그래프 기반 연산에서의 분배 서비스 | |
US7346893B2 (en) | Exchange infrastructure system and method | |
US20050251501A1 (en) | System and method for integrating disparate data sources | |
US20050251527A1 (en) | System and method for integrating disparate data and application sources using a web services orchestration platform with business process execution language (BPEL) | |
CN100470483C (zh) | 用于协作处理的***,设备及方法 | |
US20080071922A1 (en) | Methods, systems, and computer program products to transparently dispatch requests to remote resources in a multiple application server environment | |
US20020143941A1 (en) | Method and apparatus for efficiently reflecting complex systems of objects in XML documents | |
US20090204593A1 (en) | System and method for parallel retrieval of data from a distributed database | |
Laoui et al. | Web services as applications' integration tool: QikProp case study | |
Taher et al. | Adaptation of web service interactions using complex event processing patterns | |
CN114489622A (zh) | 静态资源管理方法、Node.js应用、电子设备和存储介质 | |
EP1506478B1 (en) | Exchange infrastructure system and method | |
Malki et al. | Building Semantic Mashup. | |
Eisenhauer et al. | DataExchange: high performance communications in distributed laboratories | |
US20060271634A1 (en) | Method, system, and program for processing a message with dispatchers | |
CN1932760A (zh) | 开发和执行平台 | |
Lytra et al. | A pattern language for service-based platform integration and adaptation | |
US20050209928A1 (en) | System and method for processing e-commerce transactions | |
Daly et al. | Toward a Reference Architecture for Digital and Model-Based Engineering Information Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: Tokyo, Japan Patentee after: Fuji film business innovation Co.,Ltd. Address before: Tokyo, Japan Patentee before: Fuji Xerox Co.,Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090318 |