对等通信系统的制作方法

文档序号:6568480阅读:239来源:国知局
专利名称:对等通信系统的制作方法
对等通信系统发明背景计算机系统广泛地用于数据通信并用于提供依赖于不同位置上各计算设备之 间数据交换的许多商业和个人应用程序。因特网是广泛使用的通信网络的一个示 例。这些网络包括多个互连的服务器和其他设备,可以向这些服务器和其他设备发 送数据或由连接至网络的其他设备从中获取数据。为了实现指向网络内特定设备的 网络通信,可向每个设备分配一网络地址。每个地址同时是唯一且永久的,意味着 在网络上发送的任何消息都包含总是要被路由至指定设备的该设备的地址。依赖于网络通信的许多应用程序的用户作为"对等体(peer)"连接至网络。在 此上下文中,"对等体"指的是包含通常可由单个用户通过其获取对网络的访问的硬 件和软件的平台。结果,在网络上可以存在比诸如服务器的其他设备多得多的对等 体。因为网络可用的地址数通常有限,所以常常没有足够的网络地址为每个对等体 分配唯一的网络地址。并非为其分配唯一和持久的地址,每个对等体常规上通过诸如路由器的执行 网络地址翻译(NAT)的设备连接至网络。路由器具有唯一且永久的网络地址以 使得在网络上发送的消息可寻址至该路由器。而该路由器又经子网连接至多个对等 体。每个对等体可被分配仅在该子网中有意义的地址。在对等体发送针对经网络传送的消息时,它可以插入其子网地址作为消息从 何处发送的地址。路由器经子网接收这些消息并将它们转发到网络上。在转发消息 之前,路由器将对等体的子网地址翻译成可被识别为有效网络地址的其自身的地 址。处理消息的服务器和其他网络设备可以使用该消息内的地址以将一响应导向 该原始消息的发送者。因此,路由器接收针对通过其子网连接的任何对等体的所有 响应。路由器随后经其子网转发这些消息,但首先是将每个进入消息中的地址翻译 为意欲接收该消息的对等体的子网地址。以此方式,每个对等体可以经网络发送消 息并接收响应。但是,因为对等体的地址不是唯一且永久的,所以网络设备难以发起与对等体的通信。为了发起与对等体的通信,另一对等体或网络设备需要发现用于向该对 等体发送消息的地址。避免对地址发现的需要的一种方法是通过使用存储转发消息收发系统。存储 转发消息收发系统利用在网络内具有唯一和永久地址的中继服务器。针对一对等体 的消息可被发送至中继服务器,后者则存储该消息。中继服务器等待该消息意欲发 送的对等体发送一消息至该中继服务器来要求针对该对等体的任何存储的消息。这 一消息会包括中继服务器可用其将响应导向该对等体的地址,并且该中继服务器可 以将针对该对等体的任何存储的消息作为响应发送给该消息。为了存储转发系统能够工作,中继服务器必须能够标识这些消息所针对的特 定对等体。为了标识对等体,中继服务器可以建立其自身的寻址机制。因为这些地 址不被用作网络地址,所以中继服务器不受分配地址中可用网络地址有限的约束。电子邮件是存储转发收发系统广泛使用的一个示例。电子邮件服务的每个用 户都具有一电子邮件地址,该地址可由中继服务网和其他对等体用于将消息路由至 用户从中访问电子邮件系统的对等体。其他的网络寻址机制是已知的。某些消息收发提供方使用为每个对等体分配 网络地址的网络。例如,蜂窝电话系统为每个对等体分配唯一且永久的地址(即, 电话号码),允许文本消息以SMS格式从一个对等体传送至另一对等体而无需中 继服务器的介入。作为另一示例,即时消息收发使用另一种方法来提供向对等体的消息实时传 输。在即时消息收发格式中,可用于接收消息的对等体向由消息提供方操作的中继 服务器标识其自身。 一旦中继服务器获得可通过其将消息发送至对等体的地址,则 该地址就被提供给希望与该对等体通信的其他对等体。发明概述本发明涉及对等通信。在一个方面,编程接口被提供给可以接收或发送数据 的每个对等体上的通信组件。该接口使得要求对等通信的应用程序程序的创建更为 便利。通信组件可以使用出于在对等应用程序之间通信数据之外的其他原因而在对 等体上访问的消息收发提供方来发送和接收消息,以允许在不消费实质通信资源的情况下实现对等应用程序,这对诸如智能电话、PCA和袖珍式PC之类的资源受限的设备尤为重要。使用现有的消息收发提供方发送对等应用程序数据也通过使用业已建立的寻址机制而简化了通信。在另一方面,通信组件可以聚集从多个消息收发提供方接收的消息或者从多 个消息提供方中选择一个消息提供方来发送消息。这一结构允许消息收发提供方提 供带有不同特性的服务,这些特性可用来达到各种应用程序的需要,或者达到同一 应用程序在不同时刻的需要,诸如通过允许消息提供方供应不同的传输特征用以被 用于为同一应用程序传送不同的消息类型。以上概述并不限制由所附权利要求定义的本发明。附图简述附图不旨在被按比例绘制。在附图中,各个附图中示出的每一完全相同或近 乎完全相同的组件由同样的标号表示。为清楚起见,不是每个组件在每张附图中均 被标号。附图中

图1是对等网络的略图;图2是示出了在图l对等网络中使用的软件架构的图示;图3是示出了与具有图2架构的软件相关联的数据结构的略图;图4是由对等体用于发送消息的进程的流程图;以及图5是用于接收消息的进程的流程图。详细说明人们已经认识到能够从提供依赖于对等通信的应用程序中获得显著的益处。 通过为这些应用程序提供简单的交换数据方法,就能够更容易地开发用于对等环境 的应用程序。如下将进一步详述,提供编程接口以允许应用程序程序使用现有消息收发提 供方来发送和接收数据。接口允许在每个对等体上运行的应用程序以一种与应用程 序向数据存储中存储信息并从中检索信息极为类似的方式来与其他对等体交换数 据。应用程序开发者由此就无需理解网络寻址或与网络通信相关联的复杂事务。作 为进一步的优势,使用现有的消息收发提供方就能够基于对等通信大幅降低应用程 序的大小。这一大小的降低在资源受限的系统中尤为重要。因此,提供一种通过其 消息收发提供方可被轻易访问的应用编程接口就能使得用于便携电子设备的对等 应用程序的开发更为便利。此外,编程接口还能让与其地址通常由其消息收发提供方掩码的设备进行通信变得更为便利。例如,当前用于蜂窝消息收发提供方的寻址技术不提供从应用程 序到特定被访地址()的便捷通信机制。本发明的一个实施例可用于如图1所示的对等网络100。对等网络100具有多个对等体,诸如对等体110A和110B。每个对等体可以是台式计算机或者是任 何其他可由网络启用的计算设备。诸如110A和110B的对等体可以通过消息收发 提供方120通信。在此示例中,消息收发提供方120提供存储转发型的电子邮件系统。消息收发提供方120在此示例中使用因特网140来传送电子邮件消息。每个 对等体IIOA和110B都通过执行网络地址翻译的设备连接至因特网140,因此不 具有固定的因特网地址。在此示例中,对等体IIOA和IIOB通过执行网络地址翻 译的路由器U2A和112B连接。消息收发提供方120包括中继服务器130。在此示例中,中继服务器130是 邮件服务器。中继服务器130具有固定的因特网地址,使得任何对等体可以初始与 其的通信。每个对等体IIOA和IIOB都可以包括在其上可以存储数据和计算机可执行指 令的计算机可读介质。每个对等体110A和IIOB上的计算机可读介质的某些部分 可以实现使用消息收发提供方120发送或接收电子邮件消息的消息收发客户机230 (图2)。例如,对等体110A上的消息收发客户机230可以接收指定要被发送的 电子邮件消息和该消息要被发送到的地址的用户输入。消息收发客户机随后可以通 过路由器112A将消息发送给中继服务器130。如果电子邮件消息针对通过对等体 IIOB访问网络的用户,则对等体110B上的消息收发客户机230 (图2)就可以通 过路由器112B来访问中继服务器130以便从服务器130接收电子邮件消息。以此 方式,电子邮件消息就从对等体HOA发送至对等体UOB。可以采取相反的步骤 以便将消息从对等体110B发送至对等体IIOA。为了便于在对等体110A上运行的应用程序的组件与在对等体110B上运行的 应用程序的组件之间共享应用程序数据,对等体110A上的通信客户机230就可以 将包含应用程序数据的消息发送给中继服务器130。类似地,对等体110B上的通 信客户机230可以从中继服务器130检索包含应用程序数据的消息。通信客户机 230随后可以使得该数据对于对等体110B上的收件人应用程序组件可用。以此方 式,可在对等体110A上的对等体应用程序组件和对等体110B上的对等体应用程 序组件之间建立虚拟链路114。类似地虚拟链路可以在能够访问消息收发提供方120的任何两个或更多对等体之间建立。对等网络100还可以包括其他的消息收发提供方来用于应用程序数据的传 送。在图l的示例中,示出了消息收发提供方160。在此实施例中,消息收发提供 方160使用蜂窝电话系统传送消息。消息收发提供方160操作多个接入点,诸如接 入点170A和170B。接入点可用消息收发主干线180互连。在此示例中,消息收 发提供方160是由蜂窝电话公司管理的网络,并且可以传送包括文本消息在内的多 种消息。消息收发提供方160的用户通过可以是蜂窝电话、智能电话或配备用于发 送和接收消息的其他设备的对等体来访问网络。在此示例中,示出对等体150A和 150B作为被构造以SMS格式接收消息的便携式手持电子设备。消息收发提供方120和160是用来在不同网络对等体上运行的各应用程序组 件之间通信数据的消息收发提供方的示例。可以使用任何合适的消息提供方。如在 此所述一种使用相对较少资源进行对等通信的简单方法是对基于便携式计算设备 的对等体尤为期望的。这些设备通常连接至根据诸如IMAP、 P0P3、 SMTP、 SMS、 HTTP、 TCP/IP和MMS等协议操作的消息收发提供方。消息收发提供方可以通过web服务或其他合适途径而被间接访问。在网络 100,对消息收发提供方160的访问由通过服务器190提供的web服务连接至因特 网140的设备进行。服务器190连接至消息收发提供方160主干线180。服务器 190可以发送寻址至由消息收发提供方160连接至主干线180的任何对等体(诸如, 150A和150B)的消息。此外,服务器l卯具有由消息收发提供方160识别的网络 地址并且可以接收来自通过消息收发提供方160连接的对等体150A和150B的消 息。服务器190还可以通过对因特网140的连接来耦合至诸如对等体110A和 IIOB的对等体,并且与连接至因特网140的任何对等体交换消息。这些对等体可 以使用由服务器190提供的web服务以使用消息收发提供方160来发送和接收消息。服务器l卯互连消息收发提供方120和160,并且可以使用一个消息收发提 供方将发送的消息转发给经另一消息收发提供方接收消息的对等体。因特网140 和主干线180之间的交叉耦合允许数据从连接至因特网140的对等体发送到连接至 消息收发提供方160的对等体。虚拟链路154示出了对等体110B和对等体150B 之间的通信是可能的。类似的虚拟链路可用于在连接至不同消息收发提供方的对等 体之间的应用程序数据的传输。转到图2,示出了消息收发客户机230的软件架构。这一消息收发客户机可以在期望通信的任何对等体上使用。消息收发客户机230可以在其上执行诸如应用 程序210A…210D的各应用程序的对等体上使用。这一对等体也可与电子邮件用户 界面250 —并编程以提供电子邮件通信。消息收发客户机230使用多个消息收发提供方,诸如消息收发提供方220A、 220B、 220C和220D来促进通信。这些消息收发提供方例如可以是提供对电子邮 件消息收发系统访问的因特网服务提供方、提供对SMS消息收发系统访问的蜂窝 电话公司、或者现在已知或今后开发的任何其他的消息收发提供方。这一消息收发 提供方不必是商业实体,并且网络对等体通过其发送消息的任何机制都可认为是 "消息收发提供方"。消息收发提供方也不一定是由单个实体建立的。"消息收发提 供方"可以是由不同实体拥有或操作的交互用以传输消息的组件的集合。在示出的实施例中,消息收发客户机230可以被实现为存储在与对等体相关 联的计算机可读介质上的多个计算机可执行指令。在对等体被实现为在台式计算机或其他计算设备上执行的软件时,计算机可读介质可以是计算设备中的计算机存储器。计算机可执行指令可以由任何期望的编程语言准备并且可以在存储到计算机可读介质内之前被转换为机器码或可执行码,或者可以在运行时被解释或应用于JIT编译器以导出可执行码。在图2中,计算机可执行指令标记消息收发客户机230可以被组织为多个模块,每个模块都可执行与该消息收发客户机相关联的功能。每个模块可以根据用于创建模块的编程语言的构造来与其他模块交互。例如,每个模块都可以包含被暴露 给其他模块的函数调用,以使得一个模块的函数都可从另一模块中调用。作为替代,该模块可以用解析为链接一部分的从一个模块到另一模块的参考而被链接入一个 可执行文件。作为另一替代,每个模块可以是在执行时被动态链接的模块库的一个 元素。因此,可以使用在其中每个模块都被实现并且在其中各模块的交互都不是对 本发明至关重要的特定形式以及任何合适的方法。在图2中示出的模块之一是消息收发聚集器232。消息收发聚集器232用作 对多个消息收发提供方220A…220D的接口。它包括收件箱236和发件箱234。消 息收发聚集器232可被构造为使用已知技术与各个消息收发提供方交互。然而,消 息收发聚集器232提供与多个消息收发提供方交互的机制。在示出的实施例中,消 息收发聚集器232包括通过其可从任何消息收发提供方接收消息的收件箱236以及 通过其可使用任何消息收发提供方发送消息的发件箱236。收件箱236可以接收来自所有消息收发提供方220A...220D的消息并且在存 储器中缓冲这些消息直到由电子邮件用户界面250或诸如210A…210D的应用程序 处理。消息可以连同对消息源的指示一并存储,它可以包括对通过其接收消息的消 息收发提供方的指示。这一指示可以被显式地存储或者可从存储的其他信息中隐式 地表示。例如,消息可以包括对消息来源地址的指示,它可以指示发送该消息的消 息收发提供方。发件箱234可以接收来自电子邮件用户界面250或应用程序210A...210D的消息并且在存储器中缓冲这些消息直到它们被发送。发件箱可以缓冲要经任何消息 收发提供方传输的消息。要传输的每个消息可以与诸如对要经其传输的消息收发提 供方的指示之类的消息路由信息一并存储。这一指示可被显式地包括在消息内或者 可被隐式地包括,诸如通过以标识通过其发送这一消息的消息收发提供方的格式来 指示该消息的目的地地址。为了方便提供消息路由信息,消息收发客户机230包括消息路由信息模块 242。消息路由信息模块242可以包含与每个被访地址的路由信息相关联的被访地 址目录。路由信息可以包括对把消息传输至各地址有用的一个或多个被访地址。该 路由消息可以显式地指定能够将消息携带至该被访地址的消息收发提供方。作为替 代或者附加,也可以基于存储的地址格式隐式地提供路由信息。在某些实施例中, 消息路由信息模块242可以包括与传输至单个被访地址的多于一个模式有关的路 由信息,从而允许消息收发客户机230选择对于被递送消息的形式最为合适的消息 收发提供方,或者在消息无法经首先选择的消息收发提供方递送的情况下使用替换 的消息收发提供方。发件箱234可以使用路由信息来设置使用消息收发提供方 220A...220D之一来传输的消息的格式。图2示出了便于计算机应用程序之间对等消息的消息收发客户机230的附加 模块。在示出的实施例中,消息收发客户机230包括消息分派器238、注册表240 以及便于消息收发客户机230与电子邮件用户界面250或应用程序210A、 210B、 210C和210D之间通信的应用编程接口 (API) 244。在此示例中,应用程序210A、 210B、 210C和210D表现为可以在对等体上 执行的任何应用程序。应用程序可以是诸如字处理程序或电子数据表的数据处理应 用程序。在此示例中,数据处理应用程序可以按在其中从另一对等体获取数据或向 其发送数据的对等模式来操作。数据可被发送至相应的数据处理应用程序或者生成 或使用数据的任何其他应用程序,或者从该应用程序中被接收。然而,本发明不限于结合数据处理应用程序使用,并且应用程序210A、210B、 210C和210D可以是能够在对等模式中操作的现在己知或将来开发的任何应用程 序。例如,应用程序210A、 210B、 210C和210D的部分或全部可以是游戏或者其 他娱乐用对等应用程序。在其中应用程序是游戏的实施例中,对等网络100内的对 等体各自可配备有游戏应用程序的组件。在对等体之间发送的数据可以表现为在游 戏中"移动"或其他游戏信息。电子邮件用户界面250包括将用户界面呈现给其上安装有消息收发客户机 230的对等体的人类用户的软件。该界面的确切形式可以依赖于对等体计算机处理 器的硬件组件,诸如通过鼠标或其他定位设备激活的在显示器上呈现的图形用户界 面、通过键盘访问的文本界面、或者通过音频界面服务的自然语言界面。电子邮件 用户界面250也接收来自人类用户的指定要发送电子邮件消息的内容以及有关该 消息的路由信息的文本或其他输入。电子邮件用户界面250和每个应用程序210A、 210B、 210C和210D可被实 现为包含计算机可执行指令的一个或多个组件。计算机可执行指令可以是任何合适 的计算机语言。这些应用程序是本领域内已知的,并且电子邮件用户界面250和应 用程序210A、 210B、 210C和210D可以使用已知的编程技术来构造。电子邮件用户界面250和应用程序210A、 210B、 210C和210D不同于本领 域内已知的常规电子邮件客户软件和应用程序,因为它们使用API 244发送和接收 消息。API 244提供一种机制,该机制用于应用程序210A、 210B、 210C和210D 向另一对等体上的应用程序组件发送数据或从中接收数据并用于电子邮件用户界面250与其他对等体上的电子邮件客户机发送和接收电子邮件消息。API 244简化 了应用程序的编程和电子邮件客户机的创建,因为它不需要这些程序去包括执行由 消息收发客户机230执行的任何数据通信功能的软件。在某些实施例中,API244提供对应用程序210A、 210B、 210C和210D的接 口,该接口的形式与对数据存储的接口的形式相同。因为数据存储通常在应用程序 中使用,所以API244提供一种机制,用于计算机程序员使用熟悉形式的简单命令 将对等通信合并入一个应用程序。API244还提供用于电子邮件用户界面250的功 能,诸如常规地可在电子邮件客户机中找到的发送和接收消息功能,以及允许电子 邮件用户界面250即使在使用多个消息收发提供方发送消息的情况下仍比传统的 电子邮件客户机更为简单的功能。API 244可以是包含以任何合适的计算机语言编写的计算机可执行指令的模块。在此实施例中,API244可以被动态连接至电子邮件用户界面250和应用程序 210A、 210B、 210C和210D,以使得在API 244中实现的各函数可以从电子邮件 用户界面250和应用程序210A、 210B、 210C和210D中调用。链接还允许应用程 序210A、 210B、 210C和210D和电子邮件用户界面250中的函数从API244内调用。在此实施例中,API244包括可以从应用程序210A、 210B、 210C和210D和电子邮件用户界面250中调用的多个通信函数。 一个这类函数("SEND (发送)" 函数)可以使用该对等体己访问的消息收发提供方来传输数据。为了发送数据, API 244将数据提供给发件箱234。SEND函数可以同步或异步地操作。对于同步操作,函数可以在消息由所选 消息收发提供方发送时返回,由此阻止调用程序的运行直到该传输完成。对于异步 操作,该SEND函数可以操作而不阻止调用程序的执行。发件箱234可以按适当的形式向期望的消息收发提供方提供消息。例如,发 件箱234可以设置消息的格式以带有指示其针对的被访地址、发件人地址、时间戳 或其他期望信息的头部并在消息正文中添加数据。由API 244提供的SEND函数可以对信息收件人的指示作为其一个参数来接 收。收件人可以按任何合适的方式标识。在一个实施例中,收件人被识别为命名的 被访地址并且无需被有关经由消息收发提供方之一连接的对等体的地址所指定。发 件箱234可以从消息路由信息模块242内的记录中确定具有由消息收发提供方 220A.,.220D之一识别的格式的合适地址。以此方式,应用程序信息可以从一个对 等体的应用程序组件发送至另一对等体的应用程序组件,而无需对该应用程序组件 编程以使用对等体地址。为了便于向意欲的应用程序组件递送消息, 一旦消息达到其上执行该应用程 序组件的对等体,就可构造消息收发客户机230以使得用于在对等体应用程序之间 通信的数据在传输前由标识符标记。例如,API 244内的SEND函数在将数据传递 至发件箱234之前,可以附加一应用程序标签,以将数据标识为表示对等通信的数 据。这一应用程序标签还可以标识该数据来源于何种应用程序和/或该数据所针对 的应用程序。作为替代,数据可用应用程序标签来标记,从而将该数据标识为表现 要由电子邮件用户界面250处理的电子邮件消息。一经消息收发提供方220A,…220D接收包含有关应用程序210A、210B、210C 和210D之一数据的消息,通信客户机230就可使用应用程序标签来管理数据对适当应用程序的递送。在图2的实施例中,消息分配器328检索来自发件箱234的消 息并通过API 244将其转发到意欲的收件人应用程序。消息分派器238可以是包括计算机可执行指令的组件,这些计算机可执行指 令监视收件箱236内的消息并且按需基于接收到消息内的应用程序标签将消息内 的数据转发给电子邮件用户界面250或者应用程序210A...210D之一。递送可以由 将数据通过API 244呈现给收件人应用程序的组件的消息分派器238实现。在接收到包含应用程序数据的每个消息时,消息分派器238确定多个应用程 序210A、 210B、 210C和210D中的哪一个要接收来自该消息的数据。在描述的实 施例中,注册表240可由消息分派器238维持以跟踪哪些应用程序可用于接收数据。 如前所述,标识应用程序接收消息内数据的应用程序标签可以在传输之前被附加给 该数据。应用程序标签可以类似地将消息标识为包含电子邮件数据,从而允许消息 分派器238类似地将电子邮件数据连接至电子邮件用户界面250。注册表240可以包含由消息分派器238使用的信息,用以将信息基于应用程 序标签传递给收件人应用程序。例如,每个应用程序可以提供通过其接收数据的函 数。该函数的名称和其他标识符可以结合应用程序标签在注册表240内存储。消息 分派器238可以读取收件箱236中信息内的应用程序标签并且标识注册表240内有 关该应用程序标签的条目。作为注册表240内该条目的一部分,可以提供有关该应 用程序的函数。消息分派器238可以从收件箱236中移除消息并象注册表240中指 示的那样调用有关该应用程序的函数。对于导向电子邮件用户界面250的消息,来 自该消息的数据可以类似地通过在注册表240内标识的电子邮件用户界面250内的 函数来供应。如上所述,来自收件箱236内消息的数据由消息分派器238推入收件人应用 程序。将数据推入应用程序不是必须的。每个应用程序可以拉入数据。为了实现拉 入架构,消息分派器238可以包含可由应用程序210A...210D或电子邮件用户界面 250调用的"RECEIVE (接收)"函数。这一函数可以检查收件箱236内的消息以 标识包含有关该应用程序调用RECEIVE函数的消息。应用程序标签也可用于将收 件箱236内的消息匹配该意欲的应用程序,虽然也可以使用任何合适的途径。API 244也可被编程以包含其他通信函数,例如管理存储在消息路由信息模块 242内信息的函数。例如,API 244可被编程以带有添加或移除消息路由信息模块 242内的记录的函数。这一函数可由接收用户输入的应用程序210八...2100之一调 用,该用户输入指定了在对等网络100中该应用程序将与其交换数据的对等体。相反地,应用程序可以在不再期望与通过在一记录中指定的地址可达到的对等体通信时调用API 244内的函数以从数据结构300中移除该记录。数据结构300中的记录 可以通过由电子邮件用户界面250做出的函数调用而被类似地添加或移除。API 244可以包括被调用来编辑数据结构300内任何记录中的信息的函数。 API 244还可以包含允许应用程序搜索在数据结构300内特定记录的函数。在数据 结构内添加、移除、编辑或搜索记录的函数是已知的。因此,在API244内的这些 函数可以使用现在已知或将来开发的常规编程技术来实现。API 244可以为管理消息收发客户机230提供其他的功能性。例如,API 244 可以提供应用程序可调用以向消息分派器238注册的函数。这一函数可以将包括有 关于该应用程序调用该注册函数的应用程序标签的记录放入注册表240。注册函数 除了关于该应用程序的应用程序标签之外,还可以存储至该应用程序的入口点,而 消息分派器238可以使用该入口点发送来自指向该应用程序的消息的数据。转到图3,示出了消息路由信息模块242的额外细节。消息路由信息模块242 可被实现为任何合适形式的数据结构。图3示出了可被使用的数据结构的示例。数 据结构300可被存储在与其上执行消息收发客户机230的对等体相关联的计算机可 读存储器内。图3的示例示出了包括诸如记录310A、 310B和310C的多个记录的数据结构 300。每个记录可以包含多个字段,在记录310C中这些字段被编号为320C、 322C 和324C。字段320C存储被访地址。被访地址可以被存储为由编码标识符或任何其他合 适方式编码的文本字符串。被访地址无需是可由任何消息收发提供方使用的地址。 例如,被访地址可被指定为人类用户或应用程序组件。字段322C标识消息收发提供方,经该消息收发提供方,消息可被发送至在字 段320C中标识的被访地址。可以使用任何合适的方法来表示消息收发提供方,诸 如通过存储消息收发提供方的名称、与消息收发提供方相关联的代码或者通过其可 访问消息收发提供方的端口。字段324C包括一地址,通过该地址,就可使用在字段322C中标识的消息收 发提供方来访问字段320C内标识的被访地址。数据结构300可以包括在被访地址字段内具有相同值的多个记录,以指示相 同的被访地址可使用多个消息收发提供方来访问。作为替代,数据结构300内的记 录可以具有比指示的更多的字段,从而允许多个消息收发提供方指定一被访地址。转向图4,示出了一进程,通过该进程可将数据作为对等通信的一部分传输。 在此示例中,可以使用操作存储转发消息收发系统的消息收发提供方来传输数据, 虽然可以使用任何合适的消息收发提供方。图4的进程包括在应用程序内执行的用以发送数据的子进程410。在框412,应用程序生成要发送的数据。框412可以表 现为应用程序的常规处理。例如,在字处理应用程序中,处理程序框412可以涉及 获取用户输入,而这能够以任何合适方式来获取。在框414,应用程序通过做出对API 244内SEND函数的调用来开始该传输进 程。在框414做出的对API 244的调用包括将标识被访地址和要发送数据的参数传 递给SEND函数。在此示例中,被访地址信息通过指定应用程序的应用程序标签 来处理远程对等体上的该数据,标识接收该通信的对等体内的另一应用程序组件。随后在消息收发客户机230内执行子进程420。在框414内做出的对API244 的SEND函数的调用导致对消息路由信息模块242的访问。与在框414做出的对 API的调用中指定的被访地址相关联的路由信息从数据结构300中检索。该信息指 定消息收发提供方以及由该消息收发提供方识别的与意欲接收该数据的对等体相 关联的地址。对等体的该地址不必是该对等体的网络地址,而可以是能够由该消息 收发提供方识别的任何地址。例如,当使用存储转发消息收发提供方时,消息可以 首先被传输至中继服务器,并且从中继服务器中检索出该消息的对等体可以是无法 经用于传输该消息的网络来寻址的。在框424,选择消息收发提供方。当在数据结构300内存在单个条目用于被 指定为在框414调用的SEND命令的参数的被访地址的情况下,在框424选择在 该记录内指定的消息收发提供方。在存在有关这一被访地址的多个记录的情况下, 在框424的处理可以涉及执行一算法来选择较佳的消息收发提供方。可以基于传输 等待延迟时间、要通信的数据量、或者与每个消息收发提供方相关联的其他因素以 及期望的传输特性来从多个消息收发提供方中选择传输该消息的消息收发提供方。在框425, 一个或多个应用程序标签被添加至要被传输的数据应用程序标签 可以标识生成该待传输数据的应用程序和/或要接收该数据的应用程序。在框426,消息聚集器232将该数据、该应用程序标签以及该应用程序在其 上执行的对等体的目的地址格式为一消息。消息则具有可由被选择的消息收发提供 方识别的以传输该消息的形式。这一消息例如可以包括其内包含要接收该消息的对 等体的地址的头部。为该被选消息收发提供方将适当格式化的消息被传递给发件箱 234。在框430,发件箱234内的消息可由所选的消息收发提供方发送。在此示例 中,所选的消息收发提供方是存储转发消息收发提供方。因此,使用该消息收发提 供方的消息传输导致在框432该消息被存储在中继服务器上。图4的进程也可用于由电子邮件用户界面250来发送电子邮件消息。当发送 电子邮件时,在框425附加将数据标识为电子邮件消息的应用程序标签。图5示出了一进程,通过该进程由一个对等体发送的数据可由远程对等体上 的应用程序接收并且可以作为图4进程的继续而被执行的。图5的进程在框510 处开始,其中与该对等体相关联的消息收发客户机230的消息聚集器232将消息移 入收件人236。在消息是经存储转发消息收发提供方传送的示例中,框510涉及从 中继服务器中检索消息并将其移入收件箱236。其他消息收发提供方可以利用使得 消息到达收件箱236而无需消息收发聚集器232始发一传输的推入式技术。接下来执行子进程520。在此示例中,子进程520在其上运行有接收该数据 的应用程序的对等体内的消息分派器238中执行。在框522,从收件箱236中读出 消息。在框524,消息分派器238分析该消息的数据部分以读取作为消息传输的一 部分而在框424 (图4)附加至该数据的应用程序标签。消息分派器238把从接收 到的消息中的应用程序标签与存储在前注册表240内的标识码相比较以标识该数 据是针对哪个应用程序。在框526,消息分派器238可以提取接收到的消息的数据部分。该数据用于 在框528调用API 244内的RECEIVE函数。在框528调用的RECEIVE函数接受 在框526提取的数据作为参数。该函数还接受从注册表240中读取的用于标识入口 点的信息作为参数或者通过一种方法来使得标识的应用程序接收消息的其他方法。 在框528做出的对API 244的调用随后使用为该应用程序程序指定的入口点将数据 传送至指定的应用程序。处理随后行进至框530。在框530,接收该数据的应用程序根据该应用程序处 理数据。处理可以独立于数据被传输至该应用程序的方法。至此描述了本发明的至少一个实施例的若干方面,可以理解,本领域的技术 人员可容易地想到各种更改、修改和改进。例如,可以结合作为诸如个人计算机或 智能电话的单个用户设备的对等体来描述本发明。然而,本发明不是如此受限。以 上描述的系统可用于从通常被认为是服务器的设备传输至对等体。在此实施例中, 服务器可以推入通知消息的对等体设备。作为另一个示例,软件可被描述为由多个模块构成。每个模块可以是物理上分开的一组计算机可执行指令,诸如可以按源代码或可执行码的形式被存储在计算机可读介质的分开和可识别部分。然而,模块可以被组合或实现为较大程序的一部分或者一个程序的组件,并且可以不具有可分开标识的结构。在后一种情况下,"模块"可以是较大组件的功能部分。作为一个额外变化的示例,以上描述了在其中消息收发提供方被用于将消息从一个对等体传送至远程对等体的实施例。消息可以按任何方式通信。单个消息也可以使用多个提供方通信。例如,消息可以使用第一电子邮件消息收发提供方来传 输,其中该第一电子邮件消息收发提供方将消息中继至蜂窝电话公司以供递送至远程对等体。因此,任何数目或组合的消息收发提供方或通信信道可以用作消息的消 息收发提供方。此外,可由API或消息收发客户实现的通信功能不限于上述指定的消息。例 如,通信系统的某些组件可以被编程以轮询数据结构300内的被访地址,从而找出 期望和/或能够参与对等通信的被访地址。这一功能对实现多人游戏的应用程序组 件尤为有用。可以轮询各被访地址以找出期望参与游戏的被访地址。即使这一功能没有被实现为消息收发客户机230的一部分,应用程序仍可通过使用从数据结构 300中读取条目的功能来轮询地址并将消息发送给该地址。这样的更改、修改和改进旨在是本公开的一部分,且旨在处于本发明的精神 和范围内。从而,前述描述和附图仅用作示例。可按照众多方式中的任一种来实现本发明的上述实施例。例如,可使用硬件、 软件或其组合来实现各实施例。当使用软件实现时,软件代码可在无论是在单个计 算机中提供的还是在多个计算机之间分布的任何合适的处理器或处理器的集合上 执行。而且,此处略述的各种方法或过程可被编码为可在采用各种操作系统或平台 中任何一种的一个或多个处理器上执行的软件。此外,可使用多种合适的程序设计 语言和/或常规程序设计或脚本工具中的任何一种来编写这样的软件,而且它们还 可被编译为可执行机器语言代码。在此方面,本发明可被具体化为用一个或多个程序编码的一个或多个计算机 可读介质(例如,计算机存储器、 一个或多个软盘、紧致盘、光盘、磁带等),当 这些程序在一个或多个计算机或其它处理器上执行时,它们执行实现本发明上述各 个实施例的方法。这一个或多个计算机可读介质可以是可移动的,使得其上存储的 程序可被加载到一个或多个不同的计算机或其它处理器上以便实现本发明上述的各个方面。此处以一般的意义使用术语"程序"或"软件",来指可被用来对计算机或 其它处理器编程以实现本发明上述的各个方面的任何类型的计算机代码或指令集。 此外,应理解,根据本实施例的一个方面,当被执行时实现本发明的方法的一个或 多个计算机程序不必驻留在单个计算机或处理器上,而可以模块化的方式分布在多个不同的计算机或处理器之间以实现本发明的各方面。计算机可执行指令可以具有可由一个或多个计算机或其他设备执行的各种形 式,诸如程序模块。 一般而言,程序模块包括例程、程序、对象、组件、数据结构 等,它们执行特定任务或实现特定抽象数据类型。通常,程序模块的功能可以按需 在各个实施例中进行组合或分布。本发明的各个方面可单独、组合或使用未在前述实施例中特别讨论的各种安 排来使用,从而并不将其应用程序限于前述描述中所述或附图中所示的组件的细节 和安排。例如, 一个实施例中描述的各方面可使用任何方式与另一实施例中描述的 各方面组合。在权利要求书中使用诸如"第一"、"第二 "、"第三"等序数词来修饰权 利要求元素本身并不意味着一个权利要求元素较之另一个权利要求元素的优先级、 先后次序或顺序、或者方法的各动作执行的时间顺序,而仅用作将具有某一名字的 - 一个权利要求元素与具有同一名字(除序数词的使用之外)的另一元素区分开的标 签以区分各权利要求元素。而且,此处所用的短语和术语是为描述起见而不应被认为是限制。此处对"包 括"、"包含"、或"具有"、"含有"、"涉及"及其变型的使用旨在包括其后 所列的项目及其等效物以及其它项目。
权利要求
1.一种具有计算机可执行组件的计算机可读介质,包括(a)使用多个消息收发提供方中的至少一个来发送和接收消息的通信组件;(b)包括多个条目的数据存储,每个条目包括用于存储被访地址指示的字段、用于存储所述多个消息收发提供方中的消息收发提供方的指示的字段、以及与所述指示的消息收发提供方内的被访地址相关联的地址。(c)将应用程序与使用所述多个消息收发提供方之一接收的消息相关联并且将所述消息提供给所述关联应用程序的路由组件;以及(d)通过其应用程序可以指定通信相关命令的编程接口,所述通信相关命令引起所述通信组件和所述数据存储之间的交互,以执行与所述数据的发送或接收有关的通信功能。
2. 如权利要求l所述的计算机可读介质,其特征在于,所述编程接口适于执 行包括在注册表内制作一条目的通信功能。
3. 如权利要求1所述的计算机可读介质,其特征在于,所述编程接口适于执 行包括使用所述多个消息收发提供方中的消息收发提供方来发送消息的通信功能。
4. 如权利要求l所述的计算机可读介质,其特征在于,所述编程接口适于执 行包括改变所述数据存储内一条目的通信功能。
5. 如权利要求l所述的计算机可读介质,所述计算机可读介质被安装在便携 式电子设备内。
6. 如权利要求l所述的计算机可读介质,另外还包括(e) 用于发送消息的组件,所述消息轮询由所述数据存储内各条目指示的被访 地址来标识期望接收与对等应用程序有关的通信的被访地址。
7. —种在第一对等体上具有第一组件和在第二对等体上具有第二组件的应用 程序之间的通信方法,包括如下动作(a) 将来自所述第一组件的数据提供给所述第一对等体上的第一存储转发消 息收发客户;(b) 用所述第一存储转发消息收发客户从多个消息收发提供方中选择至少一 个消息收发提供方;(c) 使用所述至少一个被选的消息收发提供方将所述数据发送给所述第二对
8. 如权利要求7所述的方法,其特征在于,所述应用程序是多人游戏并且所述提供数据的动作(a)包括提供在所述游戏中表示玩家动作的数据。
9. 如权利要求7所述的方法,其特征在于,所述发送数据的动作(c)包括将所述数据从所述第一存储转发消息收发客户发送至中继服务器并从所述中继服务器 发送至所述第二存储转发消息收发客户。
10. 如权利要求7所述的方法,其特征在于,所述选择的动作(b)包括根据由 IMAP、 POP3、 SMTP、 SMS、 HTTP、 TCP/IP和MMS组成的集合中的协议进行操 作来选择消息收发提供方。
11. 如权利要求7所述的方法,其特征在于,所述提供数据的动作(a)包括通 过定义的接口提供数据。
12. 如权利要求7所述的方法,其特征在于,所述第一存储转发消息收发客 户包括电子邮件程序并且所述方法还包括以下动作(e) 用所述第一存储转发消息收发客户接收用户输入以发送基于文本的消息;以及(f) 经所述多个消息收发提供方之一发送所述基于文本的消息。
13. 如权利要求7所述的方法,其特征在于,所述动作(d)包括基于所述数据 与所述第二应用程序有关的标识将由所述第二存储转发消息收发客户接收到的至 少一个消息选择性地路由至所述第二应用程序组件。
14. 一种对等通信系统,包括(a) 多个消息收发提供方;(b) 耦合至所述多个消息收发提供方至少一部分并包括具有计算机可执行组件的计算机可读介质的第一对等体,所述计算机可执行组件包括(i) 使用所述多个消息收发提供方的至少一部分来发送或接收数据的第 一通信组件,所述第一通信组件具有第一编程接口,通过所述第一编程接口, 数据可被提供以使用所述多个消息收发提供方中的消息收发提供方来传输并 且来自所述多个消息收发提供方的消息收发提供方的信息可被传递给应用程序;(ii) 用于生成和处理应用程序数据的第一应用程序,所述第一应用程序 适于通过所述第一编程接口传递生成的应用程序数据并通过所述第一编程接口接收应用程序数据以供处理;(C)耦合至所述多个消息收发提供方至少一部分并包括具有计算机可执行组 件的计算机可读介质的第二对等体,所述计算机可执行组件包括(i) 使用所述多个消息收发提供方的至少一部分来发送或接收数据的第 二通信组件,所述第二通信组件具有第二编程接口,通过所述第二编程接口, 数据可被提供以使用所述多个消息收发提供方中的消息收发提供方来传输并 且来自所述多个消息收发提供方的消息收发提供方的数据可被传递给应用程 序;(ii) 用于生成和处理应用程序数据的第二应用程序,所述第二应用程序 适于通过所述第二编程接口传递生成的应用程序数据并通过所述第二编程接 口接收应用程序数据以供处理。
15. 如权利要求14所述的对等通信系统,其特征在于,所述第一对等体和所 述第二对等体在所述多个消息收发提供方的至少一个中是不可寻址计算设备。
16. 如权利要求14所述的对等通信系统,其特征在于,所述多个消息收发提 供方的至少一个是存储转发消息收发提供方。
17. 如权利要求14所述的对等通信系统,其特征在于,所述多个消息收发提 供方的至少 一个是实时消息收发提供方。
18. 如权利要求17所述的对等通信系统,其特征在于,所述至少一个实时传 送消息收发提供方使用所述SMS协议。
19. 如权利要求18所述的对等通信系统,其特征在于,另外还包括使用所述 SMS协议以连接至所述至少一个消息收发提供方的web服务,由此所述消息收发 提供方通过所述web服务耦合至所述第一对等体和所述第二对等体。
20. 如权利要求17所述的对等通信系统,其特征在于,所述至少一个实时消 息收发提供方使用IM协议。
全文摘要
一种将应用程序数据从一个网络对等体上的应用程序组件发送至另一个网络对等体上的应用程序组件的对等通信系统。对该通信系统提供编程接口以便于编程依赖于通信的应用程序。通信系统使用每个对等体都会出于对等应用程序组件之间的通信之外的其他目的而连接的消息收发提供方,由此降低对等应用程序层要求用于通信的资源并使得该系统可有利地在便携式电子设备中使用。此外,该通信系统使用已经在每个消息收发提供方中分配的地址,从而允许对等体之间的对等通信可以已经是不可寻址的。
文档编号G06F7/00GK101238435SQ200680028999
公开日2008年8月6日 申请日期2006年7月27日 优先权日2005年8月26日
发明者B·E·约翰森, S·M·德米塞, W·M·辛特尔 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1