改进断续连接环境中实时应用性能的装置、系统和方法

文档序号:7760285阅读:107来源:国知局
专利名称:改进断续连接环境中实时应用性能的装置、系统和方法
技术领域
本发明涉及改进应用的性能,其中这些应用需要来自通过断续连接进行连接的多 个源的实时数据。
背景技术
在日益联系的世界中,许多应用使用互联网连接进行操作。某些应用(诸如,电子 邮件)归因于其性质,在连通性是断续的情况下也能良好操作。例如,用户可以编写电子邮 件并发送之。由于并未规定电子邮件要以同步或瞬时方式操作,所以如果电子邮件客户端 在该时刻不能连接至互联网,电子邮件客户端可以等待直到稍后建立了连接,随后发送该 电子邮件,并在该时刻为用户接收电子邮件。由此,即使在网络可用性是断续的情况下,某 些应用仍能通过在连接活跃时抓住机会传输数据而进行良好操作。然而,其他应用为了良好地起作用需要连续连接。例如,即时消息收发程序(IM) 允许多个用户实时地共享基于文本的消息。如果用户之间的连接丢失,IM程序便难以使用。 并且,如果连接仅在用户的子集之间丢失(例如,用户A和用户B仍然连接,用户C和用户 D仍然连接,但是两组之间的连接丢失),则任一子集都不能知道其他子集发生了什么。一 旦连接恢复,便难以对谈话的状态进行同步。断续连接正变得越来越常见。例如,随着移动设备(诸如,电话和笔记本)数量的 增加,用户与其他用户形成连通性或断开连通性的可能性也会增加。在另一示例中,海上的 船舶可以实现局域网,并且能够在其他船舶进入范围时与其他船舶进行联系。然而,船舶可 能移入或移出彼此的范围。由于IM谈话流可能是重要的资源,所以维持和保持该流以供将来使用会是有益 的。另外,允许用户的子集接收关于其他子集在连通性丢失时所讨论内容的更新是有用的。 其他应用(诸如,在线会议和屏幕共享)可类似地从具有在连接恢复时创建日志或更新用 户的能力中受益。

发明内容
根据前述讨论,很明显需要一种用于支持部署高度分布的、同步协作系统(在这 些系统中,连通性可以是断续的)的装置、系统和方法。响应于目前的技术现状,并且具体地,响应于领域中当前可用系统尚未完全解决 的问题和需要,已经研发了本发明。因此,研发本发明是为了提供用于向通过断续连接与代 理连接的应用实例分发事件的装置、系统和方法。在一个实施方式中,本发明实现为一种用于代理向通过断续连接与该代理连接的 应用实例分发事件的计算机实现方法。该方法可以包括代理从通过持续连接与该代理连 接的第一应用实例接收事件,并在本地对事件进行排队。该代理继而可以检查该代理与第 二应用实例之间断续连接的连通性状态,在该断续连接变得活跃时,代理通过该断续连接 向第二应用实例发送本地排队的事件。类似地,在断续连接活跃时,该代理可以从第二应用实例接收由第二应用实例生成的远程排队的事件。第二应用实例可以通过远程代理发送这 些事件。该代理向通过持续连接与该代理连接的第一应用实例发送远程排队的事件。在某些实施方式中,有些断续连接可以是活跃的,而其他连接可以是不活跃的。该 代理可以将来自第一应用实例的事件向通过目前活跃的断续连接进行连接的那些应用实 例分发,而对稍后将向未与代理通信的那些应用实例(诸如,上述第二应用实例)发送的事 件在本地进行排队。在某些实施方式中,该代理可以维持系统中将与其交换本地排队事件和远程排队 事件的远程代理的分布列表。在这种实施方式中,代理可以通过向关联远程代理发送本地 排队的事件来向应用实例分发这些本地排队的事件。在有些实施方式中,代理可以向持续连接的应用实例和其他代理提供事件接口。 根据该事件接口,该应用实例和远程代理可以向该代理提交事件,并从该代理接收事件。在有些实施方式中,代理的系统包括代理中心(hub),其与代理通信,并从系统中 的代理接收事件。在这些实施方式中,中心代理可以管理系统中的代理之间的事件交换。贯穿本说明书对特征、优势的参考或类似语言并不意味着可以与本发明一起实现 的所有特征和优势都应当位于或者位于本发明的任何单个实施方式中。相反,参考特征和 优势的语言应被理解为结合实施方式描述的特定特征、优势或特性包括在本发明的至少 一个实施方式中。由此,贯穿本说明书,对特征和优势的讨论或类似语言可以但不必须参考 同一实施方式。此外,所描述的本发明的特征、优势和特性可以以任何适当方式组合在一个或多 个实施方式中。相关领域技术人员将认识到,本发明可以在不具有特定实施方式的一个或 多个特定特征或优势的情况下实施。在其他实例中,可以认识到未在本发明所有实施方式 中出现的某些实施方式的附加特征和优势。通过以下描述和所附权利要求,本发明的这些特征和优势将变得显然,或者可以 通过实施下文给出的本发明而得以理解。


为了容易地理解本发明的优势,将通过附图中示出的特定实施方式来呈现以上简 述的本发明的更具体描述。鉴于这些附图仅描述了本发明的典型实施方式并且并不因此被 视为限制本发明的范围,因此将通过使用附图、利用附加特定性和细节对本发明进行描述 和说明,其中图1是示出用于在独立应用实例之间共享事件的系统100的一个实施方式的示意 框图;图2是示出促进共享事件的代理的一个实施方式的示意框图;图3 是示出包括共享事件的多个代理的系统的一个实施方式的示意框图;图4是示出包括使用中心代理共享事件的多个代理的系统的一个实施方式的示 意框图;以及图5是示出用于在独立应用实例之间共享事件的方法的一个实施方式的示意流 程图。
具体实施例方式本领域技术人员将会 理解,本发明的诸方面可以实现为系统、方法或计算机程序 产品。因此,本发明的诸方面可以采取完全硬件实施方式、完全软件实施方式(包括固件、 驻留软件、微代码等)或组合硬件方面和软件方面的实施方式,其可在此统称为“电路”、“模 块”或“系统”。此外,本发明的诸方面可以采取在其上具体化有计算机可读程序代码的一 个或多个计算机可读介质中具体化的计算机程序产品的形式。在本说明书中描述的很多功能性单元已被标记为模块,以便更着重强调其实现的 独立性。例如,模块可以实现为硬件电路,包括定制VLSI电路或门阵列、现成的半导体(诸 如,逻辑芯片)、晶体管或其他分立部件。模块也可以利用可编程硬件器件实现,诸如,现场 可编程门阵列、可编程阵列逻辑、可编程逻辑器件等。模块也可以利用各种类型的处理器可执行的软件实现。可执行代码的已标识模块 例如可以包括计算机指令的一个或多个物理或逻辑块,其例如可以被组织为对象、过程或 函数。然而,已标识模块的可执行体不需要物理上定位在一起,而是可以包括存储在不同地 点的不同指令,当在逻辑上结合在一起时,这些指令构成模块并实现模块所声称的用途。事实上,可执行代码的模块可以是单个指令或多个指令,并且甚至可以分布在若 干不同代码段中、不同程序中,以及若干存储器器件中。类似地,操作性数据可以在此标识 和示出为位于模块中,并且可以利用任何适当形式具体化,并组织在任何适当类型的数据 结构中。操作性数据可以收集为单个数据集合,或者可以分布在包括不同存储设备上的不 同地点,以及可以仅至少部分作为系统或网络上的电子信号存在。在以软件实现模块或模 块部分的情况下,软件部分存储在一个或多个计算机可读介质上。可以使用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机 可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、 光、电磁、红外或半导体系统、装置或设备,或前述任何适当组合。计算机可读存储介质的更具体示例(非穷举列表)可以包括以下内容具有一个 或多个导线的电连接、便携式计算机盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、 可擦除可编程只读存储器(EPR0M或闪存)、光纤、便携式压缩盘只读存储器(CD-ROM)、光存 储器件、磁存储器件或前述任何适当组合。在本文档的上下文中,计算机可读存储介质可 以是可包含或存储供指令执行系统、装置或设备使用或与其结合使用的程序的任何有形介 质。计算机可读信号介质可以包括例如在基带中或作为载波一部分的、具体化有计算 机可读程序代码的传播数据信号。这种传播信号可以采取多种形式中的任何一种,包括但 不限于电磁、光或其任何适当组合。计算机可读信号介质可以是任何计算机可读介质,该介 质不是计算机可读存储介质,并且可以传达、传播或传送供指令执行系统、装置或设备使用 或与之结合使用的程序。具体化在计算机可读介质上的程序代码可以使用任何适当介质 (包括但不限于无线、有线、光纤线缆、RF等或前述任何适当组合)进行传输。用于执行本发明诸方面的操作的计算机程序代码,可以以一种或多种编程语言的 任何组合来编写,编程语言包括面向对象的编程语言,诸如Java、Smalltalk, C++之类,还 包括常规的过程式编程语言,诸如“C”编程语言或类似的编程语言。程序代码可以完全地 在用户的计算上执行、部分地在用户的计算机上执行、作为独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络-包括局域网(LAN)或广域网(WAN)-连接到 用户的计算机,或者,可以(例如,利用因特网服务提供商来通过因特网)连接到外部计算 机。贯穿本说明书对“一实施方式”、“一个实施方式”的参考或者类似语言意味着结合 实施方式描述的特定特征、结构或特性包括在本发明的至少一个实施方式中。由此,贯穿本 说明书,短语“在一个实施方式中”、“在一实施方式中”或类似语言的出现可以但不必须都 涉及同一实施方式。此外,本发明描述的特征、结构或特性可以以任何适当方式在一个或多个实施方 式中组合。在以下描述中,提供了众多特定细节,诸如,编程示例、软件模块、用户选择、网 络事务、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等,以提供对本发明实施 方式的透彻理解。然而,相关领域技术人员将会理解,在不具有一个或多个特定细节的情况 下,或者在具有其他方法、部件、材料等的情况下,也可以实施本发明。在其他实例中,未示 出或详细描述公知的结构、材料或操作,以避免混淆本发明的方面。以下参考根据本发明实施方式的方法、装置、系统和计算机程序产品的示意流程 图和/或示意框图来描述本发明的诸方面。应当理解,示意流程图和/或示意框图的每个 框,以及示意流程图和/或示意框图中框的组合,可以由计算机程序指令实现。这些计算机 程序指令可以向通用计算机、专用计算机或其他可编程数据处理装置的处理器提供以产生 机器,使得在借助于计算机或其他可编程数据处理装置的处理器执行指令时,能够创建用 于实现示意流程图和/或示意框图框中指定的功能/动作。这些计算机程序指令也可以存储在计算机可读介质中,其可以指示计算机、其他 可编程数据处理装置或其他设备以特定方式起作用,使得存储在计算机可读介质中的指令 产生制品,该制品包括实现示意流程图和/或示意框图框中指定的功能/动作的指令。计算机程序指令也可以向计算机、其他可编程数据处理装置或其他设备加载,以 引起在计算机、其他可编程装置或其他设备上执行一系列操作步骤,从而产生计算机实现 的过程,使得在计算机或其他可编程装置上执行指令时,可以提供用于实现流程和/或框 图框中指定的功能/动作的过程。附图中的示意流程图和/或示意框图示出了根据本发明各种实施方式的装置、系 统、方法和计算机程序产品的可能实现的架构、功能性和操作。就这一点,示意流程图和/ 或示意框图中的每个框可以代表模块、片段或代码的部分,其包括用于实现指定逻辑功能 的一个或多个可执行指令。还应当注意,在有些备选实现中,框中所标注的功能也可以以不同于附图中所标 注的顺序发生。例如,两个接连地表示的框实际上可以基本并行地执行,或者它们有时也可 以按相反的顺序执行,这依所涉及的功能而定。可以设想出在功能、逻辑或效果上等同于所 示附图中一个或多个框或其部分的其他步骤和方法。尽管可以在流程图和/或框图中使用各种箭头类型和线类型,但是应当理解,这 并不用于限制对应实施方式的范围。事实上,某些箭头或其他连接符可以仅用来指示所描 述实施方式的逻辑流。例如,箭头可以指示所描述实施方式的枚举步骤之间未指定期间的 等待或监测时段。还应当注意,框图和/或流程图的每个框,以及框图和/或流程图中的框的组合,可以由执行指定功能或动作的基于专用硬件的系统实现,或由专用硬件和计算机 指令的组合实现。图1描绘了用于向通过断续连接与代理110和130连接的应用实例120和140分 发事件的系统100的一个实施方式。在所描绘的实施方式中,系统100包括具有对应的代 理110的一个应用实例120和另一应用实例140以及对应的代理130。为了在应用中区分 这两个代理,代理110可以称为第一代理,代理130可以称为第二代理。类似约定可以用来 区分应用实例120和应用实例140。然而,系统100并不限于任何特定数量的代理或应用实 例;在某些实施方式中,系统100可以包括多个代理和应用实例。应用实例120被描绘为包括用户114a_114c和应用服务器112。在本说明书中使 用的术语“应用实例”涉及这样的一个或多个同步应用环境,其对于应用实例中通过持续连 接的用户而言总是可用。应用实例对应于单个站点或单个移动单元。持续连接是这样的连 接,在正常工作时,其能够在应用实例中的用户与应用服务器之间提供连续连通性。例如,IM应用实例120可以具有作为应用服务器112操作的服务器部件和在服务 于用户114a-114c的机器上操作的客户端部件。应用服务器112对于用户114a_114c而言 是本地的,并且理想地,对于通过持续连接的用户114a-114c而言是连续可用的。持续连接 例如可以是陆地线连接或无线连接。由此,用户114a_114c可以总是能够使用应用服务器 112和个体机器上对应的客户端部件彼此联系。例如,在IM应用实例120中,应用服务器 112可以维持实时会话、接受来自用户114a-114c的帖子、向用户114a_114c发送更新,以及 执行其他IM服务器功能。应用服务器112还可以与本地数据存储交互,该本地数据存储提 供应用产品(诸如,帖子、上载的文件等)的持久存储。代理110通过持续连接而与应用实例120连接。代理110提供了允许代理110通 过断续连接与应用实例140通信所需的服务。在有些实施方式中,代理110通过代理130 与应用实例140通信。尽管代理110被描绘为与应用实例120分离,但是二者可以操作于同一硬件上。在 其他实施方式中,代理110可以操作于不同硬件上。应用实例120和代理110之间分离的 描绘在于强调二者之间在逻辑上的不同,而不是意味着物理的分离或区别。与在应用实例120和140中用以向相应的代理110和130连接应用实例120和 140的持续连接不同,代理110通过断续连接与应用实例140通信。断续连接是这样的连 接,在正常操作过程期间,其不能在源设备和目的地设备之间提供连通性。例如,移动连接 通常是断续连接。如上所注意到的,应用实例120和代理110可以实现在一艘船舶上,而应 用实例140和代理130可以实现在另一船舶上。在正常航行过程中,可以得到和失去两艘 船舶之间的断续连接,并且船舶移入或移出彼此的范围。 在一个实施方式中,代理110接收由应用实例120生成的事件。如在本申请中所使 用的,事件是应用实例生成的事务的封装。在一个实施方式中,每个事务生成事件,使得发 生的所有事务都可使用事件来复现,而不是简单地复现最新状态。事务可以是改变,诸如, 屏幕的改变、文档的改变、添加或删除、新动作(诸如,新IM消息)或其他状况。事件还可 以是管理事件,诸如,创建新聊天室或修改已有聊天室属性的事件。通过分发管理事件,最 终结果可以是同步的管理模型。事件可以实现为XML实例、服务数据对象(SDO)或使用其 他数据结构实现。
代理110对从应用实例120接收的事件在本地进行排队。在一个实施方式中,代 理Iio有权访问本地数据存储。代理110可以在易失性存储器(诸如RAM)、非易失性存储 器或二者中对事件进行排队。在此使用的“本地排队”表示在通过持续连接(诸如,总线或 网络连接)进行连接的设备中对事件进行排队。尽管本申请将代理110描述为对事件进行 排队,但是术语“排队”并不意在将代理110限制于使用任何特定数据结构。本申请中使用 的术语“队列”也不要求按照FIFO顺序来组织事件。相反,术语“队列”意在涵盖等待处理 的数据序列的更广泛概念。由此,列表、队列、表格或其他数据结构可以用来对事件进行排 队。在一个实施方式中,代理110仅在未与系统100中每个其他代理(诸如,代理130) 通信时,对应用实例120生成的事件进行排队。例如,如果代理110与系统100中的每个代 理通信,则代理110可以简单地向代理发送事件而不用对事件进行排队。代理110可以仅 在一个或多个其他代理失去联系时,对应用实例120生成的事件进行排队。在其他实施方 式中,代理110可以对事件进行排队,而无论断续连接的连通性状态如何。 代理110检查代理110与应用实例140之间的断续连接的连通性状态。在一个实 施方式中,代理110通过检查代理110与代理130之间的断续连接的连通性状态来进行检 查。当连通性状态为活跃的时候,代理Iio通过断续连接向应用实例140发送本地排队的 事件。在有些实施方式中,代理110通过代理130发送事件。在一个实施方式中,如果与代理130的断续连接是活跃的,则代理110立即向代理 130发送事件。如果失去与代理130的断续连接,则代理110可以开始追踪在断续连接停 止时代理110正接收哪些事件。代理110继而可以开始监测断续连接。一旦重新建立了断 续连接,则代理Iio发送在断续连接停止时从应用服务器112接收的事件。如上所述,代理 110也可以在连接活跃时开始实时发送事件。代理110还关注其向代理130传送了哪些事 件,以确保没有重复传输事件。在具有多个代理的实施方式中,代理110可以实时地向具有 与代理110的活跃连接的那些代理发送事件、对针对未与代理110连接的那些代理的事件 进行排队,以及跟踪针对多个代理发送了和未发送哪些事件。代理110还可以接收已由远程代理(诸如,代理130)排队的请求。在代理110与 代理130之间的连接状态是活跃的时候,代理110可以接收这些远程排队的事件。代理130 可以对应用实例140生成的事件进行排队,并且以类似于上述方式的方式向代理110发送 这些事件。代理110可以接收远程排队的事件,并向应用实例120发送这些事件。在有些实施方式中,事件包括与触发事件的事务有关的元数据。元数据可以允许 代理110确定事件的上下文;例如,元数据可以包括事件生成的时间。代理110可以使用该 时间元数据来将在应用实例140上发生的事件与在应用实例120上发生的那些事件交织在 一起。事件元数据可以类似地包括允许应用实例140在其自己的本地环境中实现事件所需 的信息,如同这些事件是由本地用户134a-134c输入的一样。在有些实施方式中,代理110维持系统100中的代理(诸如,代理130)的分布列 表。分布列表可以实现为平坦文件、数据库表或本领域中公知的其他数据结构。分布列表 可以提供系统100中的代理的完整列表和允许代理110与其他代理通信的信息(诸如,地 址)。在有些实施方式中,代理110向第一应用实例120提供事件接口。例如,代理110可以提供应用编程接口(API),其规定与代理110传送事件的方式。在有些实施方式中,向 应用实例120提供插件,其允许应用实例120向代理110发送事件以及从其接收事件。例 如,IM应用实例120可以配备有这样的插件,其会在用户114a-114c之一每次向文本框中输 入新输入时生成事件。类似地,插件可以从IM应用实例140接收事件、适当地将事件解包 (unpack),以及在适当时刻向聊天记录中插入文本输入。插件可以安装在应用服务器112 处。 代理110由此可以从与代理110持续连接的一个或多个应用实例120接受事件。 随着从应用实例(诸如,应用实例120)接收到事件,代理110可以直接向连接的代理分发 事件,或者对事件进行排队以在稍后递送。为了促进稍后递送,代理110可以连续地检查系 统中各种代理的网络可用性,并在需要的时候递送排队的事件。代理110还可以从系统中 的代理接收事件,并向适当的应用实例120传输这些事件。图2示出了代理110的一个实施方式。在所示实施方式中,代理110包括事件模 块202、队列模块204、连接模块206、发送模块208、接收模块210、接口模块212和传输模块 214。在一个实施方式中,事件模块202从通过持续连接与代理110连接的应用实例接 收事件。如上所述,应用实例可以配置有插件,以允许应用实例向代理110传送事件。事件 模块202还可以配置成使得其仅从本地应用实例接收某些类型的事件。在一个实施方式 中,插件定义了向事件模块202发送哪些种类的事务生成的事件。例如,在IM应用实例中, IM应用实例可以配置成使得仅新的聊天线(line)触发事件的生成。其他事务,诸如,本地 IM应用实例外观的改变,不能生成事件。在其他实施方式中,仅某些聊天室可以指定为分布 式的(并由此生成事件),而其他聊天室被认为是本地的,并且不生成向代理110发送的事 件。队列模块204对从应用实例接收的针对代理110的事件在本地进行排队。队列模 块204还可以配置用于跟踪系统中的哪些代理接收了哪些事件;由此,队列模块204可以维 持针对系统中每个代理的队列,并且跟踪哪些代理接收了哪些事件。队列模块204还可以 配置用于确保代理不会重复接收由连接到该代理的应用实例所生成的事件。连接模块206检查代理110与远程应用实例之间的断续连接的连通性状态。在此 使用的“断续连接”是这样的通信连接,其允许系统设计者知道的数据传输会具有连接活跃 的时段,和连接不活跃的时段。例如,断续连接可以是这样的移动连接,其中作为正常操作 的一部分,在移动连接上通信的各种设备可以移入和移出彼此的范围。在一个实施方式中, 连接模块206通过监测代理110与系统中其他代理之间的断续连接的连通性状态来进行检 查。在特定时间,断续连接可以是活跃的(这种情况下可以在断续连接上传输事件),或者 可以是不活跃的(这种情况下不能传输事件)。连接模块206可以使用分布列表来确定哪 些代理位于系统中,并且由此确定要监测哪些断续连接。连接模块206可以使用各种技术来确定断续连接是活跃的还是不活跃的。在一个 实施方式中,连接模块206可以ping远程代理,以确定这些特定远程代理是否可达。基于 连接模块206是否接收到了响应,连接模块206可以确定断续连接是活跃的还是不活跃的。 也可以使用本领域技术人员公知的用于确定网络状态的其他方式。连接模块206还可以负责维持代理110与系统中其他代理之间的连接。连接模块206还可以负责维持代理110与本地附属应用实例之间的连接。连接模块206还可以监测 与代理110的各种连接的状况。代理110还可以包括发送模块208。在代理110与远程应用实例之间的连接状态 变为活跃时,该发送模块208向远程应用实例发送由持续连接的应用实例生成的、已由代 理110在本地进行排队的事件。发送模块208可以在代理110与相关应用实例之间的断续 连接为活跃时立即发送事件。在有些实施方式中,发送模块208可以包括元数据以作为事件的一部分。例如,发 送模块208可以指定应用实例的性质(S卩,IM应用)、提供关于发起代理110的信息,以及 提供关于事件性质的信息(即,事件代表什么以及应当如何处理)。在有些实施方式中,发送模块208还可以向特定事件指派优先权。由此,某些事件 可以在其他事件之前传输,或者,发送模块208可以包括指示接收实体(诸如,远程代理) 在处理其他事件之前处理特定事件的指令。例如,与涉及较长生存期和较少关键操作的事 件(诸如,文件上载)相比,可以给予对应于实时更新的事件(诸如,新的IM张贴或屏幕共 享会话)以优先权。在有些实施方式中,发送模块208向所有远程连接的代理广播本地排队的事件。 在其他实施方式中,发送模块208向特定远程代理发送本地排队事件的特定集合。如果连接模块206确定至少一个远程应用实例未通过活跃的断续连接进行连接, 则队列模块204可以对从第一应用实例接收的事件进行排队。在其他实施方式中,队列模 块204对从第一应用实例接收的所有事件进行排队,无论断续连接的状态如何。在这种实 施方式中,发送模块208可以跟踪哪个远程应用实例接收了哪些事件,以及在存在活跃断 续连接的时候,仅发送远程应用实例尚未接收的事件。在有些实施方式中,发送模块208从连接模块206接收与断续连接的状态有关的 信息。发送模块208可以使用这一状态信息来跟踪针对各种远程应用实例的事件历史(即, 发送了哪些事件,以及未发送哪些事件)。在有些实施方式中,远程应用实例(或者,其连接 的代理)在接收到事件时生成响应消息。在这种实施方式中,发送模块208可以基于这些 响应消息来确定哪些远程应用实例接收了哪些事件。这种实施方式可以确保发送的事件被 成功接收,以及允许发送模块208重新发送已发送但未被远程应用实例接收的事件。代理110还可以包括接收模块210。该接收模块210接收由连接至远程代理的其 他应用实例生成的事件。接收模块210可以在断续连接活跃时从远程代理接收这些事件。 在有些实施方式中,远程代理将确定在连接不活跃时远程应用实例生成了哪些事件、对这 些事件远程地进行排队,以及继而在连接再次变得活跃时将事件向接收模块210发送。在 断续连接活跃时,随着远程应用实例生成事件,接收模块210可以从远程代理接收这些事 件,一旦断续连接变得不活跃,再次在远程代理上启动排队过程。传输模块214向持续连接至代理110的应用实例发送由接收模块210接收的远程 m 队事件。如上所述,应用实例可以包括插件组件,用于接收远程排队事件、将这些事件解 包以及适当地向应用实例数据插入事件。代理110还可以包括接口模块212。接口模块212可以向本地应用实例提供事件 接口。事件模块202可以根据接口模块212建立的接口从本地应用实例接收事件。接收模 块210可以类似地根据接口模块212建立的接口来接收远程代理发送的远程排队事件。传输模块214还可以按照接口模块212所指定的、向应用实例发送远程排队事件。在一个实 施方式中,接口模块212提供API,以促进代理110与系统中远程代理之间、以及代理110与 本地应用实例之间共享事件和信息。管理模块216可以向系统的用户提供针对代理110的管理方面的访问权。例如, 用户可以使用管理模块216来提供关于远程代理和断续连接的信息、关于将由代理110支 持的应用实例的信息和其他管理功能。在一个实施方式中,管理模块216提供了远程控制 接口,其允许由大量其他组件对设置进行管理。
图3示出了用于向通过断续连接与代理连接的应用实例分发事件的系统300的一 个实施方式。系统300包括代理110和相关应用实例120,以及代理310、314和318,分别 具有相关应用实例312、316和320。在系统300中,代理及其相应的应用实例之间的持续连 接由实线表示。代理之间的断续连接由虚线表示。在一个实施方式中,系统300中的代理创建网状网络,每个代理维护与可用的每 个其他代理的连接。在其他实施方式中,代理可以配置于网状网络中,并且还可以连接至中 心代理,如图4所示。在其他实施方式中,代理的子集可以形成网状网络,每个子集连接至 中心代理。系统300中的代理可以共享由系统300中的应用实例120生成的事件。例如,代 理110可以包括用于从应用实例120接收事件的事件模块202、用于对从应用实例120接收 的事件进行本地排队的队列模块204,以及用于检查代理110与系统300中其他代理(诸 如,代理310)之间的断续连接的连通性的连接模块206。在特定断续连接的连接状态是活 跃的时候,代理110的发送模块208可以通过代理110与其他代理之间的断续连接来发送 本地应用实例120生成的在本地排队的事件。类似地,在代理110与其他代理之间的连接 状态是活跃的时候,接收模块210可以通过断续连接从其他代理接收远程排队的事件。系 统300中的其他代理可以具有用于执行这些相同操作的相同模块。系统300中的代理可以每个都维持提供与系统中其他代理有关的连接信息的分 布列表。例如,分布列表可以包括系统中的每个远程代理(例如,代理110的分布列表可以 指示在系统300中存在代理314、310和318)、代理的地址以及关于代理之间的断续连接的 信息。还可以使用用于支持代理之间的通信连接的其他方式。例如,代理110和代理310之间的断续连接可能已经不活跃有20分钟的时段,而 代理110与代理314、318之间的断续连接已经是活跃的。在这20分钟期间,代理110可以 实时地向代理314和318发送由应用实例120生成的事件;S卩,由于断续连接是活跃的,代 理110可以在没有过度延迟的情况下向代理314和318发送事件。由此,相应的应用实例 316和320实时接收事件。由于在代理110与代理310之间的断续连接已经不活跃,所以在连接不活跃的这 20分钟期间,除了向代理314和318发送应用实例120生成的事件之外,代理110可以对这 些事件在本地进行排队。代理110还可以连续监测代理110与代理310之间的断续连接的 连接状态。在代理110与代理310之间的连接重新建立时,代理110向代理310发送在该 20分钟期间其为应用实例120排队的事件。由于代理310也已经与代理110失去联系达20分钟,所以代理310可能已经类似 地对针对应用实例312的事件进行了排队。在连接重新建立时,代理310向代理110发送这些排队的事件(从代理110的角度看来,是在远程进行排队的事件)。代理110和310继 而可以向其相应的应用实例120发送这些接收的事件,应用实例120可以向用户呈现这些 事件。在一个实施方式中,一个代理和对应的应用实例实现在船舶上。在其他实施方式 中,代理和对应的应用实例可以实现在诸如蜂窝电话或膝上型计算机的移动设备上。代理 之间的断续连接可以代表支持代理/应用实例配对的设备之间的移动连接。随着代理移 入和移出彼此的通信,每个代理基于代理的连接而呈现出在给定时间可用的“最佳可能画 面”。系统300以最大程度更新画面以在固有异步环境中提供改进的同步。图4示出了用于在代理之间分发事件的系统400的一个实施方式。图4包括如上 所述通过持续连接进行连接的代理和应用实例。图4还包括中心代理410。在有些实施方 式中,诸如图4所示,代理通过中心代理410彼此通信(并且由此,与系统400中的应用实 例进行通信)。在有些实施方式中,中心代理与系统400中的一个或多个代理连接,并且每个代 理通过中心代理410从系统400中的其他代理接收远程排队的事件。类似地,系统400中 的每个代理可以通过中心代理410向系统中的其他代理发送来自本地附属应用实例的本 地排队的事件。中心代理410可以配置成使得其仅与系统中的代理(诸如,代理110、310、314和 318)通信,而不直接与任何应用实例通信。中心代理410可以提供用于适当分发事件的功 能性。在这种实施方式中,在代理110与中心代理410之间的通信连接活跃时,代理110可 以向中心代理410发送事件。当连接不活跃时,代理110可以对事件在本地进行排队并监 测连接的状态。一旦断续连接再次活跃,代理110向中心代理410发送本地排队的事件,并 从中心代理410接收远程排队的事件。在这种实施方式中,中心代理410可以配置有必要的逻辑和存储,以管理贯穿系 统400中的事件接收和分发。中心代理410可以负责跟踪每个代理针对应用实例所具有的 “画面”,并确定需要向每个代理发送哪些事件以便向代理提供最佳的可能画面。例如,中心 代理410可以负责在本地存储中对接收自代理的事件进行排队、监测中心代理410与系统 400中每个代理的连接状态,以及编辑和发送特定代理410在与中心代理410的断续连接不 活跃时未接收到的事件。中心代理410还可以维持分布列表;在这种实施方式中,针对个体 代理的连接可以简化,因为它们仅需要与中心代理410联系,并且系统400的底层复杂性可 以隐藏。图5示出了用于分发由与代理连接的应用实例生成的事件的方法500的一个实施 方式。在一个实施方式中,该方法包括代理从通过持续连接与代理连接的第一应用实例接 收502事件。代理对未能传输的、由应用实例生成的所接收事件在本地进行排队504。例 如,断续连接可能不活跃,由此妨碍了代理成功地向远程代理传输事件。方法500还可以包括代理检查506断续连接的连通性状态。如上文所指出的,断 续连接可以是移动连接。代理可以以预定间隔检查代理与远程代理之间的断续连接。 代理继而可以在断续连接变为活跃时向远程代理发送508本地排队的事件。在有 些实施方式中,在断续连接变得活跃时,仅在断续连接上发送之前未成功传输的那些本地 排队的事件。类似地,在断续连接变得活跃时,代理可以通过断续连接从远程代理接收510之前未成功接收的远程排队事件。如上所述,远程排队的事件是由持续连接至远程代理的应用实例生成的。 本发明可以以其他特定形式具体化,而不会脱离其精神或实质性特性。上述实施 方式在各方面中仅用于示意而非限制。因此,本发明的范围由所附权利要求指示,而不是由 前述描述指示。落入权利要求等价物的含义和范围的所有改变都将包括在其范围内。
权利要求
1.一种用于代理向通过断续连接与该代理连接的应用实例分发事件的计算机实现方 法,该方法包括从通过持续连接与所述代理连接的第一应用实例接收事件;对从所述第一应用实例接收的事件在本地进行排队;检查所述代理与第二应用实例之间的断续连接的连通性状态;以及响应于所述代理与所述第二应用实例之间的连接状态是活跃的,通过所述断续连接向 所述第二应用实例发送本地排队的事件。
2.如权利要求1的方法,进一步包括响应于所述代理与所述第二应用实例之间的连 接状态是活跃的,通过所述断续连接来接收由所述第二应用实例生成的远程排队的事件。
3.如权利要求2的方法,进一步包括向所述第一应用实例发送所述远程排队的事件。
4.如权利要求1的方法,进一步包括从所述第一应用实例向通过活跃的断续连接与 所述代理连接的第三应用实例分发事件。
5.如权利要求1的方法,其中所述本地排队的事件通过与所述第二应用实例持续连接 的远程代理向所述第二应用实例发送,以及其中所述远程排队的事件是通过所述远程代理 从所述第二应用实例接收的。
6.如权利要求5的方法,进一步包括维持与其交换本地排队的事件和远程排队的事 件的一个或多个远程代理的分布列表。
7.如权利要求5的方法,其中向所述第二应用实例分发事件包括向所述远程代理发 送所述本地排队的事件,所述远程代理向所述第二应用实例分发所述本地排队的事件。
8.如权利要求1的方法,进一步包括所述代理向所述第一应用实例提供事件接口,并 且其中所述接收的事件由所述第一应用实例根据所述事件接口向所述代理提交。
9.如权利要求8的方法,进一步包括根据所述事件接口,向所述第一应用实例发送所 述远程排队的事件。
10.一种用于向通过断续连接与代理连接的应用实例分发事件的代理,所述代理包括事件模块,用于从通过持续连接与所述代理连接的第一应用实例接收事件;队列模块,用于对从所述第一应用实例接收的事件在本地进行排队;连接模块,用于检查所述代理与第二应用实例之间的断续连接的连通性状态;和发送模块,用于响应于所述代理与所述第二应用实例之间的连接状态是活跃的,通过 所述断续连接向所述第二应用实例发送本地排队的事件。
11.如权利要求10的代理,进一步包括接收模块,用于响应于所述代理与所述第二应 用实例之间的连接状态是活跃的,通过所述断续连接来接收由所述第二应用实例生成的远 程排队的事件。
12.如权利要求10的代理,进一步包括接口模块,其向所述第一应用实例提供事件接 口,并且其中所述事件模块从所述第一应用实例接收根据所述事件接口提交的事件。
13.如权利要求10的代理,进一步包括传输模块,其根据所述事件接口向所述第一应 用实例发送所述远程排队的事件。
14.一种用于向通过断续连接与一个或多个代理连接的应用实例分发事件的系统,所 述系统包括第一代理,其通过第一持续连接而与第一应用实例连接,所述第一代理包括 事件模块,用于从所述第一应用实例接收事件; 队列模块,用于对从所述第一应用实例接收的事件在本地进行排队; 连接模块,用于检查所述第一代理与第二代理之间的断续连接的连通性状态; 发送模块,用于响应于所述第一代理与所述第二代理之间的连接状态是活跃的,通过 所述断续连接向所述第二代理发送本地排队的事件;接收模块,用于响应于所述第一代理与所述第二代理之间的连接状态是活跃的,通过 所述断续连接从所述第二代理接收远程排队的事件;所述断续连接将所述第一代理与所述第二代理连接;以及 所述第二代理通过第二持续连接与第二应用实例连接,所述第二代理包括 事件模块,用于从所述第二应用实例接收事件; 队列模块,用于对从所述第二应用实例接收的事件在本地进行排队; 连接模块,用于检查所述第一代理与第二代理之间的断续连接的连通性状态; 发送模块,用于响应于所述第一代理与所述第二代理之间的连接状态是活跃的,通过 所述断续连接向所述第一代理发送本地排队的事件;接收模块,用于响应于所述第一代理与所述第二代理之间的连接状态是活跃的,通过 所述断续连接从所述第一代理接收远程排队的事件。
15.如权利要求14的系统,进一步包括一个或多个附加代理,其通过所述断续连接与 所述第一代理和所述第二代理通信。
16.如权利要求15的系统,其中所述系统中的每个代理维持与其交换事件的其他代理 的分布列表。
17.如权利要求14的系统,进一步包括中心代理,其与一个或多个代理连接,并且其中 每个代理通过所述中心代理从其他代理接收远程排队的事件,并且其中每个代理通过所述 中心代理发送本地排队的事件。
18.如权利要求14的系统,其中所述系统中的每个代理进一步包括传输模块,其根据 事件接口向所述第一应用实例发送远程排队的事件。
19.如权利要求14的系统,其中所述系统中的每个代理进一步包括存储模块,用于向 本地附属于所述代理的数据存储中存储从所述第一应用实例接收的事件。
全文摘要
改进断续连接环境中实时应用性能的装置、系统和方法,公开了用于在通过断续连接而连接的应用实例之间分发事件的装置、系统和方法。向应用实例提供代理,其根据接口彼此通信以及和其相应的应用实例通信。应用实例向代理提供事件,代理向系统中的其他代理转发事件。如果特定代理不能到达,则代理在本地数据存储中对事件进行排队、监测连接,并且在连接重新建立时发送事件。代理类似地接收与在连接不活跃时不能与其通信的远程代理相关联的应用实例生成的事件。结果,系统中的用户具有整个应用在系统中给定时刻的连接状态下可用的最佳可能和最完整的状态。
文档编号H04L12/58GK102035872SQ20101028711
公开日2011年4月27日 申请日期2010年9月16日 优先权日2009年9月30日
发明者F·J·萨拉扎 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1