使用客户端-服务器网桥管理对象的制作方法

文档序号:6351971阅读:194来源:国知局
专利名称:使用客户端-服务器网桥管理对象的制作方法
技术领域
本说明书涉及使用客户端一服务器网桥管理对象。
背景技术
一些客户端一服务器系统采用两种操作方法之一。一些系统具有“瘦”客户端,其呈现向用户提供具有独立于服务器执行操作的非常小的能力的外观(veneer)的界面(例如,HTML网页)。一些系统具有“胖”客户端,其利用客户端硬件的资源提供能够执行复杂操作的界面(例如,基于微软基础类的用户界面)。以相同或相似的编程语言将一些“胖”客户端编制为服务器应用程序,并且因此客户端可以紧密地耦接到后端服务器(例如,Java RMI或微软COM+技术)。

发明内容
在一个方面,总的而言,支持客户端和服务器之间的通信的方法包括从客户端接收第一消息。该方法还包括响应于该第一消息而创建对象。该方法还包括将对该第一消息 的响应发送到客户端。该方法还包括从服务器接收对该对象的改变。该方法还包括存储对该对象的改变。该方法还包括从该客户端接收第二消息。该方法还包括利用对该第二消息的响应而向客户端发送所存储的改变。各方面可以包括以下特征中的一个或多个。存储改变可以包括创建改变的日志,向客户端发送所存储的改变可以包括发送改变的日志。存储改变可以包括更新对象的当前状态,向客户端发送所存储的改变可以包括发送对象的当前状态。从客户端接收第一消息可以包括接收用于客户端对象的临时标识符;创建对象包括获得用于该对象的永久标识符;以及发送对第一消息的响应包括发送临时标识符和永久标识符之间的映射。获得永久标识符可以包括向服务器发送服务器消息。发送服务器消息可以包括将该服务器消息与其它服务器消息进行交织。方法还可以包括向服务器注册对该对象的兴趣。接收对该对象的改变可以包括接收与服务器生成的事件相关联的、对该对象的改变。接收第一消息可以包括利用第一协议,并且接收改变包括利用与第一协议不同的第二协议。方法还可以包括存储对于多个客户端的多个对象的改变。对象可以对应于数据流图的一部分,其包括表示数据流图的组件(components)的多个节点、以及表示各组件之间的数据流的节点间链接。从客户端接收第一消息可以包括接收用于定义数据流图的组件的至少一个特性的参数的值。方法可以包括提供以下界面,该界面接收用于定义数据流图的组件的相应特性的一个或多个参数。该界面可以显示多个用户界面元素,并且各用户界面元素之间的关系基于数据流图的各组件之间的依赖性。可以通过在服务器中存储的规范来定义所述关系。接收第一消息可以包括接收对中间数据的请求,创建对象可以包括编译数据流图的一部分,并且通过运行编译后的数据流图的该部分来产生输出至输出数据集。创建对象还可以包括确定生成中间数据所需的第一组件集合;禁止数据流图中不在该第一组件集合中的组件;以及创建与数据流图I禹接的中间数据宿(intermediate data sink)以存储该输出数据集。确定第一组件集合可以包括标识不将数据源连接到中间数据宿的链接。创建中间数据宿可以包括确定至中间数据宿的链接呈现并行数据流;以及将并行数据宿创建为中间数据宿。在另一方面,总的而言,一种计算机可读介质存储用于支持客户端和服务器之间的通信的计算机程序。该计算机程序包括用于使计算机执行以下操作的指令从客户端接收第一消息;响应于该第一消息而创建对象;将对该第一消息的响应发送到客户端;从服务器接收对该对象的改变;存储对该对象的改变;从该客户端接收第二消息;以及利用对该第二消息的响应而向客户端发送所存储的改变。
在另一方面,总的而言,一种支持客户端和服务器之间的通信的系统包括包括至少一个处理器的服务器;以及包括被配置来管理该系统中的对象至少一个处理器的网桥。所述管理包括从客户端接收第一消息;响应于该第一消息而创建对象;将对该第一消息的响应发送到客户端;从服务器接收对该对象的改变;存储对该对象的改变;从该客户端接收第二消息;以及利用对该第二消息的响应而向客户端发送所存储的改变。在另一方面,总的而言,一种支持客户端和服务器之间的通信的系统包括用于服务数据的部件;以及用于管理该系统中的对象的部件。所述管理包括从客户端接收第一消息;响应于该第一消息而创建对象;将对该第一消息的响应发送到客户端;从用于服务数据的部件接收对该对象的改变;存储对该对象的改变;从该客户端接收第二消息;以及利用对该第二消息的响应而向客户端发送所存储的改变。各方面可以包括以下优点中的一个或多个。可以简化客户端和服务器之间的通信。为鲁棒性的客户端开发的服务器可以被适配为支持脚本客户端。可以跟踪对于对象的改变,并且可以在不必保持网桥和客户端之间的连续连接的情况下更新客户端。本发明的其它特征和优点将从以下说明以及权利要求中变得明显。


图I是桥接的客户端服务器系统的示意图。图2是客户端、网桥、和服务器之间的示例通信模式的示意图。图3 — 5是该系统执行的示例操作的流程图。图6A是示例的数据流图的图。图6B和6C是用于定制数据流图的界面的各部分的图。图7A表示界面中的示例结果显示。图7B是示例的数据流图的图。图8是桥接的客户端服务器系统的示意图。
具体实施例方式与在典型的瘦客户端上可用的功能相比,一些工具在利用浏览器的客户端系统上使能更多功能。以与被用来创建服务器应用的编程语言不同的编程语言来构造这些工具中的一些。为了促进使用不同技术构建的客户端和服务器之间的通信,在客户端系统和服务器系统之间建立“网桥”通信层,如图I所示。客户端102a、102b、102c每个经由网桥110与在服务器104上运行的对应的服务器会话116a、116b、116c进行通信。从客户端102a、102b、102c到网桥110的消息被发送到消息处理器108,其将客户端102a、102b、102c的无状态协议(例如,超文本传输协议HTTP)转译至服务器104所提供的协议集合。在一些布置中,可以使用代码生成来使该转换自动化。在一些布置中,客户端、网桥110和服务器104每个都运行在独立的处理器或计算机系统上,并且通过网络进行通信。客户端102a、102b、102c可以是依赖于网桥110与服务器104进行通信的瘦客户端,并且可以存在其它的能够直接与服务器104进行通信的胖客户端(未示出)。通常,单个客户端102a经由网桥112与单个客户端会话114a连接。网桥可以同时与多个客户端交互。单个客户端会话114a继而连接到单个服务器会话116a。消息处理器 108创建响应对象以便封装被交换的信息,包括来自服务器的、对于来自客户端的消息的响应,并且消息处理器108将该响应对象发送到适当的客户端102a、102b、102c。然而,在一些实例中,可以使用其它配置。例如,可以通过负荷平衡器使得与网桥110的通信或者与服务器104的通信是负荷平衡的,以便提高性能。如箭头120a、120b、120c所表示的,客户端102a、102b、102c与网桥110之间的通信可以包括请求和响应。客户端102a、102b、102c可以向网桥110做出请求并且等待响应。网桥110可以为客户端102a、102b、102c创建客户端会话114a、114b、114c,或者如果已经存在,则可以使用现有的会话。网桥110将输入消息转译至服务器104所理解的协议。可以在网桥110和服务器104之间、在消息流124a、124b、124c中传送各种类型的消息,包括远程例程调用(RPC)、数据(例如“字节流”和“对象流”)、以及事件(例如,单向消息)。通常,RPC通过发送请求和接收响应来进行操作。该基本模式具有三个变型“单机” RPC,其特征在于,等待或轮询响应而没有隐式的完成或失败通知的处理线程;“同步”RPC,其特征在于,阻塞(blocking)直至接收到指示成功或失败的响应的处理线程;以及“异步”RPC,其特征在于,注册在例程完成时将被触发的回叫。在一些示例中,确保按照特定线程所作出的RPC以它们所调用的顺序来运行。网桥110和服务器104之间的通信使得包括RPC的消息流能够被交织。可以同时操纵多个不同的RPC消息流,使得消息彼此重叠地到达网桥。网桥110独立地接收并处理每个消息。网桥110还允许发送取消或放弃消息。在接收到放弃消息时,网桥110终止当前运行的例程,或者通知服务器104终止当前运行的例程。网桥110和服务器104可以使用数据流进行通信。数据流是逻辑字节流,其采用窗口协议来限制可以一次传送的数据量。数据流可以作为RPC请求或响应消息、明文消息(plain message)、或进度消息的一部分而在网桥110和服务器104之间传递。一旦数据流被传递到网桥或服务器,就通过握手例程来建立数据流,该握手例程标识用于已经接收到流对象的连接侧的流、以及流控制参数。可以基于由服务器104或网桥110建立的约束来限制在流上传送的数据量。
参考图2,在一些布置中,客户端202可以保持在服务器104上可运行并存储的处理和信息的表示。可以使客户端202意识到服务器104上的处理和信息发生的改变。如箭头210、212所示,客户端202可以与网桥110通信。在一些布置中,该通信可以源自与在客户端202上存储的数据的表示进行的编程交互。网桥110接收请求,并且可以与服务器104通信,如由处理箭头214、216表示的。如上面讨论的,与客户端202和网桥110之间的通信相比,网桥110和服务器104之间的通信可以利用一组更具鲁棒性的协议。如箭头224所示,服务器104在当前没有处理消息时,可以向网桥110通知对底层对象(underlyingobject)的改变。例如,网桥110可以注册对给定对象的兴趣,并且服务器104可以向网桥110通知何时该对象被变更或访问。在一些布置中,客户端202和网桥110之间的通信的无状态特性防止了网桥110将改变立即发送给客户端202。在这些情况下,信息可以被存储在网桥110中,并且可以作为对随后的请求的响应的一部分而被递送给客户端202。在其它布置中,可以在客户端和服务器之间建立数据流以便允许持续更新。在一些布置中,客户端202可以创建在服务器104上不存在的信息的表示,例如,创建新的客户对象。该新创建的信息可以被提供有临时标识符。客户端202可以随后利用该新信息执行若干动作。在一些布置中,客户端202可以执行利用该新信息和从服务器访 问的现有信息两者的操作,有时候使用临时标识符来更新现有信息。客户端202可以在向服务器104进行通知之前使用该信息执行各种操作。最终,客户端202可以向网桥110发送一个或多个请求,请求在服务器104上运行操作。网桥110识别在服务器104上不存在的新信息。结果,网桥可以创建表示服务器上的信息的记录,并且获得永久标识符。网桥110然后使得消息上提供的临时标识符与永久标识符相一致(reconcile)。作为响应的一部分,网桥110向客户端202提供临时标识符到永久标识符的映射。在网桥110上,消息处理器108所管理的消息服务接收输入消息。在一些布置中,该消息可以指定使用多个对象可执行的多个操作。一些对象可能已经存在,而其它对象可能是新的。通常,将使用标识符来标识所有对象。将使用永久标识符来标识现有对象,而使用临时标识符来标识新创建的对象。消息服务标识需要执行哪些操作。网桥110上的对象服务标识哪些对象已经存在于服务器104上并且将它们取回。对于新信息,将数据添加到服务器104并且分配永久标识符,对象服务提供永久标识符和临时标识符之间的映射。参考图3,流程图300表示网桥110所执行的操作的示例布置。典型地,通过该网桥所驻留的计算机系统的一个或多个处理器来运行操作。尽管典型地由单个电子设备运行,但是在一些布置中,可以在两个或多个电子设备(例如,计算机系统)之间分布操作运行。操作包括接收具有参考的消息302。例如,参考可以是指向存储器中所存储的对象的指针,或者参考可以是定位对象的标识符。该消息可以参考多个对象。可以在分离的列表中提供参考,或者它们可以被嵌套在该消息内部。操作还包括检查以确定对象是否存在304。在一些情况下,网桥可以向服务器发送消息来询问对象是否存在。在其它情况下,操作304可以与其它操作组合。例如,网桥可以执行操作以试图从服务器中取出对象306。可以使用特定标识符来标识新对象,例如,特定范围的关键词、特定关键词如缀、或者消息上的另一字段可以指不该对象是新的。网桥可以将该操作执行多次,对于该消息参考的每个对象执行一次。
操作还包括取出对象306。在一些情况下,网桥可以从服务器中取出在消息中标识的对象。在其它情况下,网桥可以在本地存储装置中高速缓存对象的本地副本。在向服务器发送消息之前,网桥可以在其本地存储装置中检查该对象,并且如果找到,则直接将响应返回客户端。如上面所讨论的,可以经由反向信道通信与服务器上的副本同步地保存对象的本地副本。在一些实现方式中,网桥可以与若干服务器交互,并且可以使用路由表来确定该对象位于哪个服务器上。操作还包括检查以确定任何更新是否被挂起(pending)308。在一些布置中,网桥可以高速缓存对所述对象的本地副本做出的改变。这些改变可以被存储在特定的存储器位置、表、或其它存储设备中。可以基于对象类型和主关键词来标识所述改变,或者可以基于全局唯一标识符来标识所述对象。操作还包括将更新添加到结果310。一旦网桥标识了对象的被挂起的更新,则网桥可以编译那些更新的列表并且将它们附于要递送给客户端的响应消息。操作还包括创建对象312。在一些情况下,如果对象不存在,则网桥创建新对象。 这通常通过向服务器发送消息而实现。新创建的对象将通常包括与客户端使用的标识符不同的新的标识符。操作还包括创建映射314。例如,网桥创建用于将客户端标识符与在创建对象时提供的永久标识符配对的映射。一旦客户端意识到该映射,则客户端不再使用其原始标识符,而是对于所有的随后通信,可以采用永久标识符。操作还包括将映射添加到结果316。在一些布置中,为了将映射传送给客户端,网桥将映射添加到响应消息上。操作还包括处理消息318。一旦网桥已经标识、取出、并且创建了所有必需对象,则网桥执行所请求的操作。在一些实现方式中,该操作可以包括向服务器发送一个或多个消息。在一些实现方式中,网桥所支持的消息与服务器所执行的消息相同。在此情况下,可以自动地生成用于支持客户端和服务器之间的消息转译所需的编程。操作还包括向客户端发送结果320。例如,一旦处理了消息,该消息的结果与任何更新和映射相组合并且被返回到客户端。参考图4,流程图400表示网桥110所执行的操作的另一示例操作。典型地,通过该网桥所驻留的计算机系统的一个或多个处理器来运行操作。尽管典型地由单个电子设备运行,但是在一些布置中,可以在两个或更多个电子设备(例如,计算机系统)之间分布操作运行。操作包括从客户端接收第一请求402。从客户端接收的请求可以导致创建或者访问来自服务器的一个或多个对象。可以在网桥上高速缓存这些对象,以便提高稍后访问的性能。操作还包括向客户端发送结果404。在一些情况下,将对请求的响应发送到客户端。在处理该请求期间创建或访问的对象可以在网桥上保存于本地数据存储装置,例如存储器或数据库中。在一些布置中,可以对于期望访问该对象的所有客户端存储该对象的一个公用副本。在其它布置中,可以将对象连同客户端标识符一起存储,从而每个客户端具有在网桥上存储的各自副本。在其它布置中,在网桥上存储公用副本,除非客户端修改该对象,在此情况下,对于该客户端保存带有改变的对象的各自的版本。
操作还包括接收对该对象的更新406。例如,网桥可以从服务器接收对该对象的更新。可以通过数据流或基于事件的通信,从服务器发送更新。更新还包括存储更新408。在一些布置中,对于该对象所接收的更新可以被存储在特定位置中。在一些布置中,改变可以被存储为审核跟踪(audit trail),其列出了被改变的字段和值、以及改变发生的时间。在其它布置中,基于何时向网桥通知改变,可以跟踪改变。在另一些布置中,即使仅改变了单个值,也可以更新整个对象。操作还可以包括从客户端接收也被网桥操纵的任何数量的另外请求。在将那些请求的结果提供回客户端时,可以包括对于对象的更新。该示例包括从客户端接收第二请求410,以及将更新添加到结果412。网桥可以将从服务器接收的、对在服务器上存储的对象的改变添加到正在被发送到客户端的响应消息上。在一些情况下,网桥还可以将已经发生的任何改变添加到对象,以作为处理客户端消息的结果。操作还包括向客户端发送结果414。参考图5,流程图500表示由与网桥110交互的客户端(图1,102a、102b、102c)执行的操作的示例布置。典型地,通过该客户端所驻留的计算机系统的一个或多个处理器来运行操作。尽管典型地由单个电子设备运行,但是在一些布置中,可以在两个或更多个电子 设备(例如,计算机系统)之间分布操作运行。操作包括向网桥发送消息502。例如,客户端可以向网桥发送消息,请求执行与在服务器上存储的对象相关的动作。操作还包括从网桥接收响应504。例如,客户端从网桥接收响应,包括执行所请求的动作的结果。操作还包括检查映射506。在一些情况下,在客户端从网桥接收响应时,客户端检查是否存在被附于消息的任何更新的映射。如果存在更新的映射,则操作包括更新参考508。例如,客户端更新其已经创建的具有临时标识符的新对象,利用服务器所分配的永久标识符来替代在对象创建时分配的临时标识符。操作还包括检查对象更新510。例如,客户端检查响应以查看是否在服务器处已经更新了任何现有对象。如果是,则操作包括在客户端处更新对象512。例如,客户端可以将在消息中包括的改变应用于当前存储在客户端处的对象的任何本地副本。操作还包括处理结果514。例如,来自服务器的响应消息可以将信息传达到客户端,使得客户端能够基于结果采取预定动作。该响应消息可以指示所请求的操作是否成功或者该操作是否失败。该响应消息还可以包括与请求相关联的对象和其它信息。例如,对于访问特定的客户对象的请求可以导致在响应中返回该客户对象。利用网桥的系统的一个示例是用于生成用户界面以允许非技术用户来配置参数化的数据流图的系统。数据流图是在数据流图运行环境下运行的计算机程序,其处理来自一个或多个数据源的数据。根据数据流图操纵并处理来自数据源的数据,并且该数据被导出到一个或多个数据宿(data sink)。例如,数据源和数据宿可以包括文件、数据库、数据流、或队列。数据流图被表示为有向图(directed graph),该有向图包括表示数据处理组件的节点,每个包括用于处理来自至少一个数据输入的数据并且将数据提供给至少一个数据输出的代码,该有向图还包括表示用于访问数据源和/或数据宿的数据集对象的节点。节点通过有向链路被连接起来,所述有向链路表示组件之间的数据流,源于数据源并终止于数据宿。上游组件的数据输出端口连接到下游组件的数据输入端口。对于由数据集对象所表示的不同的数据源和不同的数据宿,可以重用数据流图。例如,用于实现数据流图的数据结构和程序代码可以通过被参数化来支持多种不同的配置,以使得容易替换不同的源和宿。此外,在一些布置中,通过使用参数可以更改数据流图的流程,使得可以旁路一个组件或者一系列组件。运行环境可以宿主(host)于在合适的操作系统(诸如UNIX操作系统)的控制下的一个或多个通用计算机。例如,运行环境可以包括多节点并行计算环境,其包括使用多个中央处理单元(CPU)的计算机系统的配置本地的(例如,诸如SMP计算机之类的多处理器系统)、或者本地分布的(例如,被耦接为簇的多个处理器或MPP)、或者远程的、或者远程分布的(例如,经由局域网(LAN)和/或广域网(WAN)耦接的多个处理器)、或者其任何组合。数据流图的构造在一些情况下本质上可以是高度技术性的。在编写以实现特定业务端时,基于技术上的考虑来确定该图的结构和构造。例如,可以选择图的组件以便使重用性最大化,或者支持并行处理。另一方面,如何使用图以及在哪里使用图,可能很大程度上是业务决定。可以使用与参数化的数据流图相关联的一些参数,来使得业务用户能够定制
可以在客户端机器上呈现用于标识用以构造数据流图的参数值的界面。在一些实现方式中,客户端可以使用客户端上的提供了参数界面的网络浏览器、以及使用提供了一些客户端侧处理能力的脚本语言,来访问在服务器上运行的开发环境。脚本语言可以与服务器进行通信,以便更新参数并执行其它必要操作。该通信可以经由网桥机器进行,该网桥机器通过运行开发环境,来转译客户端和服务器之间的通信,存储对象和用于正在被构造的图的关联参数值。例如,参考图6A,数据流图602可以包括数据源606a、606b,组件608a_c、610,以及数据宿612。源、组件、和宿每一个可以与一组参数604a-g相关联。用于一个源、组件、或宿的参数可以被用来评估用于不同的源、组件、或宿的参数。源606a、606b与组件608a、608c的输入端口连接。组件608a的输出端口与组件608b的输入端口连接。组件610的输出端口与数据宿612连接。源、组件、以及宿之间的连接定义了数据流。一些数据源、组件或宿可能具有输入参数604a_g,其可以定义该图的一些行为。例如,参数可以定义数据源或宿在物理盘上的位置。参数还可以定义组件的行为,例如,参数可以定义拣选(sort)组件如何拣选输入(例如,按照zip代码来进行拣选)。在一些布置中,一个参数的值可能依赖于另一参数的值。例如,源606a可以被存储在特定目录下的文件中。参数集604a可以包括被称为“DIRECTORY”的参数和被称为“FILENAME”的另一参数。在该情况下,FILENAME参数将依赖于DIRECTORY参数(例如,DIRECTORY可以是“/usr/local/”,FILENAME可以是“/usr/local/input, dat”)。参数还可以依赖于用于其它组件的参数。例如,宿612的物理位置可能依赖于源606a的物理位置。在该示例中,宿612包括一组参数604g,其包括依赖于源606a的DIRECTORY参数的FILENAME参数(例如,组604g中的 FILENAME 参数可以是“/usr/local/output. dat”,其中值“/usr/local/” 是从集合 604a中的DIRECTORY参数获得的。)。在客户端上的用户界面内,参数组604a_604g的参数可以被组合,并且被重新组织为不同的编组以与用户进行交互,其反映了商务上的考虑而不是技术上的考虑。以不必受限于服务器上的开发环境方面的灵活方式,基于用户输入用于接收参数值的用户界面根据参数之间的关系,可以显示不同的参数。例如,参考图6B,可以呈现其中利用表示参数间的依赖性的关系来显示图标的用户界面。在该示例中,参数被划分为第一参数编组,其由以下项来表示表示用于第一源数据集的参数的第一源图标624、表示用于第二源数据集的参数的第二源图标626、表示用于宿数据集的参数的宿图标630、以及表示用于正在被配置的数据流图的一个或多个组件的参数的转换图标628,示出了它们与源数据集和宿数据集的关系。可以基于所存储的规范622做出该参数编组,所述规范622定义用户将如何在客户端的用户界面内与来自数据流图的参数进行交互、以及用户界面元素(诸如图标624、626、628、630)将如何被彼此相关并且被布置为呈现在用户界面中。在一些实现方式中,规范为XML文档。该规范还可以标识数据流图组件,并且可以标识在用户正在配置该图的同时可以执行其某些功能的特定组件,诸如观看样本数据,如下面更详细描述的。在一些情况下,该规范可以包括对于将如何显示参数的指令。例如,参考图6B和6C,规范622可以指示响应于与源数据集图标624的交互,应将一个参数显示为用户可以填写的文本框702,而另一个参数应是具有预填充值的下拉列表704 (例如,在规范中提供 的值、或者在查找表中提供的值的列表),又一参数可以被显示为单选按钮706等等。因此,该规范在如何向用户呈现参数以便可以为商务和/或非技术性用户量身定制的方式定制数据流图方面提供了灵活性。例如,可以基于对数据库运行的查询(例如SQL查询)的值或者来自位于文件系统上的文件的值来填充用户界面。在一些情况下,该规范可以使得用户能够选择应用的数据源。例如,该规范可以允许用户选择数据库、表、或文件。一个或多个参数可以成编组地一起显示。例如,规范可以声明参数将要一起呈现在用户界面上的方框中。在一些实现方式中,用户界面可以被划分为列和行。规范可以基于用户界面上要显示参数的部分,来标识参数的位置或参数的集合(collection)。在一些情况下,规范可以包括用户选择由组件处理的字段的能力。可以在用户界面中显示可用字段,并且用户可以选择一个或多个字段以便包括在参数集中。规范可以使得用户能够通过选择用于特定字段的值而对数据集进行过滤(例如,状态为“FL”的字段)。在一些情况下,规范可以约束商务用户填充参数值的顺序。由虚线所表示的,与宿630相关联的参数可能对于用户不可见,直至用户满足了一些预先定义的条件。例如,在数据宿参数集出现之前,用户可能必须提供特定参数值或填入参数集。还可以如所需要地定义参数,指示必须向参数分配值。在一些情况下,规范可以基于用户角色来呈现不同的参数。例如,模板可能隐藏或禁止一组文本输入控件和链接,除非用户具有“管理者”角色。在一些实现方式中,如由参数值所配置的,系统可以允许用户从用户界面内发起在服务器上执行图而通过该图运行样本数据,并且允许在用户界面中将样本运行的结果702显示给用户,如图7A所示。依赖于在结果702中包括什么类型的数据,可以在用户界面的适当浏览器或者编辑器中观看结果702。在该示例中,结果702包括与样本数据内的记录相对应的行、以及与用于不同字段的记录中的值相对应的列。可以响应于客户端处的多种动作中的任一种,例如,响应于用户向参数提供值,来触发使用测试数据在服务器上运行该图。参考图7B,在一些实现方式中,系统通过添加观察器(watcher),可以捕获流过该系统的数据。例如,数据流图710包括数据源712、726,组件714、720、728和730,以及数据宿732。用户可以在数据流图中的任何链接处添加观察点。例如,用户可以向组件720和组件730之间的链接添加观察点722。系统检测观察点722,并且生成该图的修改版本以便将数据流从组件720重定向到存储观察点的数据的中间数据宿724。在一些实现方式中,观察点722被实现为允许数据流到中间数据宿724和数据组件730的复制器。在一些实现方式中,系统确定对于生成观察点722的数据而言,不需要组件728、730,数据源726,以及数据宿732。系统可以选择禁止这些不必要的组件以便节约系统资源。此外,禁止不必要的组件可以具有简化开发的附加优点,这是因为未使用的组件(例如,组件728)的下游组件(例如,组件730)可能尚未被完全实现或配置。在禁止这些组件时,系统可以运行该图的一部分,而无需开发者完全配置整个图。在一些实现方式中,系统标识对于产生观察点的数据而言不需要的链接。例如,系统可以标识不将任何源(例如,数据源712)连接到中间数据宿724的链接。可以移除向这些链接提供数据的组件。
在一些实现方式中,系统可以利用来自前一观察点的数据来确定随后观察点的数据。例如,在前一次运行该图时,开发者将观察点716添加到组件714和组件720之间的链接。观察点716的数据被存储在数据宿718中。如果在随后运行中,开发者在没有改变或修改数据源712或数据组件714的情况下添加观察点722,系统可以将数据宿718中的数据用作组件720的数据源,并且因此可以禁止数据源712和组件714。系统可以检测数据流是正常流还是并行流。并行流是已经被划分的数据流。并行流上的观察点对于每个数据流使用独立的数据宿。例如,已经被划分为六个独立部分的并行数据流将在六个独立的数据宿中生成观察数据。图可以被划分为阶段。之前阶段中的组件在之后阶段的组件之前完成所有运行。例如,如果组件730在组件728的之后阶段,则将高速缓存来自组件728的数据流,直至组件728已经完成对所有数据的处理。一旦组件728完成处理所有数据,则组件730将开始处理数据。在一些情形下,数据流图710包括未连接到其它组件(例如,查找表)的组件(诸如组件734)。如果组件在观察点的之后阶段,则从数据流图中排除未连接的组件,而如果组件与观察点在同一阶段或者在观察点的之前阶段,则在数据流图中包括未连接的组件。参考图8,客户端系统802可以向用户显示上述的用户界面804。基于通过用户界面804与用户的交互而生成的参数集814可以存储在服务器808上。因此,通过用户界面804做出的改变经由网桥806从客户端802被发送到服务器808。如箭头820所示,客户端802以一种格式向网桥806发送消息,例如使用简单对象访问协议(SOAP)发送的消息。网桥806将该消息转译为新格式,并且如果需要,则与服务器808开始客户端会话。如箭头822所示,网桥806以服务器808所理解的格式向服务器808发送消息,例如COM+消息。服务器808接收该消息,并更新参数集。如箭头824所示,服务器808向网桥806发送应答,包含由于客户端802所接收的输入而对参数集发生的任何改变。网桥806解码该消息并创建对客户端802的应答消息。如箭头826所示,网桥806向客户端802发送该应答消息。客户端802更新用户界面804以反映改变,这包括显示如上所述的由于先决条件未满足之前被隐藏的任何组件。用户还可以向客户端802指示他希望运行使用基于当前的参数集(可能完整或者可能不完整)的样本数据构造的图。如上,客户端802经由网桥806向服务器806发送消息。服务器808应用对参数集的任何改变,并且在服务器上运行的处理816编译该数据流图。服务器运行编译的数据流图,其从样本数据集810、812接收数据。运行的数据流图产生请求的输出至输出数据集818。数据流图的输出是客户端802所请求的中间数据,并且不一定是通过完全运行数据流图将产生的数据。在一些实现方式中,例如,如果未定义足够参数来使能完整图的编译,或者如果客户端802请求查看用于正在被客户端802配置的数据流图内的特定链接的中间数据,则月艮务器808可以编译数据流图的子集。为了确定要编译并运行的数据流图的子集,服务器可以使用上面关于图7B描述的处理,其中对于正在被配置的链接而不是对于观察点添加中间数据宿。如上所述,作为结果的数据从服务器808经由网桥806被发送到客户端802。可以使用计算机上运行的软件来实现上述的对象管理方法。例如,软件形成在一个或多个编程的或可编程的计算机系统(其可以是各种架构,诸如分布式的、客户端/服务 器、或者网格)上运行的一个或多个计算机程序中的例程,每个计算机系统包括至少一个处理器、至少一个数据存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备或端口、以及至少一个输出设备或端口。软件可以形成更大程序的一个或多个模块,例如,该更大程序提供与计算图的设计和配置有关的其它服务。可以将该图的节点和元件实现为在计算机可读介质中存储的数据结构、或者符合在数据储存库中存储的数据模型的其它组织数据。软件可以在通用或专用可编程计算机可读取的存储介质(诸如CD-ROM)上提供,或者可以通过网络的通信介质(在传播信号中编码的)递送到执行该软件的计算机。可以在专用计算机上、或者使用专用硬件(诸如协处理器)来执行所有功能。软件可以以分布式方式实现,在分布式方式下,软件所规定的不同计算部分由不同计算机执行。每个这样的计算机程序优选地被存储在或者被下载到通用或专用可编程计算机可读取的存储介质或设备(例如,固态存储器或介质、或者磁或光介质)上,在计算机系统读取该存储介质或设备时,所述计算机程序用于配置并操作计算机以便执行这里描述的例程。还可以考虑将本发明的系统实现为配置有计算机程序的计算机可读存储介质,其中如此配置的存储介质使得计算机系统以特定的且预先定义的方式操作,以便执行这里描述的功能。已经描述了本发明的多个实施例。然而,将理解,在不偏离本发明的精神和范围的情况下可以做出各种修改。例如,上述的一些步骤可以是与顺序无关的,并且因此可以与上面描述的顺序不同的顺序来执行。应理解,前述说明意图例示而非限制本发明的范围,本发明的范围由所附权利要求的范围定义。例如,可以以不同顺序执行上述的多个功能步骤,而没有在实质上影响整体处理。其它实施例也在以下权利要求的范围内。
权利要求
1.一种支持客户端和服务器之间的通信的方法,包括 从客户端接收第一消息; 响应于该第一消息而创建对象; 将对该第一消息的响应发送到客户端; 从服务器接收对该对象的改变; 存储对该对象的改变; 从该客户端接收第二消息;以及 利用对该第二消息的响应而向客户端发送所存储的改变。
2.如权利要求I所述的方法,其中存储改变包括创建改变的日志,并且其中向客户端发送所存储的改变包括发送改变的日志。
3.如权利要求I所述的方法,其中,存储改变包括更新对象的当前状态,并且向客户端发送所存储的改变包括发送对象的当前状态。
4.如权利要求I所述的方法,其中,从客户端接收第一消息包括接收用于客户端对象的临时标识符;创建对象包括获得用于该对象的永久标识符;以及发送对第一消息的响应包括发送临时标识符和永久标识符之间的映射。
5.如权利要求4所述的方法,其中,获得永久标识符包括向服务器发送服务器消息。
6.如权利要求5所述的方法,其中,发送服务器消息包括将该服务器消息与其它服务器消息进行交织。
7.如权利要求I所述的方法,还包括向服务器注册对该对象的兴趣。
8.如权利要求7所述的方法,其中,接收对该对象的改变包括接收与服务器生成的事件相关联的、对该对象的改变。
9.如权利要求I所述的方法,其中,接收第一消息包括利用第一协议,并且接收对该对象的改变包括利用与第一协议不同的第二协议。
10.如权利要求I所述的方法,还包括存储对于多个客户端的多个对象的改变。
11.如权利要求I所述的方法,其中,该对象对应于数据流图的一部分,其包括表示数据流图的组件的多个节点、以及表示各组件之间的数据流的节点之间的链接。
12.如权利要求11所述的方法,其中,从客户端接收第一消息包括接收用于定义数据流图的组件的至少一个特性的参数的值。
13.如权利要求11所述的方法,还包括提供接收用于定义数据流图的组件的相应特性的一个或多个参数的界面。
14.如权利要求13所述的方法,其中,该界面显示多个用户界面元素,并且各用户界面元素之间的关系基于数据流图的各组件之间的依赖性。
15.如权利要求14所述的方法,其中,通过在服务器中存储的规范来定义所述关系。
16.如权利要求11所述的方法,其中,接收第一消息包括接收对中间数据的请求,以及 创建对象包括 编译数据流图的该部分,并且 通过运行编译后的数据流图的该部分来产生到输出数据集的输出。
17.如权利要求16所述的方法,其中,创建对象还包括 确定生成中间数据所需的第一组件集合;禁止数据流图中不在该第一组件集合中的组件;以及 创建与数据流图耦接的中间数据宿以存储该输出数据集。
18.如权利要求17所述的方法,其中,确定第一组件集合包括标识不将数据源连接到中间数据宿的链接。
19.如权利要求17所述的方法,其中,创建中间数据宿包括 确定至中间数据宿的链接表示并行数据流;以及 将并行数据宿创建为中间数据宿。
20.一种存储用于支持客户端和服务器之间的通信的计算机程序的计算机可读介质,该计算机程序包括用于使计算机执行以下操作的指令 从客户端接收第一消息; 响应于该第一消息而创建对象; 将对该第一消息的响应发送到客户端; 从服务器接收对该对象的改变; 存储对该对象的改变; 从该客户端接收第二消息;以及 利用对该第二消息的响应而向客户端发送所存储的改变。
21.一种支持客户端和服务器之间的通信的系统,该系统包括 包括至少一个处理器的服务器;以及 包括被配置用以管理该系统中的对象的至少一个处理器的网桥,其中,所述管理包括 从客户端接收第一消息; 响应于该第一消息而创建对象; 将对该第一消息的响应发送到客户端; 从服务器接收对该对象的改变; 存储对该对象的改变; 从该客户端接收第二消息;以及 利用对该第二消息的响应而向客户端发送所存储的改变。
22.—种支持客户端和服务器之间的通信的系统,该系统包括 用于服务数据的部件;以及 用于管理该系统中的对象的部件,其中,所述管理包括 从客户端接收第一消息; 响应于该第一消息而创建对象; 将对该第一消息的响应发送到客户端; 从用于服务数据的部件接收对该对象的改变; 存储对该对象的改变; 从该客户端接收第二消息;以及 利用对该第二消息的响应而向客户端发送所存储的改变。
全文摘要
一种支持客户端和服务器之间的通信的方法,包括从客户端(202)接收(302,210)第一消息。该方法还包括响应于该第一消息而创建(312)对象。该方法还包括将对该第一消息的响应发送到(320,212)客户端。该方法还包括从服务器接收(224,406)对该对象的改变。该方法还包括存储(408)对该对象的改变。该方法还包括从该客户端接收(302,210,410)第二消息。该方法还包括利用对该第二消息的响应而向客户端发送(320,212,414)所存储的改变。
文档编号G06F9/46GK102754411SQ201080063818
公开日2012年10月24日 申请日期2010年12月14日 优先权日2009年12月14日
发明者D.W.帕门特, I.谢克特, J.M.法弗, J.戈尔德施拉格, T.韦克林 申请人:起元技术有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1