无服务器对等系统中的出现监视的制作方法

文档序号:6567259阅读:149来源:国知局
专利名称:无服务器对等系统中的出现监视的制作方法
无服务器对等系统中的出现监视背景基于通信服务例如由MSN⑧通信服务提供的Messenger服务的服务器允许用 户登入基于服务器的网络中,然后使用该网络的服务(例如,电子邮件、文本消息 传送等等)。服务器可以为用户存储一个联系人列表,用户可以该从联系人列表增 加和删除的人员。当用户登入时, 一个或多个服务器可以向该用户的联系人列表中 的人员通知该用户"在线"。同样地,服务器或诸服务器可以向用户通知用户联系 人列表中"在线"的人员。微软⑧(MICROSOFT )公司也提供对等网络软件以供与其WINDOWS⑧操 作系统一起使用。借助于这一系统,用户可以创建一个对等计算机的网络,并且可 以相互通信而不需要登入中心服务器。例如,用户可以创建一个对等群组,然后创 建一个聊天室,在聊天室中该群组的所有成员都可以张贴消息并看到由群组中其他 用户张贴的消息。使用对等计算机维护聊天室而不需要中心服务器。概述描述用于促进对等无服务器系统中的协作和/或通信的系统和方法。该系统可 以将有关与用户实体相关联的出现信息的信息传输到与其他实体关联的其他 计算系统。该系统也可以向与其他实体关联的其他计算系统请求有关与所述其 他实体相关联的出现信息的信息。出现信息通常可以指示实体与例如其他实体通 信和/或协作的意愿和/或能力。附1是一个可以根据权利要求书运作的计算系统的框图;图2是一个可以促进对等无服务器的协作和/或通信的示例系统的框图;图3是一个与监视实体的出现信息有关的示例方法的流程图;图4是一个与允许实体监视用户的出现的示例方法的流程图;图5是一个与监视一个或多个实体的出现信息有关的示例方法的流程图6是一个与将出现信息提供给一个或多个的实体有关的示例方法的流程图; 图7是一个与提供关于实体的出现信息有关的示例方法的流程图;以及 图8是一个与将关于一个用户的出现信息提供给另一个实体有关的示例方法 的流程图。描述尽管下列文本阐明许多不同实施例的详细描述,但是应该理解,该描述的法 律范围由本专利开头所阐明的权利要求书的文字所定义。该详细描述只应被构建为 仅是示例性的,不会描述所有可能的实施例,因为描述所有可能的实施例是即使不 是不可能的也是不现实的。使用当前的技术或在本专利申请日之后开发的技术,可 以实现许多替代实施例,这仍然会落在本权利要求书的范围之内。也应该理解,在本专利中,除非使用句子"如此处所用,术语'一'特此 被定义为意指……"或者类似句子来明确地定义一个术语,否则不管是明确地还是 含蓄地,没有限制该术语意义超出其平常或普通意义的意图,并且,这一术语不应 该被解释为被限制在基于本专利的任何部分中(除了权利要求书的语言之外)所做 的任何声明的范围中。在本专利中以符合单一意义的方式提及在本专利开头的权利 要求书中所陈述的任何术语,在这样的范围内,这样做仅仅是为了清晰起见以便不 使读者混淆,并且,不规定为这样的权利要求术语含蓄地或以其他方式地被限制在 该单一意义。最后,除非通过陈述词语"意指"和没有任何结构的说明部分的函数 来定义一个权利要求要素,否则不规定为任何权利要求要素的范围基于35 U.S.C. § 112申请书的第六段来解释。

图1例示了合适的计算系统环境100的例子,在该计算系统环境中可以实现 用于所要求的方法步骤和装置的系统。计算系统环境100只是合适的计算环境的一 个例子,它并不意味着对权利要求书的装置的方法的使用范围和功能有任何限制。 计算机环境100也不应该被解释为具有与在示例性操作环境100中所例示的任一组 件或它们的组合有关的任何依赖或要求。所要求的方法步骤和装置能够用多个其他通用或专用计算系统环境或配置操 作。适用于使用权利要求书的方法和装置的众所周知的计算系统、环境、和/或配 置的例子包含但不限于个人计算机、服务器计算机、手持式或膝上型设备、多处 理器系统、基于微处理器的系统、机顶盒、可编程的消费性电子产品、网络PC、 微型计算机、大型计算机以及包括任何以上系统或设备的分布式计算环境,等等。
所要求的方法步骤和装置可以在由计算机执行的诸如程序模块的计算机可执 行指令的通用上下文描述。通常,程序模块包括执行特定的任务或实现特定的抽象 数据类型的例程、程序、对象、元件和数据结构等等。也可以在分布式计算环境中 实践诸方法和装置,在这些分布式计算环境中,由通过通信网络而被链接的远程处 理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储器存储设备 在内的本地和远程计算机存储介质中。参见图1,用于实现所要求的方法步骤和装置的示例性系统包括一个以计算机 110形式的通用计算设备。计算机110的组件包括但不限于处理单元120、系统 存储器130、将包括系统存储器在内的各个系统组件耦合到处理单元120的系统总线121。系统总线121可以是包括使用多种总线体系结构中的任一种的存储器总线或存储器控制器、外围总线以及局域总线在内的若干总线结构类型中的任一种。作为例子而非限制,这样的结构包括工业标准体系结构(ISA)总线、微通道体系结 构(MCA)总线、增强ISA (EISA)总线、视频电子标准协会(VESA)局部总线 和也称为Mezzanine总线的外围部件互连(PCI)总线。计算机110通常包括多种计算机可读介质。计算机可读介质可以是能由计算 机110访问的任何可用介质,而且包含易失性/非易失性介质以及可移动/不可移 动介质。作为例子而非限制,计算机可读介质可以包括计算机存储介质和通信介质。 计算机存储介质包括易失性和非易失性、可移动的和不可移动的介质,这些介质用 存储信息如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或 技术实现。计算机存储介质包括但不局限于RAM、 ROM、 EEPROM、闪速存储 器或者其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光盘存储器、磁 带盒、磁带、磁盘存储器或者其他磁性存储设备或者任何其他可以用于存储所需信 息并可由计算机110访问的介质。通信介质一般具体化为如载波或者其他传输机制 等的已调制的数据信号中的计算机可读指令、数据结构、程序模块或其他数据,并 包括任意信息传递介质。术语"已调制的数据信号"是指以在该信号中编码信息的方 式来设置或改变其一个或多个特性的信号。作为例子而非限制,通信介质包括有线 介质如有线网络或者直接有线连接,以及无线介质如声学、射频、红外和其他无线 介质。以上任何一个的组合也应当被包括在计算机可读介质的范围之内。系统存储器130包括易失性和/或非易失性存储器如只读存储器(ROM) 131 和随机存取存储器(RAM) 132形式的计算机存储介质。基本输入/输出系统133 (BIOS)通常被存储在ROM 131中,该基本输入/输出系统包含帮助在计算机110
内的各个元件之间例如在启动过程中传输信息的基本例程。RAM 132通常包含处 理单元120可立即访问和/或目前正在操作的数据和/或程序模块。作为例子而非限 制,图1例示了操作系统134、应用程序135、其他程序模块136以及程序数据137。计算机110也可以包括其他可移动/不可移动、易失性/非易失性的计算机存储 介质。仅仅作为例子,图1例示了从不可移动的非易失性磁介质读取或向其中写入 的硬盘驱动器140、从可移动的非易失性磁盘152读取或向其中写入的磁盘驱动器 151、以及从可移动的非易失性光盘156 (例如,CD ROM或其他光学介质)读取 或向其中写入的光盘驱动器155。可以在该示例性操作环境中使用的其他可移动/ 不可移动、易失性/非易失性的计算机存储介质包括但不限于,磁带盒、闪存卡、 数字多用途盘、数字视频带、固态RAM、固态ROM等等。硬盘驱动器141通常 通过不可移动存储器接口如接口 140连接到系统总线121,而磁盘驱动器151和光 盘驱动器155通常通过可移动存储器接口如接口 150连接到系统总线121。上面所讨论的并且在图1中所示出的驱动器及其相关的计算机存储介质,为 计算机110提供计算机可读指令、数据结构、程序模块和其它数据的存储。例如, 在图1中,硬盘驱动器141被例示为存储操作系统144、应用程序145、其它程序 模块146和程序数据147。注意,这些组件可以等同于或不同于操作系统134、应 用程序135、其他程序模块136和程序数据137。这里对操作系统144、应用程序 145、其他程序模块146和程序数据147给予不同的标号,以说明至少它们是不同 的拷贝。用户可以通过输入设备如键盘162和定位设备161 (通常指鼠标、跟踪球 或触摸板)向计算机20输入命令和信息。其他输入设备(未示出)可以包括麦克 风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其他输入设备往往通 过被耦合到系统总线的用户输入接口 160连接到处理单元120,但也可以通过其他 接口和总线结构如并行端口、游戏端口或通用串行总线(USB)连接。监视器191 或其他类型的显示设备也通过接口如视频接口 l卯连接到系统总线121。除监视器 外,计算机还可包括其它外围输出设备如扬声器197和打印机196,它们可通过输 出外围接口 l卯连接。计算机110可以运行在使用到一台或多台远程计算机如远程计算机180的逻 辑连接的网络化环境中。虽然在图1中仅仅示出了存储器存储设备181,但是远程 计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其他公共 网络节点,并通常包括上文所述与计算机IIO相关的许多或所有元件。图1所描述 的逻辑连接包括局域网(LAN) 171以及广域网(WAN) 173,但是也可以包括其
他网络。这类网络环境常见于办公室、企业范围内的计算机网络、企业内部互联网 和因特网。当用于LAN网络环境时,计算机110通过网络接口或适配器170连接到局域 网171。当用于WAN网络环境中,计算机110通常包括调制解调器172或用于在 WAN 173 (例如,因特网)上建立通信的其他装置。可以内置或者外置的调制解 调器172可以通过用户输入接口 160或其他适当的机制连接到系统总线121。在网 络化环境中,相对于计算机IIO描述的程序模块或它们的部分可以被存储在远程存 储器存储设备中。作为例子而非限制,图1将远程应用程序185例示为驻留在存储 设备181上。应该明白,所示网络连接是示例性的,并且可以使用在计算机之间建 立通信链路的其他方式。图2是一个可以被用来实现在此所描述的示例方法的示例系统200的框图。 系统200可以促进通过通信网络202的对等无服务器经协作和/或通信,而且可以 使用计算系统如图1的计算系统100来实现。通信网络202可以包含例如局域网和 /或广域网。在一些实现中,通信网络202可以被忽略,与其他计算系统的通信可 以例如以点对点方式发生。系统200可以包含监视通信网络202上其他实体的出现的出现系统204。实 体可以是,例如,特定的人、组织中的职位(例如,"经理"、"顾客服务代表" 等等)、组织、设备(例如,打印机、复印机、扫描仪、计算机等等)等。出现通 常可以是指一个实体关于与其他实体进行通信的意愿或能力的当前状态,也可以是 指关于该实体的额外的或可选的信息,例如该实体的当前活动。实体的出现可以由 出现信息表示。出现信息的例子可以包含下列指示中的一个或多个实体"在线" 的指示、实体"离线"的指示、实体"外出就餐"的指示、实体"离开"的指示、 实体将会"很快回来"的指示、实体"空闲"的指示、实体"忙碌"的指示、实体 "在打电话"的指示、实体"在看电影"的指示、实体"在玩Halo⑧"的指示、实 体"在帮助另一客户"的指示等等。上述的诸指示可以包含与出现状态关联的标识 符(例如,数字7指示出现为"在线")、 一个或多个字符串(例如,字符串"在 线")等等。出现信息也可以从一组允许的出现状态中选择,并且/或者用户实体 可以定义(例如)由一个字符串表示的定制出现状态。例如,用户实体可以将定制 出现状态定义为"我不在办公室,明天就回来"。出现系统204获得的出现信息可 以被存储出现存储器208中。出现系统204可以帮助用户实体监视(或"订阅")其他实体的出现信息。
这可以包括出现系统204 (例如)周期性地轮询其他计算系统。附加地或作为其他选择,对应于其他用户实体的其他计算系统可以将诸事件指示传送到系统200,其 中系统200向出现系统204通知这些事件,例如出现状态的改变。例如,当用户的 出现从"离线"变成"在线"时会发生一个事件,并且出现系统204可以检测到这 一事件。然后,出现系统204可以向其他应用程序或软件模块(例如,应用程序 280)通知该事件已发生。出现系统204也可以监视网络上所公布的其他实体的能力。例如,实体的能 力可以包含静态能力,如实体的计算系统是否被配置成执行特定软件应用程序、实 体的计算系统是否拥有特定的硬件设备等等。例如,实体的能力也可以包含动态能 力,如实体关于当前正在该实体的计算系统上执行的游戏软件应用程序的实时能力 等等。网络上的实体公布能力是指到允许其他实体能够通过网络监视能力。出现系 统204所获得的能力信息可以被存储在能力存储器212中。出现系统204也可以监视网络202上所公布的其他实体对象。实体对象可以 包含,例如,数据对象如文件、结构、图片、声音以及如元数据、名称-数值对等 等这样的描述。网络上的实体公布对象是指允许其他实体能够通过网络监视这些对 象。仅仅作为例子,公布一个对象可以允许实体向其他实体提供针对正在被该实体 的计算系统执行的应用程序的信息和/或实时信息。例如对一个游戏应用程序来说, 所公布对象可以包含关于游戏者当前分数、游戏者当前拥有的武器等等的信息。出 现系统204所获得的对象信息可以被存储在对象存储器216中。出现系统204也可以向网络202上的其他实体提供(或"公布")与用户实 体(即是说,与系统200关联的实体)关联的出现信息。与该用户实体关联的出现 信息可以被存储在出现存储器208或其他存储器中。同样地,出现系统204也可以 向网络202上的其他实体提供(或"公布")关于该用户实体能力的信息。与该用 户实体关联的能力信息可以被存储在能力存储器208或其他存储器中。此外,出现 系统204也可以向网络202上的其他实体提供(或"公布")关于该用户实体的对 象的信息。与该用户实体关联的对象信息可以被存储在对象存储器216或某个其他 存储器中。出现系统204可以和存储关于其他实体的信息的联系人存储器240连接。联 系人存储器240可以存储实体的信息,如一个或多个安全标识符、人可读的别名、 这一实体的出现信息是否被监视的指示器、以及是否允许这一实体获得关于该用户 实体的出现信息的指示器。联系人存储器240所表示的一个实体可以被称为一个联系人。出现系统204可以通过联系人管理器250访问联系人存储器240。联系人管理 器250可以提供一组应用程序编程接口 (API),该API允许出现系统204从联系 人存储器240检索信息并可选地修改联系人存储器240。例如,联系人管理器250 可以提供允许增加联系人、更新联系人信息、删除联系人、获取联系人信息、获取 被存储在联系人存储器中的联系人的枚举等等的API。每个实体可以有一个或多个与其关联的通信端点。通常,与实体关联的不同 通信端点可以包含与实体关联的不同通信终端点,如不同的计算系统。例如,特定 实体的端点可以包含办公室的台式电脑、家里的台式电脑、个人数字助理(PDA) 等等。可选地,与实体关联的不同通信端点也可以包含正由单个计算系统执行的不 同的软件应用程序。出现系统204也可以和被耦合到通信网络202的通信模块260连接。通信模 块260可以在系统200和与其他实体关联的其他对等计算系统之间建立连接。建立 连接可以包含,例如,判定与实体关联的端点、解析端点地址、验证通信、加密和 解密通信等等中的一项或多项。在一种实现中,通信模块260可以和本身被耦合到 联系人存储器240的验证系统270连接。在尝试与另一计算系统建立连接时,通信 模块260可以从该另一计算系统接收与实体关联的标识符的指示。然后,验证系统 270可以检查与对应于该标识符的用户实体关联的信息是否被存储在联系人存储 器240中。仅仅作为例子,验证系统270可以检查该标识符是否被存储在联系人存 储器240中。如果发现与对应于该标识符的用户实体关联的信息没有被存储在联系 人存储器240中,那么该连接被拒绝。连接可以是受保护的。建立连接并在该连接上进行通信可以包含以下的一项 或多项例如,使用安全信道、使用安全套接字协议层(SSL)技术、使用传输层 安全(TLS)技术、使用公/私密钥对、使用验证技术(例如,X.509证书、使用优 良保密(PGP)程序的加密签名等等)、使用对等名称解析协议(PNRP)、传输 控制协议(TCP)、网际协议(IP)、网际协议第六版(IPv6)等等。解析端点的 地址可以包含,例如,解析IP地址和端口的PNRP标识符。软件应用程序280或某些其他软件模块可以与出现系统204进行通信以获得 与通信网络202上的其他用户实体关联的出现信息、能力信息和/或对象信息。例 如,出现系统204可以提供一组API,该组API允许软件应用程序和其他软件模块 请求并接收关于与其他用户实体关联的出现、能力和/或对象的信息。出现系统204
可以从出现存储器208、能力存储器212和/或对象存储器216检索所请求的信息。 附加地或作为其他选择,出现系统204可以通过通信模块260和通信网络202从其 他用户实体获得所请求的信息。同样地,软件应用程序280或其他软件模块可以与联系人管理器250通信, 以修改联系人存储器240和/或从联系人存储器240获取信息。软件应用程序280 或某些其他软件模块可以利用由联系人管理器250提供的API来修改联系人存储 器240和/或从联系人存储器240获取信息。图2中的一些方框可以使用远程过程 调用(RPC)技术与其他方框通信,尽管也可以使用在进程内部进行通信的其他技 术。联系人存储器如上面所讨论,联系人存储器240可以包含关于其他实体或联系人信息的存 储器。被存储在联系人存储器中的一些信息可以包含能被用来验证从其他(实体) 所接收到信息的信息。例如,联系人可以给用户提供该联系人的唯一标识符的加密 版本(例如,X.509证书/使用PGP加密的数字签名等等)。该唯一标识符的加密 版本可以被存储在联系人存储器中。在这一实施中,通过例如加密应用程序编程接 口 (加密API),联系人存储器中的至少一些信息可以被检索、更新、删除等等。 在这一实施中,例如,联系人存储器240也可以受到存取控制列表(ACL)的保护, 以使得只有该用户才能从联系人存储器240读取或向其写入。可选地,也可以给其 他人以访问权限,如管理员、监察员、用户所允许的人等等。一个实施例中,对于每一联系人,联系人存储器240可以包括安全唯一标识 符、人可读的联系人别名、联系人的出现是否被监视的指示器以及该联系人是否被 授权监视该用户的出现的指示器。唯一标识符可以通过数字签名来保护,例如 X.509证书等。X.509证书可以是第三方证书,或者可选地,自签署证书。例如, 通过存储X.509证书,唯一标识符可以被存储到联系人存储器240中。唯一标识符 可以包含允许在网络上定位该联系人的多个标识符中的任何一个。例如,唯一标识 符可以包含对等名称解析协议(PNRP)标识符、网际协议(IP)地址等等在一个 实施例中,唯一标识符不能够被用户编辑以维持安全性。例如,别名可以包含人可 以识别的字符串,如"JohnSm他"或"妈妈"。在一些实现中,如果需要,用户 可以修改别名。联系人的出现是否被监视的指示器可以包含,例如,可以被用户设置为"真"
或"假"的布尔变量。作为其他选择,联系人的出现是否被监视的指示器可以包含 一个变量,该变量可以采用更大范围的数值,例如指示在工作时间联系人的出现是 否被监视、联系人的出现是否依赖于其他变量而被监视,等等。联系人的出现是否 被监视的指示器可以包含一个变量,该变量可以假定不同数值指示,例如,联系人 还没有被授权监视该用户的出现、联系人没有被允许监视该用户的出现、或者联系 人被允许监视该用户的出现。可以允许变量附加地或作为其他选择假定其他数值, 例如指示在工作时间联系人可以监视该用户的出现、依赖于其他变量联系人可以监 视该用户的出现等等的数值。与联系人关联的其他信息也可以被存储在联系人存储器240中,如通信地址、 电子邮件地址、电话号码等等。也可以存储联系人的分类信息,例如,该联系人是 否个人联系人、商务联系人、家庭联系人、朋友联系人等等。一个联系人是否被授权监视该联系人的出现的指示器可以包含,例如,指示 联系人是本类目中一个成员的类目的变量,以及指示该类目中的成员是否被授权监 视该联系人的出现的变量。同样地,联系人的出现是否被监视的指示器可以包含, 例如,指示该联系人是其中一个成员的类目的变量,以及指示该类目中的成员的出 现是否被监视的变量。可选地,联系人存储器也可以包含联系人是否被授权监视该用户的能力和/或 对象的指示器,以及联系人的能力和/或对象是否被监视的指示器。例如,联系人 可能已经与联系人是否被授权监视该用户的能力和/或对象的一个或多个指示器关 联起来。同样地,联系人可能己经与联系人的能力和/或对象是否应该被监视的一 个或多个指示器关联起来。作为其他选择,例如,联系人的能力和/或对象是否应 该被监视和/或联系人是否被授权监视该用户的能力和/或对象的判定可以以与以 上所讨论的出现关联的诸指示器为基础。联系人存储器240可以被存储在非易失性存储器内(例如,硬盘、磁盘、光盘、闪速存储器、存储棒等等)以便在计算系统关闭时该联系人信息可以保留。同样地,用户的多个计算系统中的每一个可以存储联系人存储器240的一个版本。可 以使用包括各种已知技术的多种技术中的任何一种来同步多个计算系统上的联系 人存储器,以帮助确保对一个计算系统上联系人存储器240的一个版本所做的更新 可以被传播到或复制到另一计算系统上联系人存储器240的另一版本。联系人管理器和联系人管理器API
如上面所讨论,像出现系统204那样的应用程序和软件模块可以通过联系人管理器250访问联系人存储器240。同样如上面所讨论,联系人管理器250可以提 供一组API,该组API允许应用程序和软件模块在联系人存储器240中读取或修改 信息。这类API的例子将在下面讨论。本领域内的普通技术人员将会理解,附加 地和/或作为其他选择,可以使用其他API并且可以修改在此所讨论的API。 一些 应用程序或软件模块只被允许使用某些API。例如,在特定的实现中只允许一些应 用程序或软件模块在联系人存储器240中修改信息,并且允许其他应用程序或软件 模块只能从联系人存储器240检索信息,这是人们所希望的。通过一个或多个动态 链接库(DLL),应用程序和/或软件模块程序可以使用一个或多个下列示例函数 和/或其他类似函数。作为其他选择,可以使用在本领域中普通技术人员所熟知的 任何其他类型技术来提供诸函数。一个例子是"addcontactfromXML"函数,它允许基于可扩展标记语言(XML) 格式的信息把联系人添加到联系人存储器240。这一函数可以被用于,例如,从另 一计算系统导入联系人信息。在一种实现中,可以向addcontactfromXML函数传递 包含X.509证书的XML数据和(可选地)其他信息。然后分析XML数据,提取 X.509证书。接下来,分析X.509证书以提取该联系人的唯一标识符和(可选地) 其他信息,例如别名。然后,可以判定具有该唯一标识符的联系人是否己经被存储 在联系人存储器240中。如果具有该唯一标识符的联系人己经被存储在联系人存储 器240中,那么不添加联系人,返回一个错误通知。如果具有该唯一标识符的联系 人没有被存储在联系人存储器240中,那么X.509证书可以被存储在联系人存储器 中。例如,可以存储诸缺省值,其中该诸缺省值用于联系人的出现是否被监视的指 示器以及联系人的出现是否被监视的指示器。也可以存储XML数据中的其他信息, 如通信地址、电子邮件地址、电话号码等等。在其他类似函数中,可以以不同于 XML的格式提供联系人信息。另一示例函数是"deletecontact"函数,它允许从联系人存储器240删除联系 人。在一种实现中,可以向deletecontact函数传递该联系人的唯一标识符。然后, 可以判定具有该唯一标识符的联系人是否被存储在联系人存储器240中。如果具有 该唯一标识符的联系人没有被存储在联系人存储器240中,那么返回一个错误通 知。如果具有该唯一标识符的联系人被存储在联系人存储器240中,那么可以从联 系人存储器中删除与该联系人关联的X.509证书。又一个示例函数是"updatecontact"函数,它允许在联系人存储器240中修改
与联系人关联的信息。例如,像这一函数那样的函数可以被用来改变联系人的出现 是否被监视的指示器和联系人是否可以监视该用户的出现的指示器。同样地,像这 一函数那样的函数可以被用来改变联系人信息,如联系人的别名、通信地址、电子邮件地址、电话号码、联系人分类等等。在一种实现中,可以向updatecontact函数传递包含该联系人的唯一标识符和需要更新的信息的数据结构。然后,可以判定 具有该唯一标识符的联系人是否被存储在联系人存储器240中。在其他实现中,可 以向该函数传递除了唯一标识符之外的信息,并且可以使用这一信息在联系人存储 器240中定位该联系人。如果具有该唯一标识符的联系人没有被存储在联系人存储 器240中,那么返回一个错误通知。如果具有该唯一标识符的联系人被存储在联系 人存储器240中,那么数据结构中所传递的信息可以被用来更新联系人存储器240 中的信息。在这一实现中,updatecontact函数不能够被用来修改联系人的唯一标识 符。在其他实现中,也许可以修改该唯一标识符。另一示例函数是"getcontact"函数,它允许与从联系人存储器240检索与联 系人关联的信息。这一函数可以被用来,例如,从联系人存储器240的检索联系人 信息。在一种实现中,向该函数传递该联系人的唯一标识符。然后,可以判定具有 该唯一标识符的联系人是否被存储在联系人存储器240中。在其他实现中,可以向 该函数传递除了唯一标识符之外的信息,并且可以使用这一信息在联系人存储器 240中定位该联系人。如果具有该唯一标识符的联系人没有被存储在联系人存储器 240中,那么返回一个错误通知。如果具有该唯一标识符的联系人被存储在联系人 存储器240,那么(例如)可以在一个数据结构中返回与联系人关联的一些或全部 信息。例如,该数据可以被存储在数据结构中,而且该函数可以返回指向该数据结 构的指针。在一种实现中,如果被传递到函数的唯一标识符是指示需要用户信息的 数值(例如,该唯一标识符是NULL值、用户的唯一标识符等等),那么用户的 联系人信息(例如,包括X.509证书)被返回(即是说,联系人"我")。进一步的示例函数是"getcontactXML"函数,它允许从联系人存储器240检 索与联系人关联的信息。这一函数可以被用来,例如,将联系人信息导出到另一计 算系统。在一种实现中,向该函数传递该联系人的唯一标识符。然后,可以判定具 有该唯一标识符的联系人是否被存储在联系人存储器240中。在其他实现中,可以 向该函数传递除了唯一标识符之外的信息,并且可以使用这一信息在联系人存储器 240中定位该联系人。如果具有该唯一标识符的联系人没有被存储在联系人存储器 240中,那么返回一个错误通知。如果具有该唯一标识符的联系人被存储在联系人
存储器240中,那么与该联系人关联的一些或全部信息可以被存储在XML格式的字符串变量中。然后,例如,该函数可以返回该字符串变量或指向该字符串变量指 针。在一种实现中,如果被传递到函数的唯一标识符是指示需要联系人"我"的数值(例如,该唯一标识符是NULL值、用户的唯一标识符等等),那么联系人"我" 的信息(例如,包括X.509证书)被返回为XML格式化数据。另一示例函数是"enumcontacts"函数,它允许获得被存储在联系人存储器240 中的联系人的指示。在一种实现中,当这一函数被调用时,创建联系人存储器240 中所有联系人的列表。然后,创建包含该列表的对象。接下来,该函数返回该对象 的句柄。然后,这一句柄可以被用来检索联系人存储器240中的联系人的列表。又一示例函数是"getcontactfromXML"函数,它允许从XML格式化数据获 得联系人信息。这一个函数可以被用来,例如,由应用程序或软件模块在将该联系 人信息存储到联系人存储器中之前将所接收到的联系人信息显示为XML格式化数 据。在一种实现中,可以向该getcontactfromXML函数传递包含X.509证书和(可 选地)其他信息的XML数据。然后分析该XML数据,提取X.509证书。接下来, 分析X.509证书以提取该联系人的唯一标识符和(可选地)其他信息,例如别名。 然后,该唯一标识符以及(可选地)其他信息如别名中的一些或全部可以被存储为 一个对象。接下来,例如,函数可以返回该对象或指向该对象的指针。在其他类似 函数中,可以以不同于XML的格式提供联系人信息。也可以提供其他函数。例如,联系人管理器250可以提供判定哪些联系人的 出现被监视的函数。作为另一例子,可以提供判定哪些联系人被允许监视该用户的 出现的函数。联系人管理器250可以向其他应用程序和软件模块通知与联系人存储器240 有关的改变。例如,联系人管理器250可以向一个或多个其他应用程序和软件模块 通知,例如,在新联系人已经被添加到联系人存储器240的时候、在联系人已经被 删除的时候、在联系人己经被更新的时候、在正在被监视其出现的联系人被删除的 时候、或者在联系人的出现是否应该被监视的指示器已经被改变的时候、在已经被 标记为被允许监视该用户的出现联系人被删除的时候、或者在联系人是否被允许监 视该用户的出现的指示器己经被改变的时候,等等。联系人管理器250可以,例如, 把特定类型的事件已经发生(例如,联系人已经被删除)的指示直接地或间接地发 送到多个应用程序和/或软件模块。然后,联系人管理器250可以,例如,在可访 问位置中给出关于该事件(例如,被删除的特定联系人)的更多信息,以使得想要
获得关于该事件的更多信息的其他应用程序和/或软件模块能访问该信息。或者, 联系人管理器250可以将指示事件发生并提供关于该事件的附加信息的信息发送给应用程序和/或软件模块。例如,联系人管理器250可以将信息发送给先前已经指示它们想要接收这种信息的应用程序和/或软件模块。本领域内的普通技术人员将会认识到,联系人管理器250可以用来向其他应用程序和/或软件模块通知关于 联系人存储器240的改变的许多其他技术。图3是示例方法300的流程图,其中该方法用于判定联系人存储器240中的 联系人的出现是否应该被监视,如果是,那么就获取联系人的出现信息。方法300 可以被一个系统例如图2中的系统200执行,并且将会被参照图2描述。在方框 304,出现系统204可以从联系人管理器250请求关于联系人的信息。例如,出现 系统可以利用"getcontact"函数或类似技术。在方框308,联系人管理器250可以 从联系人存储器240检索指定联系人的联系人信息。联系人信息可以包含该联系人 的标识符,其中该标识符可以被用来在网络202上定位该联系人。联系人信息也可 以包含联系人的出现是否被监视的指示。然后,所请求的联系人信息被提供给出现 管理器204。在方框312,可以判定联系人的出现是否被监视。例如,在方框308所检索的 联系人信息可以包含联系人的出现是否被监视的指示器,并且可以检查这一指示器 以判定联系人的出现是否被监视。作为另一例子,在方框308所检索的联系人信息 可以包含联系人是其中一个成员的类目的指示。在一些实现中,判定出现是否被监 视可以包含判定由联系人信息所指示的类目中的联系人的出现是否被监视。例如, 用户可以选择监视"朋友"类目中的所有联系人的出现。如果判定联系人的出现被监视,出现系统204可以在方框316尝试获取联系 人的出现信息。如果判定联系人的出现不被监视,流程结束。图4是示例方法350的流程图,其中该方法用于判定联系人是否被授权监视 用户实体的出现,并且如果是,那么就把出现信息提供给联系人。方法350可以被 一个系统例如图2中的系统200执行,并且将会被参照图2描述。在方框354,出 现系统204可以通过网络202从联系人接收到监视用户实体的出现的请求。例如, 该请求可以包含联系人的己验证标识符。在方框358,出现系统204可以向联系人 管理器250发送关于联系人的信息的请求。例如,出现系统可以利用"getcontact" 函数或类似技术。在方框362,联系人管理器250可以从联系人存储器240检索指定联系人的联
系人信息。联系人信息可以包含该联系人是否被授权监视该用户实体的出现的指 示。然后,所请求的联系人信息被提供给出现管理器204。在方框366,可以判定联系人是否被授权监视用户实体的出现。例如,在方框 362所提供的联系人信息可以包含联系人被授权监视用户实体的出现的指示器,并 且可以检査这一指示器以判定联系人是否被授权监视用户实体的出现。作为另一例 子,在方框362所检索的联系人信息可以包含联系人是其中一个成员的类目的指 示。在一些实现中,判定该联系人是否被授权监视用户实体的出现可以包含判定联 系人信息所指示的类目中的诸联系人是否被授权监视用户实体的出现。例如,用户 可以选择授权"朋友"类目的联系人监视该用户的出现。如果判定该联系人被授权监视该用户实体的出现,出现系统204可以在方框 370尝试通过网络202把出现信息发送给该联系人。如果判定该联系人没有被授权 监视用户实体的出现,在方框374通过网络202给该联系人发送拒绝。出现系统如上面所讨论,出现系统204可以监视通信网络202上的其他实体的出现并 且可以向其他实体公布用户的出现。此外,出现系统204可以监视其他实体的能力 和/或对象,并且可以公布该用户的能力和/或对象。同样如上面所描述,出现系统 204可以存储分别在出现存储器208、能力存储器212和对象存储器216中的关于 用户实体和其他实体的出现信息、能力信息和/或对象信息。在一些实现中,实体可以具有与其关联的多个端点(例如,家里的计算机、 办公室的计算机、PDA等等)。在这些实现中,出现系统204可以包含端点管理 器,该端点管理器可以判定与联系人关联的一个或多个端点。对于联系人的每个端 点,出现系统204可以存储信息,例如地址和/或端口号,以使得可以建立连接并 与该端点进行通信,以及(可选地)该端点的人可读的名称(例如,"家"、"办 公室"、"PDA"等等)。如果端点的(例如)地址和/或端口号改变,出现系统 204可以发现这一改变并更新其关于联系人的信息。出现系统204可以提供诸API,这些API允许应用程序和软件模块读取或修 改与端点关联的信息。 一个示例函数是"enumendpoints"函数,它允许获得关于 联系人的端点信息。在一种实现中,可以向enumendpoints函数传递其端点信息被 需要的联系人的指示(例如,唯一标识符)。然后,与联系人关联的端点可以集合 到(例如) 一个数组中。接下来,例如,函数可以返回指向该数组的指针或句柄。 另一示例函数是"getendpointname"函数,它返回与出现系统在其上实现的 计算系统关联的端点的人可读名称。例如,该函数可以返回人可读名称、指向该人 可读名称的指针或端点的其他指示器。如上面所讨论,特定的计算系统可以具有与 之关联的多个端点。例如,在计算系统上运行的单独应用程序可以是被考虑为的单 独端点。作为另一例子,例如,两个或更多个用户可以使用相同的计算系统,因此 该计算系统可以具有与其关联的对应于不同登录帐户的多个端点。因此,在一些实 现中,可以(可选地)向getendpointname函数传递指示其名称被请求的特定端点 的自变量。又一示例函数是"setendpointname"函数,它设置端点的人可读名称。可以向 该函数传递包含被分配给该端点的所请求名称的文本的变量。在计算系统可以具有 与其关联的多个端点的实现中,可以(可选地)向该函数传递端点的指示器。出现系统204可以维护出现系统204正在为了出现信息而监视的联系人和/或 端点的列表。出现系统204可以提供API,该API允许应用程序和软件模块获得关 于出现系统204正在监视器的联系人和/或端点的信息。作为例子,"getaddresses" 函数可以使应用程序和软件模块能够获得由出现系统204维护的联系人和/或端点 的列表。函数可以返回包含有联系人或端点的列表的数组、指向该数组的指针、句 柄等等,也可以返回数组中的若干端点/联系人。另一示例函数是获取联系人的出现信息的"g邻resenceinfo"函数。在一种实 现中,可以向getpresenceinfo函数传递其出现信息被检索的联系人的指示(例如, 唯一标识符)。可选地,也可以向该函数传递其出现信息被检索的联系人的端点的 指示。作为响应,出现系统204可以尝试检索关于联系人的出现信息。例如,出现 系统204可以利用通信模块260来和与该联系人关联的一个或多个计算系统建立连 接,然后从(诸)计算系统检索出现信息。如果需要在特定端点的出现,出现系统 204可以利用通信模块260来和与该端点关联的计算系统建立连接,然后从该计算 系统获得出现信息。作为如另一例子,出现系统204可以首先尝试从出现存储器 208检索出现信息。如果联系人的出现信息是在出现存储器208中,出现系统204 可以返回该出现信息而不是从与该联系人关联的一个或多个计算系统检索出现信 息。如果出现系统204不能够获得该联系人的出现信息(例如,不能够从联系人的 计算系统获得出现信息),getpresenceinfo函数可以返回出现系统204不能够获得 联系人的出现信息的指示。在一些实现中,出现系统204可以判定与一个联系人关联的多个端点的出现
信息,在这样的实现中,出现系统204可以产生联系人的总计出现信息。例如,如果出现系统204判定一个联系人的一个端点的出现是"在线",并且该联系人的剩 余端点的出现是"离线",那么出现系统204可以判定该联系人的总计出现信息是 "在线"。在接收到联系人的总计出现之后,然后,应用程序或软件模块可以利用 函数例如getpresenceinfo函数来判定该联系人的特定端点的出现。可以使用多种技 术中任一种来实现以对应于联系人的多个端点的出现信息为基础产生该联系人的 总计出现信息。仅仅作为例子,出现状态可以是优先化的,总计出现信息可以被设 置成在对应于联系人的诸端点的多个出现状态中具有最高优先权的出现状态。再一个示例函数是获取联系人的能力信息的"enumcapabilities"函数。在一种 实现中,可以向enumcapabilities函数传递其能力信息被检索的联系人的指示(例 如,唯一标识符)。可选地,也可以向该函数传递其能力信息被检索的联系人的端 点的指示。作为响应,出现系统204可以尝试检索关于该联系人的能力信息。例如, 出现系统204可以利用通信模块260和与该联系人关联的一个或多个计算系统建立 连接,然后从(诸)计算系统检索能力信息。如果需要在特定端点的能力,出现系 统204可以利用通信模块260和与该端点关联的计算系统建立连接,然后从该计算 系统获得能力信息。作为另一例子,出现系统204可以首先试图从能力存储器212 检索能力信息。如果该联系人的能力信息是在能力存储器212中,出现系统204 可以返回该能力信息而不是从与该联系人关联的(诸)计算系统检索能力信息。如 果出现系统204不能够获得该联系人的能力信息(例如,不能够从该联系人的一个 计算系统获得能力信息),enumcapabilities函数可以返回出现系统204不能够获得 该联系人的能力信息的指示。如果出现系统204能够获得联系人的能力信息, enumcapabilities函数可以返回列出能力的数组、指向该数组的指针、指向该数组的 句柄等等。可以使用多种技术标识一个联系人的能力。在一种实现中,可以使用唯一标 识符如全球唯一标识符(GUID)来标识能力。在这一实现中,enumcapabilities函 数可以返回对应于该联系人的能力的诸GUID的列表。附加地或作为其他选择,与 能力关联的其他信息(例如,描述名称、版本标识符等等)可以被存储在能力存储 器212中。enumcapabilities函数也可以返回这一其他信息中的一些或全部(或没 有)。在一个实现中,也可以向enumcapabilities函数传递特定能力的指示。例如, 可以向该函数传递对应于能力的GUID。在这一实现中,enumcapabilities函数可以
返回联系人是否具有指定能力的指示。再一个示例函数是获取联系人的能力信息的"enumobjects"函数。在一种实 现中,可以向enumobjects函数传递其对象信息被检索的联系人的指示(例如,唯 一标识符)。可选地,也可以向该函数传递其对象信息被检索的联系人的端点的指 示。作为响应,出现系统204可以尝试检索关于该联系人的对象信息。例如,出现 系统204可以利用通信模块260和与该联系人关联的一个或多个计算系统建立连 接,然后从(诸)计算系统检索对象信息。如果需要特定端点的对象,出现系统 204可以利用通信模块260和与该端点关联的计算系统建立连接,然后从该计算系 统获得对象信息。作为另一例子,出现系统204可以首先试图从对象存储器216 检索对象信息。如果该联系人的对象信息是在对象存储器212中,出现系统204 可以返回该对象信息而不是从与该联系人关联的(诸)计算系统检索对象信息。如 果出现系统204不能够获得该联系人的对象信息(例如,不能够从该联系人的计算 系统获得对象信息),enumobjects函数可以返回出现系统204不能够获得该联系 人的对象信息的指示。如果出现系统204能够获得该联系人的对象信息, enumobjects函数可以返回列出诸对象的数组、指向该数组的指针、指向该数组的 句柄等等。可以使用多种技术标识联系人的对象。在一种实现中,可以使用唯一标识符 如GUID标识对象。在这一个实施中,enumobjects函数可以返回对应于联系人的 对象的诸GUID的列表。附加地或作为其他选择,与诸对象关联的其他信息(例如, 描述名称)可以从其他用户实体获得和/或被存储在对象存储器216中。enumobjects 函数可以返回这一其他信息中的一些或全部(或没有)。在一个实现,也可以向enumobjects函数传递特定对象的指示。例如,可以向 该函数传递对应于该对象的GUID、对象名称等等。在这一实现中,enumobjects 函数可以返回该联系人是否具有指定对象的指示。另一示例函数是设置用户出现的"setpresenceinfo"函数。在一些实现中,一 个联系人只能有一个端点与之关联,在这样的实现中,这一函数可以被用来设置该 用户实体的出现。在一些实现中, 一个联系人可能有多个端点与之关联,在这样的 实现中,这一函数可以被用来设置特定端点(例如,正在其上实现出现系统204 的计算系统)的该用户实体的出现。可以向该函数传递出现数值的指示。作为响应, 出现系统204可以将该用户实体或端点的出现设置为该数值。然后,如果该用户实 体或端点的出现被公布给其他联系人,它将会反映新的出现数值。
另一示例函数是公布该用户的对象的"setobject"函数。在一些实现中, 一个联系人只能有一个端点与之关联,在这样的实现中,这一函数可以被用来公布与该 用户实体关联的对象。在一些实现中, 一个联系人可能有多个端点与之关联,在这 样的实现中,这一函数可以被用来发布与特定端点(例如,正在其上实现出现系统204的计算系统)关联的对象。可以向该函数传递该对象的指示(例如,GUID、 对象名称等等)。作为响应,出现系统204可以判定和随该函数一起传递的指示对 应的对象是否已经被公布。例如,出现系统204可以检查对象存储器216以获得该 对象的指示。如果它没有被公布,出现系统可以将该对象或该对象的指示存储在对 象存储器216中,并且可以将该对象公布给那些被授权监视该用户实体的联系人、 那些被授权的以及已经请求用户实体的对象信息的联系人等等。如果它已经被公 布,出现系统可以将该对象的更新版本或该更新对象的指示存储在对象存储器216 中,并且可以将所更新的对象公布给那些被授权监视该用户实体的联系人、那些被 授权的以及己经请求用户实体的对象信息的联系人等等。再一个示例函数是停止公布该用户的对象的"deleteobject"函数。可以向该函 数传递该对象的指示(例如,GUID)。作为响应,出现系统204可以从对象存储 器216删除该对象或该对象的指示。然后,出现系统204不再将该对象公布给其他 联系人。与setobject函数以及deleteobject函数类似的诸函数可以被用来公布和不公布 用户实体和/或用户实体的端点的能力。借助于这些函数,能力和/或能力的指示可 以被增加、更新和/或从能力存储器212删除。出现系统204可以向其他应用程序和软件模块通知涉及出现、能力、对象、 公布出现和监视其他出现的改变。例如,出现系统204可以向一个或多个其他应用 程序和软件模块通知,例如,在当前正在被监视的联系人/端点的出现状态已经改 变的时候、在端点的写入描述已经改变(例如,"家用PC"变成"Xbox")的时 候、在关于新端点的出现信息可用的时候、在关于端点的出现信息不再可用的时候, 等等。同样,出现系统204可以向一个或多个其他应用程序和软件模块通知,例如, 在联系人的出现是否应该被监视的指示器已经被改变的时候、在联系人是否被授权 监视用户出现的指示器已经改变的时候、在正在被监视其出现的联系人被从联系人 存储器240删除的时候、在被授权监视用户出现的联系人被从联系人存储器删除的 时候,等等。此外,出现系统204可以向一个或多个其他应用程序和软件模块通知,例如,
在用户的对象或正在被监视的联系人的对象已经被改变(例如,增加、删除或更新) 的时候。同样地,出现系统204可以向一个或多个其他应用程序和软件模块通知, 例如,在用户的能力或正在被监视的联系人的能力己经被改变(例如,增加或删除)的时候。此外,出现系统204可以向一个或多个其他应用程序和软件模块通知,例如,在联系人己经请求监视来自用户的出现的时候、在这一来自联系人的请求先前 没有被拒绝的时候、以及在该联系人没有已经被标记为未被授权监视联系人存储器240中的用户的出现的时候。出现系统204和/或联系人管理器250可以向其他应用程序和软件模块通知与 联系人存储器240有关的改变。例如,出现系统204个和/或联系人管理器250可 以向一个或多个其他应用程序和软件模块通知,例如,在联系人存储器240中关于 一个联系人的信息己经被修改的时候、在一个联系人已经被添加到联系人存储器 240的时候、在一个联系人已经被从联系人存储器240删除的时候,等等。出现系统204和/或联系人管理器250可以,例如,把特定类型的事件已经发 生的指示(例如,要被监视的新联系人的出现)直接地或间接地发送到多个应用程 序和/或软件模块。然后,出现系统204可以,例如,在一个可访问的位置中给出 关于事件的更多信息(例如,其出现被监视的特定联系人),以使得想要获得关于 该事件的更多信息的其他应用程序和/或软件模块能访问该信息。或者,出现系统 204可以向应用程序和/或软件模块发送指示事件发生并提供关于事件的附加信息 的信息。例如,出现系统204可以向先前已经指示它们想要接收这种信息的应用程 序和/或软件模块发送信息。如果联系人管理器250要向其他应用程序和软件模块 通知与联系人存储器240有关的改变,它可以利用类似的技术。本领域内的普通技 术人员将会认识到,出现系统204和/或联系人管理器250能利用许多其他技术来 就诸如上述事件的事件通知其他应用程序和/或软件模块。图5是检索一个或多个联系人的出现信息的示例方法400的流程图。方法400 可以被一个系统例如图2的系统200实现,并且将会被参照图2描述。在方框404, 判定其出现信息被需要的实体。判定其出现信息被需要的实体可以包含,例如,通 过例如联系人管理器250检查(例如)联系人存储器240中的信息。判定其出现信 息被需要的实体也可以包含,例如,检查其出现信息被需要的联系人和/或端点的 列表。在方框408,可以和与在方框404所判定的实体关联的计算机系统建立连接。 例如,出现系统204可以利用通信模块260来与适当的计算系统建立连接。建立连 接可以包含判定与一个实体关联的一个或多个端点。然后,在方框412,可以从与其建立连接的计算系统请求出现信息。例如,诸计算系统可以是与图2的系统200 相同或类似的实现系统,并因此可以提供所请求的出现信息。在方框416,系统200 可以检查到在方框412所请求的出现信息。然后,出现信息可以被存储在出现存储 器208中。方框404、 408、 412、 416和420中的至少其中一些可以被定期地重复(例如, 每5分钟或以适合特定实现的速率)。这样,可以发现变为"离线"但没有通告它 正在这样做的联系人。附加地或作为其他选择,方框404、 408、 412、 416和420中的至少其中一些可以在事件发生时被重复,如添加其出现被监视的联系人。图6是向一个或多个联系人公布出现信息的示例方法450的流程图。方法450 可以被一个系统例如图2的系统200实现,并且将会被参照图2描述。在方框454, 判定要向其公布出现信息的诸实体。判定要向其公布出现信息的诸实体可以包含, 例如,通过联系人管理器250检査(例如)联系人存储器240中的信息。判定要向 其公布出现信息的诸实体也可以包含,例如,检查要向其公布出现信息的联系人和 /或端点的列表。在方框458,可以和与在方框454所判定的实体关联的计算机系统建立连接。 例如,出现系统204可以利用通信模块260来与适当的计算系统建立连接。建立连 接可以包含判定与一个实体关联的一个或多个端点。然后,在方框462,可以向与 其建立连接的计算系统发送出现信息。方框454、 458、和462中的至少其中一些可以被周期性地重复(例如,每5 分钟或以适合特定实现的速率)。附加地或作为其他选择,方框454、 458、和462 中的至少其中一些可以在事件发生时被重复,如添加要向其提供出现的联系人。现在参见图5和图6,方法400可以被用来监视第一组实体的出现,方法500 可以被用来向第二组实体公布关于用户的出现信息。本领域内的普通技术人员将会 理解,第一组实体可以不同于第二组实体,因为系统200允许用户分别地选择该第 一组和第二组。例如,在上述实现中,用户能为联系人存储器240中的每个联系人 分别地选择是否授权该联系人监视用户的出现以及该联系人的出现是否应该被监 视。作为另一例子,用户可以分别地选择联系人类目是否被授权监视用户的出现, 以及该联系人类目的出现信息是否应该被监视。图7是用于响应来自应用程序或其他软件模块的请求获取一个联系人的出现 信息的示例方法500的流程图。方法500可以被一个系统例如图2的系统200实现,
并且将会被参照图2描述。在方框504,出现系统200可以从应用程序或软件模块 接收对联系人出现信息的请求。在方框508,可以判定对应于该联系人的出现信息 是否在出现存储器208中。如果对应于该联系人的出现信息是在出现存储器208 中,那么在方框512可以从出现存储器208检索该出现信息。如果对应于该联系人的出现信息不在出现存储器208中,流程进行到方框 516。在方框516,可以和对应于该联系人的一个或多个计算系统建立连接。例如, 出现系统204可以利用通信模块260与(诸)计算系统建立连接。建立连接可以包 含判定与该联系人关联的一个或多个端点。在方框520,可以从与其建立连接的计算系统请求出现信息。例如,诸计算系 统可以是与图2的系统200相同或类似的实现系统,并因此可以提供所请求的出现 信息。在方框524,在方框520所请求出现的信息被系统200接收到。可选地,在 方框528,出现信息可以被存储在出现存储器208中。接下来,在方框532,在方 框524所接收到的出现信息被提供给在方框504请求该出现信息的应用程序或软件 模块。可选地,例如,该联系人和/或与该联系人关联的端点可以被添加到其出现信 息被检索的联系人和/或端点的列表。然后, 一种与图5的方法400相同或类似的 方法可以被用来监视该联系人的出现。图8是用于响应来自联系人的请求把出现信息公布给该联系人的示例方法 550的流程图。方法550可以被一个系统例如图2的系统200实现,并且将会被参 照图2描述。在方框554,可以从一个联系人接收到对出现信息的请求。例如,与 一个联系人关联的计算系统可以实现与图2的系统200相同或类似的系统,并因此 可以把对出现信息的请求发送给该用户的一个计算系统。在方框558,可以判定请求出现信息的实体的标识符。例如,可以分析在与实 体建立连接时所获得的实体X.509证书等,以判定该实体的唯一标识符。可选地, 也可以判定该联系人的一个端点。例如,可以标识发布在方框554所接收到的请求 的端点。在方框562,在方框558所判定的标识符可以被用来判定该实体是否被授权接 收出现信息。例如,在方框558所判定的标识符可以被用来在联系人存储器240 中检索该联系人的信息。例如,可以通过联系人管理器250获得联系人存储器240 中的信息。作为另一例子,可以检查向其公布出现信息的联系人和/或端点的列表, 以判定联系人和/或与该联系人关联的端点是否在这一列表中。可以假定,例如,
列表中的联系人/端点被授权接收出现信息。如果判定联系人/端点没有被授权接收出现信息,那么在方框566,可以拒绝在方框554所接收到的请求。另一方面,如果判定联系人/端点被授权接收出现信 息,那么在方框570,可以把出现信息传送给该实体。传送出现信息可以包含,如 果当前还没有建立连接,就利用通信模块260来与适当的计算系统建立连接。建立 连接可以包含判定与一个实体关联的一个或多个端点。可选地,例如,联系人和/或与该联系人关联的端点可以被添加到向其传送出 现信息的联系人和/或端点的列表。然后, 一种与图6的方法450相同或类似的方 法可以被用来向联系人公布出现信息。对于能力,与图5的方法400和图7的诸方法500类似的方法可以被用来获 得一个或多个联系人的能力。同时,与图6的方法450和图8的方法550类似的诸 方法可以被用来向一个或多个联系人公布该用户的能力。对于对象,与图5的方法 400和图7的方法500类似的诸方法可以被用来获得一个或多个联系人的对象。同 样,与图6的方法450和图8的方法550类似的诸方法可以被用来向一个或多个联 系人公布该用户的对象。再一次参见图2,系统200或某些其他系统可以附加地与基于服务器的系统连 接,以便通过该基于服务器的系统监视其他出现、公布实体的出现、监视器能力等 等。例如,联系人存储器240也可以包含其出现信息被通过该基于服务器的系统监 视的诸联系人以及诸对等联系人。同样地,出现存储器208、能力存储器212和/ 或对象存储器216可以包含关于通过基于服务器的系统所获得的诸联系人的信息。可以对此处所描述和例示的诸技术和数据结构进行许多修改和变动,而不会 偏离本权利要求书的精神和范围。因此,应该理解,此处所描述的诸方法和装置只 是示例性的,并不是对本权利要求书的限制。
权利要求
1.一种用于促进无服务器系统中的对等协作的方法,所述方法包含使用与一个用户实体关联的对等计算系统,把关于所述用户实体的出现信息传送到与第一组其他实体关联的对等计算系统,所述第一组其他实体由一个联系人存储器中的联系人信息指示,所述联系人存储器被存储在与所述用户实体关联的所述对等计算系统上;以及使用与所述用户实体关联的所述对等计算系统,传送对与由所述联系人存储器中的联系人信息指示的第二组其他实体关联的出现信息的请求,所述请求被传送到与由所述联系人存储器中的联系人信息指示的所述第二组其他实体关联的诸对等计算系统;其中所述第一组其他实体能够与所述第二组其他实体不同。
2. 如权利要求1所述的方法,其特征在于,进一步包含以下的至少其中之一 提供所述第二组其他实体中的所述其他实体的指示; 提供与另一特定实体关联的出现信息;提供与另 一 特定实体关联的能力信息; 提供与另一特定实体关联的对象信息;以及 提供与另一特定实体关联的端点信息; 提供与所述用户实体关联的端点信息。
3. 如权利要求2所述的方法,其特征在于,提供与所述另一特定实体关联的 出现信息包含以下的至少其中之一提供与和所述另一实体关联的一个端点关联的出现信息;或者 提供与和所述另一实体关联的多个端点关联的出现信息。
4. 如权利要求2所述的方法,其特征在于,提供与所述另一特定实体关联的 能力信息包含以下的至少其中之一提供与和所述另一实体关联的一个端点关联的能力信息;或者 提供与和所述另一实体关联的多个端点关联的能力信息。
5. 如权利要求2所述的方法,其特征在于,提供与所述另一特定实体关联的 对象信息包含以下的至少其中之一提供与和所述另一实体关联的一个端点关联的对象信息;或者提供与和所述另一实体关联的多个端点关联的对象信息。
6. 如权利要求l所述的方法,其特征在于,进一步包含 把关于所述用户实体的所述出现信息改变为一个指定的出现状态;以及 使用与所述用户实体关联的所述对等计算系统,把所改变的关于所述用户实体的出现信息传送给与所述第一组其他实体关联的诸对等计算系统。
7. 如权利要求l所述的方法,其特征在于,与所述用户实体关联的所述对等 计算系统是与所述用户关联的多个端点中的一个端点,,所示方法进一步包括使用与所述用户实体关联的所述对等计算系统,把与和所述用户实体关联的 所述对等计算系统关联的端点名称传送到与所述第一组其他实体中的至少一些其 他实体关联的至少一些对等计算系统。
8. 如权利要求7所述的方法,其特征在于,进一步包含设置与和所述用户实 体关联的对等计算系统关联的端点名称。
9. 如权利要求l所述的方法,其特征在于,进一步包含使用与所述用户实体关联的所述对等计算系统,把与所述用户实体关联的能力的指示传送给与第三组其 他实体关联的对等计算系统。
10. 如权利要求1所述的方法,其特征在于,进一步包含使用与所述用户实体关联的所述计算系统,把与所述用户实体关联的对象的指示传送给与第三组其他 实体关联的对等计算系统。
11. 如权利要求io所述的方法,其特征在于,进一步包含确定与所述对象的指示要被传送到的所相对应的对象。
12. 如权利要求10所述的方法,其特征在于,确定与所述对象的指示要被传 送到的所相对应的对象包含以下的至少其中之一确定已经把一个对象添加到与所述对象的指示要被传送到的所相对应的对象;或者判定已经从与所述对象的指示要被传送到的所相对应的对象中删除一个对象。
13. 如权利要求10所述的方法,其特征在于,所述第二组其他实体与所述第 三组其他实体相同。
14. 如权利要求1所述的方法,其特征在于,进一步包含以下的至少其中之生成所述第二组其他实体的组成己经改变的指示;生成所述第二组他实体中的另一个实体的出现已经改变的指示; 生成关于所述第二组实体中的另一个实体的对象信息已经改变的指示; 生成关于所述第二组实体中的另一个实体的能力信息已经改变的指示; 生成与所述第二组实体中的另一个实体关联的一个端点的名称已经改变的指 示;或者生成不在所述第一组其他实体中的另一实体已经发送了要求监视所述用户实 体的出现的请求的指示。
15. —种使用与一用户实体关联的一个对等计算系统促进无服务器系统中的 对等协作和/或协作的方法,所述方法包含与和另一实体关联的对等计算系统建立连接;从与所述另一实体关联的所述对等计算系统接收要求监视所述用户实体的出 现的请求;确定所述另一用户实体的标识符;确定所述标识符是否在所述计算系统的与一用户实体关联的一个联系人存储 器中;如果所述标识符是在所述联系人存储器中,则确定在与所述另一用户实体的 所述标识符关联的所述联系人存储器中是否有一个指示器指示所述另一用户实体 可以监视所述用户实体的出现;以及如果与所述另一用户实体的所述标识符关联的所述指示器指示所述另一用户 实体可以监视所述用户实体的出现,则使用与所述用户实体关联的所述对等计算设 备,把与所述用户实体关联的出现信息传送到与所述另一实体关联的所述对等计算 系统。
16. 如权利要求15所述的方法,其特征在于,进一步包含验证所述另一用户 实体的所述标识符。
17. 如权利要求16所述的方法,其特征在于,验证所述另一用户实体的所述 标识符包含利用自签署证书或一个第三方证书中的至少其中之一。
18. 如权利要求15所述的方法,其特征在于,进一步包含以下的至少其中之如果与所述另一用户实体的所述标识符关联的所述指示器指示所述另一用户 实体可以监视所述用户实体的出现,则使用与所述用户实体关联的所述对等计算系 统,把与所述用户实体关联的能力信息传送给与所述另一实体关联的所述对等计算 系统;或者如果与所述另一用户实体的所述标识符关联的所述指示器指示所述另一用户 实体可以监视所述用户实体的出现,则使用与所述用户实体关联的所述对等计算系 统,把与所述用户实体关联的对象信息传送给与所述另一实体关联的所述对等计算 系统。
19. 一种对等计算系统,包含存储联系人信息的联系人存储器,所述联系人存储器能够指示要向其提供关 于一用户实体的出现信息的第一组实体,并能够指示可以从其接收关于所述第二组 其他实体的出现信息的第二组其他实体;耦合到所述联系人存储器的出现系统,所述出现系统被配置成把与所述用户 实体关联的出现信息传送到与所述第一组实体关联的诸对等计算系统,并且被配置 成向与所述第二组实体关联的诸对等计算系统请求关于所述第二组其他实体的出 现信息。
20. 如权利要求20所述的对等计算系统,其特征在于,进一步包含以下的至 少其中之一耦合到所述出现系统以便存储关于所述第二组其他实体的出现信息的出现存 储器;耦合到所述出现系统以便存储关于所述第二组其他实体的能力信息的能力存 储器;或者被耦合到所述出现系统以便存储关于所述第二组其他实体的对象信息的对象 存储器。
全文摘要
描述用于促进对等无服务器系统中的协作和/或通信的系统和方法。该系统可以将有关与用户实体相关联的出现信息的信息传输到与其他实体关联的其他计算系统。该系统也可以向与其他实体关联的其他计算系统请求有关与所述其他实体相关联的出现信息的信息。出现信息通常可以指示实体与例如其他实体通信和/或协作的意愿和/或能力。
文档编号G06F15/16GK101164058SQ200680013649
公开日2008年4月16日 申请日期2006年4月21日 优先权日2005年4月22日
发明者A·R·克拉森, A·安纳鲁德, D·G·泰勒, K·R·陶, R·T·拉奥, R·古普塔, R·塞米奥尼斯克, T·R·曼尼恩, T·维斯伯格, U·W·帕克斯三世 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1