背景
领域
所描述的诸方面涉及交互式工作空间和遍在式计算。更具体地,本发明涉及使群体的全异计算平台能容易地与位于分布式系统中的服务对象接口以获得持久个人消息收发的基础设施。
背景
诸如但并不限于因特网之类的分布式计算机系统的特征在于同时在大批不相似的且地理上多样化的处理器上执行的许多不相似的进程之间快速、实时的互换。分布式计算机系统的资源通常在空间上是分开的,并且其应用的执行往往涉及可能在时间上分开很广的多个执行线程。
客户机设备的用户群体的运营商在竞争性的演进的通信市场中竞争。很难满足用户对各种服务的期望,尤其在分布式计算机系统上更是如此。用户的期望往往彼此有所分歧,因为诸如搜索之类有不同的优选服务供应商。另外,某些类型的内容可能被隔离在分布式网络的具有专有接口的不同节点中,这使得对这些服务的访问受挫。
以通信能力为其主要目的或者具有无线通信能力以扩展连通性的客户机设备的移动性日益增长。最终用户希望用这些移动通信设备来访问服务,而这先前本是终端、工作站和通用计算机的领域。旨在用于通用计算的后面这些设备已具有趋于标准化或者至少容适广大范围的使用环境的趋势。相比之下,移动通信设备是倾向于优先考虑经济的制造、小尺寸和延长的电池服务寿命地进展的,其中性能的焦点在无线通信上而不是处理能力上。另外,广播频带和协议的演进已趋于鼓励通信芯片组的激增。由此,对移动通信设备用户的各种服务供应已受到限制,与通用计算机用户较大的当前市场相比尤甚。
数个障碍阻碍解决向移动通信设备部署如对于通用计算机而言常规的服务的挑战。与给通用计算机的宽带信道相比,给移动通信设备的通信带宽往往是受约束的,从而阻碍为各种服务恰当地配置移动通信设备的接口软件的下载。通常,移动通信设备的用户接口在大小上受到严格约束,从而限制了可给出的显示器大小和控制按钮数目,进一步使此类配置变得复杂。不仅如此,许多用户往往是在不适于此类焦点所在的交互的境况(例如,旅游)中使用移动通信设备。
因移动设备的独特约束和使用模式而变得复杂的一种此类功能是即时消息收发。通常,人们将使用因特网消息收发客户机的若干不同实例,诸如在工作中是在台式个人计算机(PC)上、在家中是在膝上型PC上,还有在移动设备上。一个问题在于,在使用这些不同设备之间没有连续性。一旦用户切换到台式设备或移动设备,在运行于PC上的客户机上开始的与单人或群的对话就会中断并丢失。
概述
以下给出了简化概述,以提供对本公开的某些方面的基本理解。此概述不是详尽纵览,且既非旨在指认出关键性或决定性要素,也非旨在界定此类方面的范围。其目的是以简化的形式给出所描述的方面的一些概念,以作为后面给出的更加详细的描述的前序。
根据一个或更多个方面及其相应的公开,结合使用诸如移动通信设备之类的客户机设备经由松耦合的分布式网络来访问诸服务来描述各种特征,其中该松耦合的分布式网络有利地在能容易地从各种各样的计算平台访问的元组空间中维护即时消息收发通信的连续性,从而向各种远程客户机提供无缝的可访问性。
在一个方面,提供一种用于向连接至分布式网络的客户机设备群体提供持久消息收发服务的方法。为从客户机设备发起与持久消息收发服务的活跃通信的用户放置用户元组到元组空间中。定位到存储在该元组空间中的与该用户元组相匹配的关于先前消息收发会话的消息元组。向该客户机设备发送从该消息元组推导出的历史消息。
在另一方面,提供用于向连接至分布式网络的客户机设备群体提供持久消息收发服务的至少一个处理器。第一模块为从客户机设备发起与持久消息收发服务的活跃通信的用户放置用户元组到元组空间中。第二模块定位到存储在该元组空间中的与该用户元组相匹配的关于先前消息收发会话的消息元组。第三模块向该客户机设备发送从该消息元组推导出的历史消息。
在一附加方面,提供一种用于向连接至分布式网络的客户机设备群体提供持久消息收发服务的计算机程序产品。计算机可读介质包括使计算机执行以下动作的代码集:为从客户机设备发起与持久消息收发服务的活跃通信的用户放置用户元组到元组空间中,定位到存储在该元组空间中的与该用户元组相匹配的关于先前消息收发会话的消息元组,以及向该客户机设备发送从该消息元组推导出的历史消息。
在另一方面,提供一种用于向连接至分布式网络的客户机设备群体提供持久消息收发服务的设备,该设备具有用于为从客户机设备发起与持久消息收发服务的活跃通信的用户放置用户元组到元组空间中的装置,用于定位到存储在该元组空间中的与该用户元组相匹配的关于先前消息收发会话的消息元组,以及用于向该客户机设备发送从该消息元组推导出的历史消息的装置。
在又一方面,提供一种用于向连接至分布式网络的客户机设备群体提供持久消息收发服务的装置。计算平台主存执行持久消息收发服务的元组空间。消息收发网关为经由通信网络发起客户机设备与该消息收发网关之间的活跃通信的用户放置用户元组到该元组空间中。该消息收发网关进一步定位到存储在该元组空间中的与该用户元组相匹配的关于先前消息收发会话的消息元组,并且经由该通信网络向该客户机设备发送从该消息元组推导出的历史消息。
在又一附加方面,提供一种用于从分布式网络接收持久消息收发服务的方法。从客户机设备发起与持久消息收发服务的活跃通信导致为用户放置用户元组到元组空间中。该发起进一步导致定位到存储在该元组空间中的与该用户元组相匹配的关于先前消息收发会话的消息元组。随后,可以接收从该消息元组推导出的历史消息。
在又一方面,提供用于从分布式网络接收持久消息收发服务的至少一个处理器。第一模块从客户机设备发起与持久消息收发服务的活跃通信,以导致为用户放置用户元组到元组空间中,并且导致定位到存储在该元组空间中的与该用户元组相匹配的关于先前消息收发会话的消息元组。第二模块把从该消息元组推导出的历史消息接收到该客户机设备。
在又一附加方面,提供一种用于从分布式网络接收持久消息收发服务的计算机程序产品。计算机可读介质包括使计算机执行以下动作的代码集:从客户机设备发起与持久消息收发服务的活跃通信以导致为用户放置用户元组到元组空间中,并且导致定位到存储在该元组空间中的与该用户元组相匹配的关于先前消息收发会话的消息元组,以及把从该消息元组推导出的历史消息接收到该客户机设备。
在又一附加方面,提供一种用于从分布式网络接收持久消息收发服务的设备,该设备具有用于从客户机设备发起与持久消息收发服务的活跃通信以导致为用户放置用户元组到元组空间中并且导致定位到存储在该元组空间中的与该用户元组相匹配的关于先前消息收发会话的消息元组的装置,并且具有用于把从该消息元组推导出的历史消息接收到该客户机设备的装置。
在另一附加方面,提供一种用于从分布式网络接收持久消息收发服务的装置。通信模块控制发射机和接收机以在通信网络上向网关通信,该网关起作用地与执行持久消息收发服务的元组空间交互。用户接口经由该通信模块来发起与持久消息收发服务的活跃通信,以导致为用户放置用户元组到该元组空间中,并且导致定位到存储在该元组空间中的与该用户元组相匹配的关于先前消息收发会话的消息元组。该用户接口经由该通信模块和接收机来接收从该消息元组推导出的历史消息。
为能达成前述及相关目的,一个或更多个方面包括在下文中充分描述并在所附权利要求中特别指出的特征。以下描述和附图详细阐述了某些解说性方面并仅仅是指示了可采用这些方面和版本的原理的各种方式中的若干种。结合附图考虑下面的详细描述,则其他优点和新颖特征将变得清楚,并且所公开的版本旨在包括所有此类方面及其等效技术方案。
附图简述
图1是用于经由分布式网络服务来进行经由多个客户机设备的持久个人消息收发的系统的一个方面的示意图;
图2是能与图1的系统一起工作的通信网络的一个方面的示意图。
图3是根据一个方面的显示了经优化的评级后搜索结果的解说性客户机设备的图示。
图4-5是根据一个方面的用于持久个人消息收发和超群的方法体系的时序图。
详细描述
持久个人消息收发系统提供支持用户即使在松耦合的分布式持久个人消息收发系统内亦能在多个客户机设备之间调换的元组空间功能性。用户(无论他们正在使用哪个消息收发客户机)登录到该系统上。登录的动作将代表该用户的元组放置在元组空间中。“联系人”服务代理找到好友以及该用户所属的群并向其他用户通知该用户已登录。在给定其他用户和群的在线状态的前提下,“历史”服务代理将从该元组空间检索构成了该用户与诸用户和群的对话的先前消息,就好像该用户从未注销或切换设备那样。当用户向任何对话添加新消息时,该消息作为元组被添加至该元组空间。因为元组具有租约,所以能使对话中的旧消息在预定时段之后自动到期(或者在外部持续)。由于元组空间的本质,跨元组空间搜寻用户和群之中的共性以创建虚拟超群也是可能的。能使特定的消息以超群为目标。例如,可以由“呼喊”服务代理来把包含所有对足球感兴趣的当前用户和群的超群作为目标,其中该“呼喊”服务代理将把最新近的足球结果注入他们的对话中。
如在本申请中所使用的,术语“组件”、“模块”、“系统”及类似术语旨在指示计算机相关实体,任其是硬件、软硬件组合、软件,还是执行中的软件。例如,组件可以是但不被限定于在处理器上运行的进程、处理器、对象、可执行件、执行的线程、程序、和/或计算机。作为解说,运行在服务器上的应用和该服务器两者都可以是组件。一个或更多个组件可驻留在进程和/或执行的线程内,并且组件可局部化在一台计算机上和/或分布在两台或更多台计算机之间。
措辞“示例性”在本文中用于表示用作示例、实例、或解说。本文中描述为“示例性”的任何方面或设计不必被解释为优于或胜过其他方面或设计。
另外,该一个或更多个方面可以通过使用标准编程和/或工程学技术产生软件、固件、硬件、或其任何组合以控制计算机实现所公开的方面来实现为方法、装置或制造品。本文中所使用的术语“制造品”(或替换地,“计算机程序产品”)旨在涵盖可从任何计算机可读设备、载体、或介质访问的计算机程序。例如,计算机可读介质可包括,但不限于,磁性存储设备(例如,硬盘、软盘、磁条等)、光盘(例如,压缩盘(CD)、数字多用盘(DVD)等)、智能卡、以及闪存设备(例如,记忆卡、记忆棒等)。另外应该领会,可以采用载波来携带计算机可读电子数据,诸如那些用于传送和接收电子邮件或用于访问如因特网或局域网(LAN)之类的网络的数据。当然,本领域的技术人员将会认识到,可以对这种配置进行许多修改而不会脱离所公开的方面的范围。
各种方面将以可包括数个组件、模块及类似物的系统的形式来呈现。将理解和领会,各种系统可包括外加的组件、模块等,和/或可以并不完全包括结合这些附图所讨论的组件、模块等。也可以使用这些办法的组合。本文中所公开的各种方面可以在包括利用触摸屏显示技术和/或鼠标键盘型接口的设备的电子设备上执行。此类设备的示例包括(台式和移动)计算机,智能电话、个人数字助理(PDA)、以及其他有线和无线的电子设备。
在图1中,分布式系统100允许诸如移动通信设备之类的客户机设备101检查在计算平台102上工作的元组空间104以找到诸如消息收发接口服务元组106之类的消息收发服务。在解说性描绘中,被描绘为来自服务元组143的用户接口代码108的恰适属性可以随后作为搜索接口109被加载到客户机设备101上并在其上执行。由此,用户110便能经由客户机设备101的通信模块113来与持久消息收发服务112交互以维持与用户110经由另一客户机设备101'从事的先前消息收发对话的连续性。
在解说性描绘中,持久消息收发系统112包括与用户元组116交互的状态服务元组114。历史服务元组118与历史元组120交互。联系人服务元组122与用户元组116交互。消息收发服务元组124与消息元组126交互,该消息元组126进而可以与历史元组120交互。呼喊服务元组128和广告服务元组130各自与用户元组116的兴趣属性132交互。
诸如经由无线电接入网的数字服务或是数字蜂窝服务的承运商之类的运营商134可以在客户机102与元组空间104之间提供网关136。具体地,消息收发组件138通过通信网络140向如由订户服务组件142验证的多个客户机设备102中继个人消息收发。
元组空间104是全局共享的、组织成元组群的关联寻址的存储器空间。“元组”是元组空间系统的基本元素。在类似Linda之类的基于元组空间的协调语言的上下文中,元组是具有某些类型的字段或值的向量。在更宽泛的意义上,“元组”是信息存储系统中的条目。例如,关系数据库系统中的行可被称为元组。
在类似于Linda的语言中,称为“模板”的构造被用来经由匹配技术来关联寻址诸元组。如果模板和元组具有相等数目个字段并且如果每个模板字段匹配于相应的元组字段,那么该模板匹配于该元组。
基于元组空间的协调语言提供简单而强大的用于进程间通信和同步的机制,该机制是并行和分布式编程的关键所在。有数据要共享的进程生成元组并将该元组放置在元组空间中。需要数据的进程简单地向元组空间请求元组。元组空间程序可以出于数个原因而较易于编写和维护,包括以下原因:
(1)目的地解耦(全匿名通信)——元组的创建者不需要知道该元组的未来使用或其目的地。
(2)空间解耦——因为元组是使用关联寻址方案来检索的,所以多个地址空间不相交的进程能按相同的方式来访问元组。
(3)时间解耦——元组具有其自己的寿限,而与生成它们的进程或者任何可读取它们的进程无关。这使得时间不相交的进程能够无缝地通信。
元组空间的实现可以是“闭式”的或者“开式”的。闭式实现使用编译时对象和源代码分析来提供极为高效的闭型程序。开式实现允许进程、代理和程序通过元组空间来协调,而运行时系统无需任何先验知识。实质上,开式实现提供持久数据存储。
Linda语言使用三种标准指令或原语。它们(用其非正式的语义而言)是:
(1)out(元组)将元组插入元组空间中。
(2)in(模板)如果存在匹配于该模板的元组,那么移除该元组并将其返回给执行该in的代理。如果没有匹配的元组可用,那么该原语阻塞直至有匹配的元组可用。
(3)rd(模板)如果存在匹配于该模板的元组,那么将该元组的副本返回给执行该rd的代理。如果没有匹配的元组,那么该原语阻塞直至有匹配的元组可用。
元组空间104包括数据贮,并且放置在元组空间104中的服务元组143和数据元组144各自包括具有有序数据集的对象,其中该数据包括元组类型146和元组属性148。另外,元组属性148可以取决于元组类型146而变动。元组空间104包括能作用于接收例如元组144之类的数据对象的抽象空间,并包括能在该空间内执行的预定操作集。例如,预定函数集可包括“in”函数和“rd函数,这两者均取输入参数,并且通过将输入参数(在给出的场合)与存在于元组空间内的那些值相匹配的方式来允许选择该空间中的特定元组。”另外,“in”和“rd”函数两者均可具有非阻塞等效函数(inp和rdp)。在一些方面,预定函数集可包括诸如JAVA方法之类的可对元组空间104和元组144两者执行的操作集。
另外,在具体示例中,每个元组144是com.qualcomm.qspaces.linda.Tuple类或子类的实例,并且是用由在元组被构造时指定的对象数组定义的属性集148来创建的。该数组可以是零长度的,然而在一些方面,该数组可以不为空。另外,在一些方面,该数组中没有任何个体属性对象可以为空。
在一些方面,当元组144最初被构造时并且每当从各个元组检索各个属性148时,可以使用非常快速形式的存储器内串行化来防御性地复制该对象数组。此过程允许元组144成为不可变的,并且因此确保元组144所驻留的元组空间104的完好性。
在上述这些方面,元组相等性遵守任何JAVA对象的相同的相等性原则,包括声明若t1.equals(t2)则t2.equals(t1)的对称规则。
具体地,一元组等于另一元组,例如t1.equals(t2)——若称为模板的t2满足以下准则:
1)模板t2的类120是与元组t1相同的类120。
2)模板t2的属性122等于元组t1的属性122,这意味着t2的属性122与t1的属性122相同,而无论它们的次序如何。
在其他方面,一元组匹配于另一元组,例如t1.matches(t2)——若称为模板的t2满足以下准则:
1)模板t2的类120是与元组t1相同的类120或元组t1的超类。
2)模板t2的属性122匹配于元组t1的属性122,这意味着t2的属性122是与t1的属性122相同的集合或其子集,而无论它们的次序如何。
当将一个元组与另一元组相匹配时,该对称规则不适用,所以t1.matches(t2)未必等于t2.matches(t1)。
在一些方面,一个集合的元组属性148与另一集合的元组属性的比较使用常规的对象相等性规则,所以任何被用作元组属性148的对象都能实现object.equals(Object obj)和object.hashcode()方法。
元组144带租约150地被添加至元组空间104。租约150是例如以毫秒为单位来指定的时段,该时段定义该元组将逗留在相应元组空间104中多久。例如,具有零值的租约150可以指示相应元组从不到期。一旦相应元组的租约150已到期,那么该元组就从元组空间104被自动地移除。
服务元组143代表与元组空间104的诸如客户机设备101之类的客户机交互的服务。另外,服务元组143凭其本身也是自主的“活”JAVA对象,这些对象也可以与元组空间104以及该空间中的其他元组交互。可以按与其他元组相同的方式,例如通过匹配元组的类和属性148等,来发现服务元组143。在一些方面,可以不按此方式来使用服务元组143,而是通过将诸如数据元组144之类的其他元组放置在元组空间104中的方式来间接地与服务元组143交互。
例如,诸如相应客户机设备101之类的客户机可以创建类A的具有属性“abc”和“123”的数据元组144,并将该元组放置在元组空间104中。由此,可以使用以下注记来描述数据元组144:
(A,“abc”,123)。
服务元组143是能按与客户机应用相同的方式来与元组空间104交互的活对象。由此,在此示例中,服务元组143已被实例化并正阻塞在要从元组空间104读任何具有关于类“A”的匹配模板和任何属性的元组上。此类匹配准则可以如下来描述:
(A,?s,?x)
其中?s和?x意味着串s和整数x的任何值都将匹配得上。因此,元组空间104匹配来自服务元组106的模板,并且将随后从元组空间104读取元组A。以此方式,所描述的方面向服务传递元组形式的参数。
另外,在系统100中,将代表用户接口108的对象嵌入服务对象本身中是可能的。考虑以下用户接口服务元组:
(A,[Java],[Flash],[uiOne])
例如,服务元组143可包含三个用户接口对象,诸如用户接口A属性(例如,在JAVATM中定义)、用户接口B属性(例如,在ADOBE FLASH中定义)和用户接口C(例如,在加利福尼亚州圣地亚哥的QUALCOMM公司的uiOneTM技术中定义)。在移动性的上下文中,本发明的这些方面使得能够跨各种各样的无线设备来供应服务,其中每个无线设备具有其自己专门的要求,无论是在对诸如Java、Flash或uniOne之类的不同技术的支持、还是甚至在单种技术的多个变体的意义上,其中该多个变体可任选地包括针对屏幕大小或其他因设备而异的性质的优化。各客户机设备(和相应的应用)101和/或系统100的任何其他方由此能够定位到用户接口服务对象并随后从其加载用户接口组件。
可以直接由诸如无线设备之类的相应客户机设备101,或者替换地由运营商网关136之类的数据源(作为客户机设备101与之交互的服务、或者连接至与客户机设备101交互的服务的服务)来将数据元组144放置在元组空间104中。例如,客户机设备101可以是任何类型的计算机化的无线设备,诸如蜂窝电话、卫星电话、PDA、膝上型计算机、等等。
参照图2,例如,通信网络300包括一个或多个客户机设备302,在本例中为无线电话设备,其利用无线网络304来与具有网络设备或服务器308和/或存储设备310和/或数据源312的有线网络306(例如,局域网LAN等)通信。网络设备/服务器308和/或存储设备310中的一者或其两者可包括元组空间104、以及系统100的以上所讨论的组件中的一些部分。进一步,数据源312可包括处理器和与该处理器处于通信的存储器,其中该存储器包括具有元组生成逻辑的元组生成模块,该元组生成逻辑能作用于从任何能作用于容易地与诸如基于web的交易服务之类的未知服务接口的数据源来生成多个数据元组。具体地,无线设备101包括计算机平台314,该计算机平台314具有诸如经由应用编程接口(API)320来与处理器318处于通信的存储器316,该API 320使得能够与诸如位于元组空间104中的客户机标识组件322和搜索服务接口324之类的任何驻留应用交互。
另外,网络设备或服务器308和/或存储设备310和/或数据源312可包括处理器和与该处理器处于通信的存储器,以及存储在该存储器中且可由该处理器执行的接口、搜索和评级模块(未描绘),其中该接口、搜索和评级模块包括如以上所描述的元组空间104、服务元组143和评级服务元组118。无线网络304经由承运商网络326连接至有线网络306。网络设备或服务器308和/或存储设备310和/或数据源312可以存在于具有提供社区管理能力和/或蜂窝电信服务所希望有的任何其他网络组件的通信网络300上。网络设备或服务器308和/或存储设备310和/或数据源312可以通过数据链路328和330与承运商网络326通信,数据链路328和330可以是诸如因特网、安全LAN、WAN或其他网络之类的数据链路。承运商网络326控制向移动交换中心(MSC)332发送的消息(一般为数据分组)。另外,承运商网络326藉由诸如因特网和/或POTS(普通老式电话业务)之类的网络330来与MSC 332通信。例如,在网络330中,网络、或因特网部分传输数据并且POTS部分传输话音信息。MSC 332可以由诸如用于数据传输的数据网络和/或因特网部分、以及用于话音信息的POTS部分之类的另一网络336连接至多个基站(BTS)334。BTS 334最终例如分别使用诸如码分多址(CDMA)和短消息服务(SMS)之类的预定话音和/或数据分组服务、或者任何其他越空方法来无线地向无线通信设备302广播消息。由此,通信网络300结合系统100(图1)允许基于在元组空间中的数据对象之间所发现的关系来发现、创建和管理电子或在线用户媒体接入。
应当注意,图5是更全面地解说无线通信网络的组件和本系统的一个方面的元件的相互关系的代表图。通信网络300仅是示例性的并可包括任何系统,诸如无线通信设备302之类的远程模块藉由该系统在彼此之间及之中和/或在包括但不限于无线网络承运商和/或服务器的无线和/或有线网络的其他组件之间及之中越空地通信。
在图3中,解说性移动通信设备400可用作用于经由图形用户界面(GUI)402来远程地接入和控制持久消息收发服务的客户机设备,该GUI 402可包括诸如带有四个光标键406和选择按钮408以及左、中和右菜单按钮410、412和414的拨号音多功能(DTMF)按键板404之类的物理控件。替换地或补充地,GUI 402可以是触摸屏。GUI 402可包括如所描绘的显示器416。替换地,具有触摸屏能力的显示器也可被用来提供软输入控件(未示出)。显示器416可以描绘在消息收发选项卡420、播放器选项卡422、寻找选项卡424和链接选项卡426的选项卡阶层下组织的动态消息收发接口418。接口418可包括由用户从不同设备(未示出)作出的历史对话线程428。这些线程可以分别经由菜单选项428、430和432来定位、选择、保存。
GUI 402还可提供设置个人兴趣的机会,如434处所描绘的那样。可以基于纳入到用户元组116(图1)中的由“选择兴趣”控件434来设置的兴趣132来接收广告条幅436,广告条幅436可以是交互式的。类似地,可以基于纳入到用户元组116(图1)中的由“选择兴趣”控件434来设置的兴趣132来呈现呼喊消息138。
鉴于以上描述的示例性系统,已参照若干流程图来描述可以根据所公开的主题内容来实现的方法体系。尽管为使解释简单化将这些方法体系图示并描述为一系列框,但是应当理解并领会所要求保护的主题内容不受框的次序所限,因为一些框可按不同次序发生和/或与来自本文中描绘和描述的其他框并发地发生。不仅如此,实现本文中描述的方法体系不一定需要所解说的框的全体。另外还应该领会,本文中所公开的这些方法体系能够被存储在制造品上,以便于把此类方法体系输送和传递给计算机。如本文中使用的术语制造品旨在涵盖可以从任何计算机可读设备、载体、或介质访问的计算机程序。
在图4-5中,描绘了由用户“A”702、用户“B”704、用户“C”706和第三方708经由即时消息收发网关710与主存元组空间714的服务器712交互的解说性方法体系700。由元组空间714提供的持久消息收发服务716向订户群体718提供个人、群、呼喊、和广告持久消息收发服务。
首先参照图4,如在720处所描绘的,用户A 710通过向即时消息收发网关710传送的方式来登录持久消息收发服务。如在722处所描绘的,网关710使状态服务元组将用户元组添加至元组空间714,并且如在724处所描绘的,使联系人服务元组找到用户A的伙伴。如在726处所描绘的,匹配的用户元组由元组空间714返回给即时消息收发网关710,该即时消息收发网关710进而如在728处所描绘的那样向用户B 704并且如在730处所描绘的那样向用户C706通知用户A在线。如在732处所描绘的,由网关710放置的历史服务元组找到用户A 702的近期的消息元组,这些消息元组如在734处所描绘的那样由元组空间714返回。
如在736处所描绘的,网关710向用户A 702返回近期的用户/群对话线程。为继续进行对话,用户A 702如在738处所描绘的那样向网关710发送旨在送给用户B 704的消息。网关710如在740处所描绘的那样使消息服务为此消息添加消息元组到元组空间714中并且如在742处所描绘的那样向用户B704中继该消息。
如在744处所描绘的,用户A还可以通过向网关710发送旨在送给包括用户B 704和用户C 706的群Z的消息来继续群Z的群对话。网关710如在746处所描绘的那样使消息服务为此群消息添加消息元组到元组空间714中并且如在748处所描绘的那样向用户B 704和如在750处所描绘的那样向用户C706中继该群消息。
除了个人消息和群消息之外,持久消息收发服务还可以支持对那些共享兴趣而并非是定义的群的一部分的用户的呼喊消息。如在752处所描绘的,第三方向网关710发送呼喊消息,网关710如在754处所描绘的那样使呼喊服务元组找到具有匹配的兴趣的用户元组。
继而参照图5,元组空间714如在756处所描绘的那样向网关710返回匹配的用户元组。网关710进而向那些标识出的用户,如分别在758处和760处所描绘的那样向用户A 702和用户C 706中继散置在用户对话中的有目标的(呼喊)消息。
除了个人、群、和呼喊持久消息收发之外,如在762处所描绘的,第三方708还可以向网关710发送有目标的广告(“广告”)。作为响应,网关710如在764处所描绘的那样使呼喊服务在元组空间714中找到具有匹配的兴趣的用户元组,该元组空间714进而如在766处所描绘的那样返回匹配的用户元组。网关710向标识出的用户,如分别在768和770处所描绘的那样向用户A 702和用户B 704散布这些有目标的消息(广告)。
当用户A如在780处所描绘的那样使注销指示去往网关710时,网关710如在782处所描绘的那样使状态服务元组将该用户元组从元组空间714移除。网关710如在784处所描绘的那样使联系人服务元组在元组空间714中找到用户A 702的伙伴。进而,元组空间714如在786处所描绘的那样向网关710返回匹配的用户元组。网关710如分别在788和790处所描绘的那样使用这些标识出的伙伴来向用户B 704和用户C 706发送用户A 702离线的消息。
结合本文中公开的方面描述的各种解说性逻辑、逻辑板块、模块、以及电路可用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或其设计成执行本文中描述的功能的任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,处理器可以是任何常规的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如DSP与微处理器的组合、多个微处理器、与DSP核心协作的一个或更多个微处理器、或任何其他此类配置。此外,至少一个处理器可包括能作用于执行以上所描述的步骤和/或动作中的一个或更多个步骤和/或动作的一个或更多个模块。
此外,结合本文中公开的方面描述的方法或算法的步骤和/或动作可直接在硬件中、在由处理器执行的软件模块中、或在这两者的组合中实施。软件模块可驻留在RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM、或本领域中所知的任何其他形式的存储介质中。示例性存储介质可被耦合到处理器以使得该处理器能从/向该存储介质读写信息。在替换方案中,存储介质可以被整合到处理器。另外,在一些方面,处理器和存储介质可驻留在ASIC中。另外,ASIC可驻留在用户终端中。在替换方案中,处理器和存储介质可作为分立组件驻留在用户终端中。另外,在一些方面,方法或算法的步骤和/或动作可作为一条代码和/或指令或代码和/或指令的任何组合或集合驻留在可被纳入计算机程序产品中的机器可读介质和/或计算机可读介质上。
尽管前面的公开讨论了解说性方面和/或版本,但是应注意,可在其中作出各种变更和改动而不会脱离所描述的方面和/或如所附权利要求定义的方面的范围。此外,尽管所描述的方面和/或形态的要素可能是以单数来描述或主张权利的,但是复数也是已构想了的,除非显式地声明了限定于单数。另外,任何方面和/或形态的全部或部分可与任何其他方面和/或形态的全部或部分联用,除非另外声明。
应当领会,被宣称通过引用而纳入本文的任何专利、出版物、或其他公开素材的全部或部分仅被纳入到使所纳入的素材不与在本公开中所阐述的存在的定义、语句、或其他公开素材相冲突的程度。因此,并且在必要的程度上,在本文中显性地阐述的公开内容取代通过引用而纳入本文的任何冲突的素材。被宣称通过引用而纳入本文的但与在本文中所阐述的存在的定义、语句、或其他公开素材相冲突的任何素材或其部分仅被纳入到在所纳入的素材与存在的公开素材之间不发生冲突的程度。