适用于位置感知的架构和系统的制作方法

文档序号:7591129阅读:140来源:国知局
专利名称:适用于位置感知的架构和系统的制作方法
技术领域
本发明主要涉及计算机系统,尤其涉及计算机系统和计算机设备的位置感知。
背景技术
随着因特网的问世和利用计算机的交互应用的增长,用户增长了对无处不用计算的需求。在这一方面,无处不用计算是指影响大多数用户日常工作的计算机能力。计算机故称之为“计算机”,因为它们的主要能力是“计算”或者执行数学任务。然而,计算机已不再仅仅是计算机器,而是个人的伙伴,它以个人数字助理(PDA)和个人信息管理器(PIM),多功能蜂窝式电话以及其它等等融入社会的结构中。
计算机不再为了能使计算性能指示至第二十小数位,占据办公室的空间,替而代之,具有相同计算能力的计算机可置于人的手掌中。软件开发商认为较新的计算工具的个人伙伴角色创建了用户友好的应用,形成了计算机计算方面几乎是看不见。这类技术使得用户界面接近相类似的人类界面,与过去所需要的计算机可读穿孔卡片的现有技术形成明显的对比。另一种影响计算无处不用的属性的增长技术是无线技术。无线和有线通讯网络和最新一类无线网络的不断增长开创了利用计算机通讯能力的计算机需求。无线不再是指一个在媒介中必须有硬连线的蜂窝式电话,正如过去众所周知的那样。现代锂离子类电池和其它小型但大功率电池能够使蜂窝式电话、PIMS、PDA和笔记本计算机每次工作数小时而不需要充电。计算设备的长期工作使得用户能够在不考虑时隐时现的充电条件下在使用设备的同时从一个地方移动到另一个地方。然而,用户的长期操作开创新的计算产品的发展机遇迄今并没有根据需要或可能性作彻底的了解。一类新的计算产品可以称之为位置感知产品类。
当前的位置感知设备都是零散的,不能在一起工作,并且不能延伸或统一的。例如,全球定位系统,家庭网络系统,局域网(LAN)和连接一个计算机系统的无线电话都能够向计算机系统提供位置数据。在这些系统中还没有共同的特性,以允许位置数据的协同使用。各种设备以不同的格式输出位置数据。因此,需要的就是一个位置感知系统,它允许在位置感知产品之间进行协同以增强具有计算系统的用户经验。

发明内容
因此,位置服务器提供了一种向信息提供着提供不可知论的位置信息的延伸方法以及使用提供该信息的技术。该方法提出了接收计算设备位置内容的请求,采集与来自一个或多个位置检测设备的当前位置有关的数据,对当前位置有关的任何矛盾调节所采集到的数据,以及产生一个能接近于应用的位置目标。该服务器可以多种方法来调节所采集到的数据,例如,可以应用一种层次或度量的处理,或者两者兼而用之。
为了能进行该方法,一种适当方法是包括一个位置管理部件,它构成路由位置数据;一个熔断器引擎,它与位置管理部件相耦合以接收一个或多个由位置数据所产生的位置报告,例如,可由数据和软件的提供者构成解决有关数据中的任何不一致性,调节在位置报告之间的不一致性并产生一个位置目标;以及一个或多个位置应用程序编程接口(API),它与位置管理部件相耦合,以向应用发送来自熔断器引擎的位置报告。位置目标动态提供给应用适用于计算机运行服务的最新有效的位置内容。
另一实施例提出了服务的安全和隐私问题。例如,用户和缺省设置可以感知采集数据的提供者的确实性。提供数字签名的提供者来自一个已知的源或者可由用户来感知,这样的提供者可以作为位置数据的多个可信赖的提供者。另外,如果适当的隐私政策没有处于适当的位置上,则分开的安全和隐私的框架构成了防止第三方的代码泄密位置服务的安全和防止应用访问服务。
本发明的其它性能和优点将从以下参考附图所说明的实施例的详细描述中变得更加清晰。
附图简要说明在附加权利要求具体阐述本发明性能的同时,能从以下结合附图的详细讨论中更好地理解本发明以及它的目的和优点,附图包括

图1是主要说明能实现本发明的典型计算机系统的方框图;图2是根据本发明实施例的典型位置感知架构的方框图;
图3是在根据本发明实施例的位置感知架构中的位置服务器的方框图;图4是显示包括根据本发明实施例应用程序编程接口的位置感知系统的典型连接的方框图;图5是说明根据本发明实施例方法的流程图;图6是说明根据本发明实施例的位置服务器内的方法综述的流程图;图7是根据本发明实施例的主机裁决器的状态图;图8A是根据本发明实施例的插件式管理器的流程图;图8B是根据本发明实施例与提供者交互的插件式管理器的状态转移图;图9是根据本发明实施例的插件式管理器的状态图;图10是说明根据本发明实施例的方法的流程图;图11是说明根据本发明实施例的方法的流程图;图12是说明适用于根据本发明实施例的典型提供者的方法的流程图。
发明的详细描述在附图中,类似的标号表示着相同的元件,本发明是以实现一个合适的计算环境来说明的。尽管不是需要的,但是本发明的讨论仍基于由个人计算机可执行的诸如程序模块之类的计算机可执行指令的一般概念。一般来说,程序模块包括例程、程序、对象、部件、数据结构,等等,它可以执行特定的任务或实现特定抽象数据类型。此外,本领域的熟练技术人士都会意识到,本发明也可以采用其它计算机系统配置来实现,这些计算机系统包括手持设备、多处理器系统、基于微处理器或可编程消费电子、网络PC、小型计算机、大型计算机。以及其它等等。本发明也可以分布式计算环境来实现,在分布式环境中,可以由通过通讯网络相连接的远程处理设备来执行任务。在分布式环境中,程序模块可以放置于本地和远程存储设备中。
图1说明了一个能够适合于实现本发明的典型的计算系统环境100。计算系统环境100仅仅只是一个适用的计算环境的实例,并不是试图构成对本发明的使用或功能范围的任何限制。不应该将计算环境100解释成具有与典型操作环境100中所说明的任何一个或多个部件组合有关的任何属性或要求。
本发明可以采用多种其它通用或专用计算系统环境或配置来操作。适用于本发明使用的众所周知的计算系统、环境和/或配置的实例包括,但并不限制于,个人计算机、服务器计算机、手持或膝上设备、平板型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子、网络PC、小型计算机、大型计算机、包括任何上述系统或设备的分布式计算环境,以及其它等等。
本发明的讨论式基于由计算机可执行的诸如程序模块之类的计算机可执行指令的一般概念。一般来说,程序模块包括例程、程序、对象、部件、数据结构,等等,它可以执行特定的任务或实现特定抽象数据类型。本发明也可以分布式计算环境来实现,在分布式环境中,可以由通过通讯网络相连接的远程处理设备来执行任务。在分布式环境中,程序模块可以放置于包括存储器存储设备的本地和远程存储设备中。
参考图1,一种实现本发明的典型系统包括一个采用计算机110方式的通用计算设备。计算机110的部件可以包括,但并不限制于,一个处理单元120、一个系统存储器130,以及一个系统总线121,该系统总线121将包括系统存储器至处理单元120的各种系统部件相耦合。系统总线121可以是包括诸如存储器总线或者存储器控制器,外围总线的几类总线结构中的任何一种总线,以及使用多种总线架构中的任何一种的局部总线。作为一个实例,但并不限制于,这类架构可包括工业标准结构(ISA)总线、微通道结构(MCA)总线、增强ISA(EISA)总线、视频电子标准协会(VESA)本地总线,以及也称之为中层总线的外围部件互连(PCI)总线。
计算机110一般都包括多种计算机可读媒介。计算机可读媒介可以是任何计算机110可访问的有效媒介,并且包括易失性或非易失性媒介和可移动式或非移动式媒介。作为一个实例,但并不限制于,计算机可读媒介可以包括计算机存储媒介和通讯媒介。计算机存储媒介包括以适用于存储诸如计算机可读指令、数据结构、程序模块、或其它数据之类信息的任何方法或技术所实现的易失性和非易失性,可移动和不可移动式的媒介。计算机存储媒介包括,但并不限制于,RAM、ROM、EEPROM、闪存存储器或其它存储技术、CD-ROM、数字通用盘片(DVD)或者其它光盘存储、磁带盒、磁带、磁盘存储器和其它磁存储设备、或者任何其它能够用于存储所需要数据且计算机110可以存取的媒介。通讯媒介一般都嵌入在计算机可读指令、数据结构、程序模块或者以诸如载波或其它传输机制之类调制数据信号的其它数据中,并且可包括任何信息传递的媒介。术语“调制数据信号”是指其一个或多个特性可以通过编码信号中的信息的方式来设置或变化的信号。作为一个实例,但并不限制于,通讯媒介包括诸如有线网络或直接有线连接的有线媒介,以及诸如超声、RF、红外和其它无线媒介的无线媒介。上述的任何组合也应该包括在计算机可读媒介范围中。
系统存储器130包括采用易失性和/或非易失性方式的计算机存储媒介,例如,只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)包含了有助于诸如启动期间在计算机110的各部件之间传输信息的基本例程,它一般存储于ROM 131。RAM 132一般包含处理单元120可以立即存取和/或正在操作的数据和/或程序模块。作为一个实例,但并不限制于,图1说明了操作系统134、应用程序135,其它程序模块136以及程序数据137。
计算机110也可以包括其它可移动/不可移动、易失性/非易失性计算机存储媒介。作为一个实例,图1说明了可以用于读写不可移动非易失性的磁性媒介的硬盘驱动器141,可以用于读写可移动非易失性磁盘152的磁盘驱动器151,以及用于读写诸如CDROM或其它光媒介之类的可移动非易失性光盘156的光盘驱动器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以不同的数字给出,至少是说明它们是不同的拷贝。用户可以通过输入设备向计算机110输入命令和信息,这些输入设备包括例如图像输入板和电子数字仪164、麦克风163、键盘162和定位设备161,定位设备常称之为鼠标、轨迹球或触摸屏。其它输入设备(未显示)可以包括操纵杆、游戏板、圆盘式卫星电视天线、扫描仪或其它等等。其它输入设备时常通过与系统总线相耦合的用户输入接口160连接至处理单元120,但是也可以通过诸如并行接口、游戏接口和通用串行接口(USB)之类的其它接口和总线结构来连接处理单元。监视器191或其它类型的显示设备也通过诸如视频接口190之类的接口连接至系统总线121。监视器191也可以与触摸屏或其它集成在一起。值得注意的是,监视器和/或触摸屏都可以物理耦合于容纳了计算设备110的外壳,例如,平板型个人计算机。此外,诸如计算设备110的计算机也可以包括其它外围输出设备,例如,扬声器197和打印机196,这些外围输出设备可以通过输出外围接口194或其它类似接口相连接。
计算机110可以使用逻辑连接一个或多个远程计算机(例如,远程计算机180)在网络环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或者其它通用网络结点,并且一般包括许多或所有与上述计算机110讨论有关的部件,尽管在图1中已经说明了存储器存储设备181。图1中所说明的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但是也可以包括其它网络。这类网络化环境在办公室内是十分普及的,例如,企业内的计算机网络、企业内部互联网和因特网。例如,在本发明中,计算机系统110可以包括能够从其移出数据的源机器,而远程计算机180可以包括目的机器。值得注意的是,源机器和目的机器并不需要通过网络或任何其它方式来连接,但是数据可以通过源平台能够写入而目的平台或其它平台能够读取的任何媒介来移动。
当用于LAN网络化环境中,计算机110通过网络接口或适配器170与LAN171相连接。当用于WAN网络化环境中,计算机110一般都包括调制解调器172或其它用于建立与诸如因特网之类的WAN 173通讯的方式。调制解调器172可以是内置的或者是外置的,它通过用户输入接口160或其它适当的机制与系统总线121相连接。在网络化的环境中,有关计算机110所描述的程序模块或者其它部分都可以存储于远程存储器存储设备。作为一个实例,但并不限制于,图1说明了远程应用程序185驻留于存储器设备181。应该意识到的是,显示的网络连接仅仅是示例性的,也可以使用其它建立在计算机之间通讯链路的方式。
在以下的讨论中,本发明将参考表示由一台或多台计算机所执行操作的行为和符号来讨论。,除非采用其它表示。正是如此,应该理解的是,这类行为和操作时常被认为是计算机可执行的,包括由计算机的处理单元以结构的方式来操纵电子信号表示的数据。该操纵可以在计算机存储器系统中的位置上转移数据和保持数据,这样就重新构成或者变更了计算机的操作,这种方式是本领域中的熟练技术人士都能很好理解的。能保持数据的数据结构是由数据格式所定义的特定性能的存储器的物理位置。然而,当以上述内容来讨论本发明时,这并不意味着限制,正如本领域中的熟练技术人员所能意识到的那样,本文所讨论的各种行为和操作也可以采用硬件来实现。
参考图2,一个典型的概述性方框图说明了位置感知服务器210的架构。正如所示,位置服务器210可以是一个用户模式服务器212,并且可以安装在诸如计算机110的计算机或者安装在手持计算设备上。位置服务器210可以接收多个应用程序220(1-3)和来自外部设备/计算机214的数据。位置服务器210可以在设备中与诸如驱动器222(1-2)和Window文件系统部件224的内核模式215部分相耦合。所显示的驱动器222(1-2)和Window文件系统部件224与硬件216相耦合。所显示的各个设备驱动器222(1-2)与它各个硬件设备226(1-2)相耦合。所显示的Window文件系统部件224与存储器设备230相耦合,该存储器设备也许是适用于保持Window文件系统数据的数据库。位置服务器210也可与MapPoint应用或其它构成询问位置信息并与本文实施例相符的应用或者设备240相耦合,以提供位置数据。位置服务器210也可通过轻便的目录存取协议(LDAP)250与动态目录260相耦合。位置服务器210也可以与外部设备/客户机280相耦合,该外部设备/客户机280可以通过通讯信道214与现场服务器270相耦合。更具体的说,位置服务器210能够提供可以由诸如实时通讯(RTC)客户机检索的位置信息。RTC客户机随后向现场服务器270发送该信息。
参考图3,方框图更加详细的说明了位置服务器210。正如所示,位置服务器210包括一个或多个位置应用程序编程接口(API)350,一个熔断器引擎340,以及一个位置管理部分330。位置管理部分330与提供者的插件310”和裁决器交互。在一个实施例中,位置管理部分330包括一个用户代理器332、一个高速缓存器334,一个主裁决器336以及一个插件管理器338。图3也说明了提供者310”,它可以是检测数据的提供者,且至少需要对诸如传感器所指定数据的作出某些解释。例如,一个全球定位提供者可以提供经度和纬度。在一个实施例中,提供者310”将检测到的数据发送至提供者的插件310”,作为设备所指定的位置信息或者作为来自设备的传感器指定的数据。提供者插件310”能够归一化数据,将数据翻译成标准格式,并且将该数据发送至位置管理部分330。在另一个实施例中,提供者310”能够在将数据发送至提供者插件310”之前翻译数据。提供者310”的功能能够满足设计的需求和限制。例如,位置管理部分330能够通过提供者310”或其它源获得来自一个或多个设备的原始设备信息。在一个实施例中,位置管理部分330归一化数据,并且将该数据翻译成位置报告。
在一个实施例中,在位置服务器210中构成了位置管理部分330。然而,提供者插件310”归一化该数据,该插件管理器338可以是位置管理系统的一部分,它可以在接收数据或将数据发送至主裁决器336之前进一步对数据进行归一化。各个部件主裁决器336、熔断器引擎340、插件管理器338表示了接收信息的准备就绪。因此,在一个实施例中,只有在元件336、338和340已经准备接受检索时,应用和部件才能够检索数据。
裁决器320接收所检测和翻译的数据,或者,在某些情况下,接收原始的位置数据,例如设备指定的位置信息,并且翻译该数据。裁决器320可以采用插入于位置服务器210的方式来实现,并且可以包括设备指定位置信息翻译器和数据源。裁决器320的功能是通过使用有效的数据源将设备指定位置信息翻译成丰富的位置,以从现有的数据来推断新的数据。在一个实施例中,裁决器320至少能翻译一部分从一个或多个设备中接收到的一部分数据。各个裁决器320都能够至少翻译一类来自于提供者310的原始或部分解码的数据。例如,裁决器320只能专用于解释802.11类的数据。裁决器随后将采用位置管理器330来寄存只能翻译成802.11类的数据,并且也只能接收这类数据。另外,各个裁决器320可以构成能够翻译其它裁决器的信息,在这种情况下,各个裁决器320也许都不能翻译原始的数据或部分解码的数据。图3也显示了Window文件系统部件360,它可以接收位置服务器210的数据。
熔断器引擎340产生一个当前的位置目标。位置服务器210通过一个插件或几个插件来校对当前的位置数据,其中插件可以包括提供者的插件310”和裁决器的插件320。在这部分内容中,插件可以采用一个和多个动态可装入的库或动态链接库(DLL)或其它能够延伸软件、固件,或系统部件功能的动态可装入的模块来实现。
系统概述参考图4,位置系统210和周围的部件主要说明了位置服务器210起到任何应用不可知论的架构的作用,并且不可知道所获得的信息来自于何个数据源和输送至何个装置。位置服务器210显示了该服务器包括熔断器引擎340、高速缓存334、用户代理332、插件管理器338和主裁决器336。位置服务器210还包括WinFS SQL服务器450、位置提供者API 404、位置裁决器API 414、位置通知API 416、位置用户API 418,以及位置管理API 420。WinFS SQL服务器450将位置服务器210与通知服务器460相耦合以及与用户通知API LocUsr418和位置通知API 460相耦合。API 416和418能够与应用220交互。
位置用户API 418允许应用讯问计算运行位置服务器210的当前位置。位置裁决器API 414指定由插件所实现的功能,以便于采用服务器来登记。正如所示,位置用户API 418接收WinFS服务器450的数据并且发送至一个或多个应用220(l-n)。位置管理API 420接收来自多个位置的数据,例如,熔断器引擎340、用户代理332、高速缓存334、插件管理器338以及主裁决器336,并且将数据来回地发送至应用220。位置管理API 420允许所构成的服务器和元件的参数。位置管理API 420也允许附加和去除提供者和裁决器。位置通知API416接收来自通知服务器460的数据并且将数据发送至应用220。当计算机所运行的服务器的位置已经变化时,位置通知API 416允许应用可以注册登记以便于通知。在一个实施例中,分开的API,应用注册登记API允许应用来注册登记通知并且确定当前的位置。在一个实施例中,应用必须首先注册登记以获得位置数据。一旦注册登记之后,就可以选择一个应用来通知预定的结果。位置裁决器API 414发送和接收来自插件管理器412和主裁决器336的数据,并且将该数据传输至位置裁决器用户/Window数据库408(1)、位置裁决器API_动态目录408(2)和位置裁决器MapPoint408(3),以及其它有利于位置数据的位置裁决器。主裁决器336担负管理位置数据的裁决的责任。当插件管理器412传递了主裁决器336的设备指定位置信息时,主裁决器336将数据传输至不裁决和能够裁决信息的裁决器。
特别是,参考图4,可以一个实例来讨论通过位置服务器210的流程,并由提供者402开始。提供者,诸如802.11的提供者可获得扫描的数据。如果提供者402确定存在着新的访问点的话,则提供者就将媒体访问控制(MAC)地址和信号强度信息捆绑于802.11的报告。该802.11提供者向插件管理器338发送已准备好的信息。插件管理器338将获得信息的设置并且向主裁决器336发出信号,该信号包括了要裁决的新的位置报告。
接着,主裁决器336从插件管理器338检索位置报告。接着,主裁决器336将位置报告发送至用户代理332。
用户代理332根据该位置报告来校对高速缓存334。高速缓存334有可能返回出错信息。如果出现错误,则高速缓存334就缓存数据并且校对后端。通过校对高速缓存的后端,用户的位置就可能根据位置报告来确定。如果高速缓存不能确定用户的位置,则用户代理332就产生一个错位信息。
在用户代理332产生了一个错误之后,主裁决器336就将位置报告发送至裁决器408,例如,动态目录(AD)裁决器408(2)。AD裁决器408(2)定位在位置报告中的MAC地址信息,并且连接至动态目录以及发现访问点的位置。接着,AD裁决器408(2)向主裁决器336发回访问点的位置作为位置报告。接着,主裁决器336将位置报告发送至用户代理332。用户代理332校对高速缓存334与由AD裁决器408(2)所发回的位置报告进行匹配。如果高速缓存334产生一个出错信息的话,则用户代理332就缓存该AD报告。接着,用户代理332随后校对WinFS 450以发现与AD裁决器408(2)所产生的位置报告有关的任何存储的位置。如果没有发现,则用户代理332就通知主裁决器336,不存在任何其它数据。接着,主裁决器336向熔断器引擎340发出存在着要检索数据的信息。熔断器引擎340检索两个位置报告,包括一个802.11位置报告和一个AD位置报告。
接着,熔断器引擎340熔断这些报告并连接表示熔断报告的位置目标,并且将两个位置报告熔进WinFS 350中,以作为当前的位置。
接着,可以构成在WinFS的顶层运行的通知服务器460产生通知。所产生的通知通过位置通知API和至登记所该通知的应用。
位置裁决器API 414是在位置服务器210和裁决器之间的界面。另外,位置裁决器API 414允许各个裁决器通知位置服务器210裁决器以具有新的位置信息。位置裁决器API 414使得裁决器将该信息传输至位置服务器210。
位置提供者API 404发送和接收位置提供者的数据,例如,提供者402(l-n),它可以包括802.11提供者、篮牙提供者、全球定位系统提供者以及其它类型的位置数据的提供者。位置提供者API 404是一个在位置服务器210和提供者之间的界面。位置提供者API 404允许各个提供者能够通知服务器它已经具有新的位置信息并且将该信息传输至服务器。
在一个实施例中,位置提供者API 404和位置裁决器API 414是插件管理器API的两个部分。插件管理器API还包括一个插件管理的插件,它是在插件管理器338和提供者插件402之间的界面。插件管理器插件界面向提供者和裁决器的两个界面都提供数据。根据该实施例,对提供者402来说,必须实现位置提供者API和一个插件管理器插件。
熔断器引擎340具有熔断从主裁决器336所获得数据的功能。熔断器引擎340主要是裁决不一致性并且统一根据位置提供者所接收的位置感知的不同裁决所接收到的“报告”。该与位置有关的数据通过主裁决器336到达,裁决器对数据进行滤波,以及将该数据发送至高速缓存334和熔断器引擎340。
用户代理332所具有的功能是校对高速缓存334,已确定当前位置的报告是否还使用高速缓存数据来进一步裁决。用户代理332还校对WinFS 450,以了解当前位置的报告是否表示了用户已经存储的位置。
高速缓存334所具有的功能是存储裁决树。裁决树允许位置服务器210减少裁决循环的次数。
图4说明了一种架构的实施例,该架构能够使用位置服务器210来提供应用220,该应用具有讯问当前位置的能力以及当用户的位置已经变化时通知的能力。图4也说明了位置API 350具有三层。特别是,API所提供的层包括了提供者402至位置服务器210、裁决器408至位置服务器210以及应用220至位置服务器210。
在一个实施例中,裁决器插件408构成了裁决器插件408能够翻译以及其它功能的注册登记类型信息。与信息的翻译类型和其它功能有关的数据使得位置服务器210能够有效地使用裁决器插件408,使之能够执行其它任何地方可执行的处理和引起重复处理。此外,注册登记允许熔断器引擎340可采用已知类型来有效地裁决不一致性,并且在用户位置已经变化时提供允许应用通知的事件机制。在位置服务器210中的注册登记和其它处理使得与位置210有关的位置目标的实例能够将所有的位置信息发送至应用220,作为位置目标的延伸。位置目标可以构成一般类型的位置信息部分,使得任何应用能够将不同的或者新的位置信息插入到该部分中。一般类型的位置信息部分可以构成例如,基本位置报告的延伸。
在一个实施例中,位置服务器210可以延伸,使得开发者可以写入其它的插件。正如所示,插件402,408可以通过API 414、416、418、420和422的层与位置服务器210相耦合,这些层使得位置服务器210将在设备和数据源新的类型的位置数据之间协调通讯。因此,各个插件402、408和在位置服务器210中的部件都可以模块的方式构成,从而可以在不产生误差的条件下禁止和去除一个或多个插件或元件。在该实施例中,只要禁止/去除插件,则位置服务器210就开始工作,并且熔断器引擎340或通知部件和其它部件除了位置服务器210之外都可以跳过需要除去插件和部件的处理部分,例如,如果熔断器引擎340被禁止了,则根据本实施例,位置服务器210就路由位置报告并且将插件的位置报告报告位置用户API 418。
在另一实施例中,其中一个应用220可以是用户控制应用,它也可以作为与位置服务器210有关的用户界面来实现。用户控制应用还可以构成协调或包括于API,它允许用户增添/去除插件,例如,插件408和402,以及通过变更熔断器引擎340的功能来变换提供者插件402和裁决器498的优先权。另外,用户控制应用可以构成用于变化在主裁决器336和一个或多个裁决器408之间的重复次数。
现在结合图4来参考图5,讨论位置服务器210的内部操作。方框510为提供者提供了异步接收原始的设备数据。方框520为各个提供者在接收时提供了归一化的所接收到的数据。这种归一化会引起至少部分数据的丢弃。方框530提供了将归一化的数据转换成标准的格式,以及方框540提供了将该数据传输至主裁决器336。方框542为主裁决器336提供了通过位置提供者API 404来接收来自一个或多个提供者的标准和归一化的数据。方框550为主裁决器336提供了将该数据分配至一个或多个裁决器408。裁决器408对这些数据进行操作,并向主裁决器336返回新的数据,正如方框560所示。方框561提供了计数器加1的操作,使得n变成为n+1。判决方框562随后确定“n”是否已经达到了预定的限制。如果没有,则处理就沿着线564所示返回重复。如果已经达到了重复预定的次数,或者根据主裁决器336所接收到的尺寸或曲线,就将数据发送至熔断器引擎340,如方框570所示。
方框574提供了熔断器引擎340接收来自主裁决器336的数据。方框580提供了熔断器引擎340对所接收的来自在裁决器336的数据进行操作,以裁决其不一致性。方框590提供熔断器引擎340,在裁决任何传统之后,创建位置目标,并将其封装在计算机运行的位置服务器210的当前位置中。判决方框591提供了确定是否需要创建新的位置目标。如果需要的话,则方框592提供了如果熔断器引擎340已经创建了一个新的位置目标,熔断器340就将位置写入到WinFS 450中。方框593提供了则通知服务器460校对在熔断器引擎340中任何已确定的位置是正确的位置,看看此位置是否与应用220有关的通知服务器340的任何位置相匹配。随后,通知服务器460通过位置通知API 416通知任何适当的应用220。应用220通过位置通知API 416与通知服务器460相互作用,首先使用服务器210讯问表示计算机的当前位置的位置服务器210’最佳设想的位置。其次,应用220可以采用通知服务器460注册登记,该通知服务器460结合WinFS 450运行,从而当运行位置服务器210的计算机已经变化时可以通知应用220。当应用220接收到位置服务器210的位置数据时,所返回的数据可以包括提供者402的报告以及裁决器408的报告。于是,应用220可以接收到包括由一个裁决器408的上下文信息的丰富数据。
在操作过程中,图4所说明的架构以及参考图4和图5的讨论使得诸如移动专业工作者的用户在需要时通过提供适当资源成为定向的任务。架构提供了一种适用于应用220确定位置信息的方法。基于该位置信息,应用220可以通过有效的资源来搜索到用户(该用户可以通过诸如动态目录的其它性能来确定),从而发现接近用户的资源。
就移动专业工作者而论,一个实例可能包括了一个在几家公司之间周游的用户。在各个公司中,该架构使得应用220协助用户定位资源,该资源可以包括打印机、投影机、白板、扫描仪,以及其它等等。在一个实施例中,移动专业工作者可以通过点击位置目标来定位适用于文档的打印机,例如“接近我”的目标。位置服务器210接收到来之提供者402的数据,该数据通过裁决器裁决之后,就由熔断器引擎340熔断器并通过熔断器引擎340、WinFS 450和适当的位置API提供给应用220。于是,如果构成了一个和多个打印机网络,就能够向应用提供打印机列表以及它们的位置,该应用可以组合数据,以提供附近的一系列打印机。在一个实施例中,通过链接有关的位置目标使得用户点击或者其它表示在该列表中的一个打印机来打印所选择的打印机。
在另一典型的实施例中,移动专业工作者可以是远程交换器或者是在商务场所以外,例如家庭办公室的外部计算机的用户。例如,家庭笔记本计算机可以与家庭无线网络相连接。根据一个实施例,位置服务器210通过提供者402接收数据并且发送给用户可看到的应用,以表示用户已经连接了家庭网络。为了能使用户连接一个工作位置,位置服务器210可以从用户处接收到连接至工作位置的表示,例如,可以通过“我的网络动态中心”等等。位置服务器210,因为它接收到表示用户没有连接至工作网络的数据,使得应用可以识别网络,从而应用可以通过诸如网络工作中心、防火墙等等来连接网络。
移动专业工作者受益于本文披露内容的另一实例是可以包括多个移动专业工作者。例如,如果需要多个移动专业工作者中的一个的话,位置服务器210能够追踪多个移动专业工作者中的至少一个。用户所需要的多个工作者中的一个可以通过所具有的许可用户允许将位置发送至在用户计算机上运行的位置服务器210的各个工作者确认来定位用户。例如,一个诸如Windows Messenger的应用220可以构成能够接收用户具有所做的该项许可的各个工作者的当前数据。于是,例如,用户就能使用于位置有关的数据来确定哪一个工作者是最接近的,那一个是最远的,并且可分派相应的任务。
主裁决器现在参考图6和图7且与图4相结合,更详细地讨论主裁决器336。主裁决器336管理从提供者402至裁决器408分配数据以及从裁决器408至熔断器引擎340分配数据的处理过程。在主裁决器336中,保持着多个数据结构,包括来自各个设备和各个提供者以及各个裁决器408的位置报告的当前列表。主裁决器336还保持着由裁决器402所裁决的位置报告的踪迹,位置报告的当前周期,以及准备发送给熔断器引擎340的报告周期。在一个实施例,主裁决器336保持着至少四个参数,该参数是由用户构成的,包括到裁决器408的所有重复的超时,适用于一个裁决器重复的信息的超时,以及裁决器重复的次数,正如图7所示的NumIter。正如得益于上述披露的本领域熟练技术人士所能意识到的那样,可以根据设计的选择来更改所保持着的参数数值以及时序,并在本实例范围内。
正如图6所示,主裁决器336在方框602进行初始化,并且等待直至在方框604主裁决器336接收到来自插件管理器412的通知。在接到通知之后,主裁决器336随后在方框605检索一组由插件管理器412所存储的位置报告并存储该报告。接着,主裁决器336校对各个报告,以发现裁决器336是否有效地裁决这些报告,正如方框606中所判决的那样。如果裁决器有效地裁决了新的位置报告,则主裁决器336就随后校对,以了解构成位置报告之类的一个裁决器是否对所存储的一列位置报告中,即,能够裁决如方框607所示的报告的能力。如果裁决器能够裁决任何类型的报告,则主裁决器336就确定是否已经达到了最大的重复次数,正如方框608所示。如果还没有达到最大的重复次数,则在方框609由主裁决器336将报告转发给用户代理。用户代理332与WinFS和高速缓存334相互作用,将数据添加到报告中。通过使用高速缓存的数据,就可以通过避免向裁决器发送比需要更多的数据来保护该报告。如果用户代理332和高速缓存334不能添加所需要的数据,则主裁决器336就将该数据转发至合适的裁决器,以及启动相关的计时器并增加重复的次数,正如方框610所示。
如果裁决器都不是有效的,或者如果已经达到最大的重复次数,则在方框611重确定该报告并准备熔断器。在一个实施例中,主裁决器336可以根据裁决器的所翻译的数据来发送位置报告。
在计时器结束之前,当裁决器408通知主裁决器336所裁决的特定位置报告已经完成时,则在方框612中,主裁决器336重写由特定裁决器所产生的任何原先组的位置报告。
一旦计数完成之后,方框613提供了主裁决器336将任何最新的位置报告添加在准备发送至熔断器引擎340的一组位置报告上。
此外,主裁决器336复位与计时器有关的任何裁决器,使得裁决器的所有老的位置报告都忽略,并且向熔断器引擎340发送一组位置报告。主裁决器336还校对各个空闲的裁决器裁决任何新的位置报告的有效性。
熔断器引擎340对数据进行操作,并且方框614提供了主裁决器336接收来自熔断器引擎340最新位置目标方式(LatLoc)的更新。在接收到LatLoc之后,方框616提供了熔断器引擎340将LatLoc发送至WinFS,由WinFS随后触发通知服务器460需要注意新的位置目标。
在一个实施例中,主裁决器336保持了一个计数器,它可用于表示准备发送至熔断器引擎340裁决不一致性的当前一组的位置报告、准备裁决的最新一组的位置报告,用于发送至熔断器引擎340的最新位置延伸目标以及可以由裁决器408正在裁决的任何当前位置的报告。在一个实施例中,可以根据该计数器来确定是否应该将位置报告从主裁决器发送至熔断器引擎340。在该实施例中,计数器有利于避免向主裁决器336发送过时的数据。触发过时的数据可加以标识,以分配至一个老的周期。
一个实施例提供了表示主裁决器336的缩影,计算机位置的翻译在任何时候都是有效的。该缩影表示了准备在给定时间发送至熔断器引擎340的数据。各个位置报告可识别出一组有关提供者420所产生的位置报告。位置报告也可以由各个其它位置报告间接产生,在这种情况下,指针可以构成将位置报告链接在一起。

表 1参考上述表1,一个与主裁决器336有关的典型数据结构说明了裁决器408和它相对应的数值。正如所示,最新的位置报告保持在正在操作的各个裁决器408中。在另一实施例中,位置报告采用层次数据结构。

表 2图7说明了根据主裁决器336的一个实施例的状态图。状态图显示了主裁决器的初始状态702。主裁决器336等待来自高速缓存334的通知,正如线704所示。一旦接收到通知,在节点703上主裁决器336检索位置报告706。主裁决器校对插件管理器412的数据。当准备时,主裁决器336检索数据和校对高速缓存334的任何匹配数据。如果没有匹配的数据,则主裁决器336就校对裁决器并写入到任何过时的报告上708。
节点709表示确定裁决器408是否能够裁决位置报告的初始化。如果任何裁决器都能裁决报告710,则状态图就转至节点711。如果没有裁决器,就由高速缓存334或用户代理332来裁决报告,随后主裁决器336通过线712写入到熔断器引擎340。节点715表示写入到熔断器引擎340。在写入到熔断器引擎340之后,处理过程自己就重复,正如线713所示。在节点711,如果重复的次数小于限制的“n”,则启动计时器将报告就发送至裁决器408并计数器增1,正如线716所示。在节点719,接收到裁决器408的通知并且记录位置报告,正如线718所示。
裁决器正如以上所讨论,裁决器408检索来自主裁决器336的位置信息。裁决器408能够构成在其位置报告中包括丰富的信息并且将升级的位置报告在发回至主裁决器336。裁决器都可期待通知与位置数据的类型有关的位置服务器210和根据安装能够裁决的裁决器。可以将裁决器408构成能够理解某种类型的数据。如果裁决器408能够发现与数据类型有关的信息,则裁决器就将该数据发送至主裁决器336,作为一个或多个位置报告。
在一个实施例中,裁决器408与一个或多个源相互通讯,来翻译信息。裁决器408也与高速缓存通讯来自源的数据。在一个实施例中,裁决器408遵循确定裁决器408是否能够或应该接触数据源的政策。裁决器408还能够提供由位置服务器210可寻址的数据结构,例如,一系列可翻译的位置报告,它可以是裁决器的性能。在裁决器中的另一数据结构包括正在翻译的报告和任何翻译目标的识别。
一个适用于列出位置报告的适用数据结构的实现方法如下List[LReport]can_translate;在操作过程中,裁决器408等待来自主裁决器336的通知。一旦接收到通知之后,就检索适用于裁决的位置报告。该裁决将创建位置报告并且返回至主裁决器336。
插件管理器现在,参考图8A和8B,该图说明了插件管理器412的功能。一般来说,插件管理器412负责在位置服务器210和任何注册登记的插件之间的相互交互和数据交换。更具体的说,在一个实施例中,插件管理器412实现了两个主要的功能,它包括提供与插件交互的中央管理以及提供适用于截取源自提供者的更新通知的中央监听功能。作为一个中央管理器来说,插件管理器412是接收来自管理API(LocMgmt API)用户管理请求的中央部件。插件管理器412将该请求转换成通过位置插件API来执行的行为,其中位置插件可以是提供者、裁决器或者两者。插件管理器412’的管理控制作用是位置服务器210与裁决器和提供者的接口。在一个实施例中,插件管理器412保持着一组表示提供者的目标,并且裁决器单独插入且使得所有的插件同时注册登记。作为该组的管理器来说,插件412负责提供一系列插件向位置服务器210的注册登记,并且根据用户/应用的需求可以在服务启动时或动态地注册登记或不注册登记该插件。例如,注册登记/不注册登记可以通过管理API,例如,可以采用LocMgmtRegisterPlg、LocMgmtUnregisterPlg来实现;以及仲裁应用的只读/读写可访问插件结构;以及界面讯问和设置答话,LocMgmtQuery/SetPlg,和与插件通讯的结构数据。
在一个实施例中,插件管理器412是一个以中央部件来实现的监听源自位置提供者插件的设备更新通知。
注册登记的插件的内部表示法可以采用具有表3所示下列结构的目标以属性的方式来讨论


表 3表3中所提供的数据结构包括六种数据结构。一种是m_ePlgType,它可以提供一种识别插件类型的列举类型,包括位置提供者插件(ePlgProvider)或者位置裁决器插件(ePlgResolver)中的任意一种。第二种数据结构是m_wszGuid,它可以唯一地识别具有全球唯一标识(GUID)的插件。该GUID可以L”aQ1A11’{xxxxxxxx-xxxx-xxxx-xxxxxxxx}”的格式存储于字段wszPlgGuid中,并且也可以是插件本身的硬代码。位置服务器210在注册登记时检索该插件的GUID。
第三种数据结构是m_wszBinary,它提供了实现插件的二进制的名称。一个二进制数值可以实现多个插件,因此,数据结构一般不能够唯一识别一个指定的插件。
第四种数据结构是m_hModule,它提供了对实现插件的数据链接库(DLL)的管理。
第五种数据结构是mhNtfEvent,它提供了由位置提供者/裁决器插件所发送的通知事件,它通知对某些设备的位置检测数据是否已经变化或者位置报告是否已经推定。当呼叫进入到初始化并且将对该事件的管理返回到服务器时,插件可以创建通知事件。接着,在插件有了一个更新的设备报告/位置报告的情况下,只需要发送该事件以通知有关更新于位置服务器210。
第六种数据结构是m_pfnLocPlg*,它对由插件所输出功能提供定位。当创建了一个插件的内容(在注册登记时或者在服务器启动时)时,则位置服务器210就初始化这些插件,使之定位在预定的功能上,例如,可以将其识别成位置插件API。
插件还具有识别分类,CProvPlugin和CresPlugin,它可以将这些插件确定为裁决器插件或提供者插件。下列表4所提供的一个典型定义是从Cplugin出发的,其定义如下

表 4管理器412在位置服务器210中内部表示成一个目标,正如以下表5中所讨论的

表 5插件管理器412的号码包括了七类数据结构。第一类是m_mapRes,它可以设置所有注册登记的提供者和裁决器插件。该设置包含了对Cplugin目标的参考,各自内部表示各个插件的特性和界面。
第二类数据结构是m_hNtfEvent,它提供了对插件管理器412的通知事件。每次插件管理器412具有来自提供者插件的更新报告,该数据结构设置了这一事件。主裁决器406可以采用这一事件来注册登记,使得它能够检测到插件管理器412的通知以及在准备好时能够获取该更新。
第三类数据结构是初始化和终止,它提供了插件管理器412的初始化和终止管理。
第四类数据结构包括LoadPlugin,UnloadPlugin,OpenPlugin和ClosePlugin,它提供了对注册登记插件的组的管理控制处理。
第五类数据结构包括PullProReports,它提供了由主裁决器416来调用处理,在这种情况下,它需要从插件管理器412中获取更新的报告。
第六类数据结构包括PushResReports,它提供了由主裁决器416来调用处理,在这种情况下,它需要向裁决器插件派发一个或多个报告。
第七类数据结构包括QueryConfig和SetConfig,它提供了适用于插件管理器412的管理处理器。
在它通知收听的作用中,插件管理者412监视着由插件所产生的更新信号。该通知可以根据与通知有关的插件类型进行不同的处理。
在一个实施例中,起始于提供者插件的通知可以主动提供的方式来出现,并且在接收和/或处理时,可以采用影响频率阈值的特殊方式由插件管理器412来处理。该阈值数值的本身可以是通过诸如LocMgmtQuery/SetPlg的管理调用方式的用户设置数值。
起始于裁决器插件的通知可以根据位置报告来产生并由位置服务器210发送至裁决器,从而就不再需要阈值限制。
图8A显示了插件管理器412所使用的逻辑可检测到提供者的通知并用于检索所更新的报告,作为工作在各个提供者插件目标上的有限状态机,校对频率阈值。
当检测到通知时,就在802开始时开始工作。节点804可识别初始化804,一个初始状态的处理。该处理将提供者标记为“未初始化”,并将提供者的计时器设置成一个预定的提供者阈值Provider.last_ntf_time<-0;以及注册登记该提供者以便于更新通知。该通知转至检出812。
在超时之后,状态机800继续至节点806,该节点可识别收听状态处理。该收听状态处理806将提供者计时器设置成预定的提供者阈值并且将未初始化的提供者设置成初始化。收听状态处理806随后设置一个通知事件,设置PlgMgrNotification事件(信号PlgMgr)。如果提供者产生了一个更新通知,状态机800转至节点808,该节点可识别校对状态处理。该校对状态处理808复位提供者计时器并且确定最新的通知时间是否大于或等于预定的提供者的阈值(TimeNow-Provider.last_ntf_time>=Provider.threshold)。如果确实如此,则该通知频率阈值得到校对并通过,意味着该提供者通知在时间上的有限间隔大于提供者的阈值。如果通知经过有限时间之后,则状态机800就转至检出812。如果不是的话,则该通知频率阈值得到校对但没能通过,这意味着该通知在时间上比提供者所设置的阈值更接近。
对于未能通过来说,状态机800提供了一个暂停814,这是一种状态处理即,一个从提供者通知中撤销提供者并且将提供者计时器设置为提供者阈值等于最新的通知时间(TimeNow-Provider.last_ntf_time)。在超时之后,状态机800返回,恢复816,以重新提供者通知的注册登记。随后,状态机800转至检出812。
正如以上所讨论的,恢复816、校对808和初始化804各个都转至检出812,该状态可确定为检出状态处理。该检出状态的处理可根据最新通知的时间从提供者那里获取更新的报告Provider.last_ntf_time<-TimeNow。同样,如果提供者没有进行初始化,则提供者加以初始化标记,以及如果不存在其它没有初始化的提供者,则设置插件管理者的通知事件。
参考状态机800所讨论的行为屏蔽了在两种特殊情况下的位置服务器210的重叠通知的概率。特别是,在第一种情况下,在启动时,各个提供者都期望能从基层设备产生一个更新通知作为它的初始化数据集合的部分。如果这些通知可以无条件处理,则会使得位置服务器210随着由各个设备数据所构成位置内容的增加而自旋。实现该状态机的最佳选择是在初始化时间等待所有注册登记提供者以达到他们的初始状态,随后仅仅只集合它们的数据且发送至其它位置服务器210子系统,例如可有效更新的主裁决器。作为一个相应而生的特殊情况,基于不相信提供者(类似于任何其它插件)能进行正确的事件的假设,就有可能使提供者的初始通知延迟得太长,引起位置服务器210难以接收的延迟。为了能防止这类难以接收的延迟,则会在等待初始通知时,位置服务器210将强使超时时间等于提供者的阈值。如果达到该超时时间,即使没有它的数据也认为提供者已经初始化了,且位置服务器210已经解锁了。
在第二特殊情况下,位置服务器210可以通过指定给各个提供者的阈值数值来加以保护防止通知过度的速率。当插件管理器412处理提供者的通知时,对提供者内容中的通知打印时间标记。如果以短于所允许的阈值的时间间隔来检测下一个通知,插件管理器412可从提供者通知事件中删除注册登记的,并且启动保持阈值周期的计时器。插件管理器412从提供者处检出最新的报告并且在计时器超时之后才重新注册登记该通知。至此,位置服务器210就隔离和加以保护,避免提供者发生不规矩行为。
不论状态机800的逻辑如何,但都允许对提供者进行任何管理操作,直至包括插件拆卸/删除注册登记。
在一个实施例中,插件管理器412实现了可以保持所接收到的提供者报告的最后一个周期。最新的提供者报告包括了与设备有关的各个提供者402的提供者报告。插件管理器412负责向主裁决器406发送最新的提供者报告。在一个实施例中,正如以上有关图8A所示的讨论,插件管理器412具有至少一个与接收提供者报告超时有关的结构参数。位置服务器210受益于具有对较快或较慢提供者的超时计时,从而强制性地防止了位置服务器具有太多的报告,正如以上所讨论的。以下表6说明了一例典型的数据结构组织,它适用于存储最新一组提供者的报告,使得提供者和设备都可以检索各组报告要点 数值

表6参考图8B,方框810提供了,一旦接收到来自提供者402的通知,则插件管理器412就启动计时器,周期增1,并且记录来自提供者402的任何报告。方框820提供了插件管理器412只为各个(提供者,设备)对存储最新一组位置报告。例如,参考表1,通过只采用来自给定对的最新数据以及放弃较老的数据就可以避免冗余。方框830提供了,在计时器超时之前,无论提供者在什么时候通知插件管理器412,都记录着来自提供者402的报告。方框840提供了在计时器超时之后,插件管理412就从插件管理器高速缓存中提取任何所记录的报告,并且写入到数据结构“PLUGIN MANAGER”。
现在,参考图9,它显示了插件管理器412所提供的适用于各个提供者操作的状态转移图。状态转移图以900开始它的初始化910。如果正如线920所显示的接收到来自提供者的通知,则在节点912,插件管理器就初始化在插件管理器412中的代码以记录位置报告和启动计时器。线930可在节点922识别位置报告通知的重复环路和记录报告。线940可识别为当计时器超时之后,在节点932将数据写入PLUGIN MANAGER。如果计时器没有超时,则线950识别处理环路返回至节点912。在一个实施例中,适用于记录位置报告设备的代码为插件管理器保持着报告的各个设备创建一组新的位置报告。另外,该代码可以构成一系列所有组的位置报告,以相关周期的标识来时间打印该报告以及对准备向插件管理器412以外发送的报告设置标志。
熔断器现在,参考图10,该方框图说明了熔断器引擎340的基本功能。熔断器引擎340产生根据位置报告和从高速缓存334中读取的位置报告产生一个表示计算机位置的最佳推测的相一致的位置目标。熔断器引擎340完成了一个本文称之为熔断器的处理过程。熔断器涉及不一致性报告的不一致性解决、统一和协调。
参考图10,方框1010提供了熔断器引擎340接收到一组位置报告和一组与该位置报告有关的位置报告。该报告可以分别来自几个提供者和裁决器,或者所接收到的报告可以是以一系列报告,例如,来自主裁决器336。某些报告是相互不一致性的。例如,位置报告也许会给出计算机所在的不同房间的号码。方框1020提供了熔断器引擎340提供应用一个和多个统计处理来裁决这些不一致性,例如,在不一致性的报告中进行加权投票表决的处理。加权来自一组预定的源并且包括一个提供者的加权、裁决器的加权、裁决器的分离加权、空间不确定性和报告的使用期间。
方框1030提供了熔断器引擎340提供有效的位置报告填入最终报告位置目标的不同字段来统一报告。例如,给出房间号码的报告归之于房间字段,并且给出建筑物号码的报告归之于建筑物字段。
在一个实施例中,位置报告和由熔断器340所接收到的位置报告以裁决器报告的树形的方式,熔断器引擎340将其转换成应用和位置服务器210以外等等都可使用的一个单一的位置报告和位置目标。单一的位置报告可以组合成一个预定的格式,例如,由MapPoint所定义的Microsoft Location Report格式或者其它所适用的应用。
在一个实施例中,位置服务器210将两类报告都发送至熔断器引擎340。一种可以包括纬度、经度和高度的度量报告。该度量报告可以包括一个X分量和一个Y分量,正如在使能Y轴和X轴的位置。位置服务器可以发送给熔断器引擎340的另一类型包括包括一个层次的报告,它表示了,例如,(建造物楼层,房间);(街的地址,城市,州,国家);或者(宇宙,银河,太阳系,行星)以及其它等等。层次报告的元素也可以分开的位置报告来表示,但它可以具有允许在熔断器引擎340中创建或组合层次报告的链接。这类发送至熔断器引擎340的报告都可以由适当传送来接收。该传送可识别发送至熔断器340的信息类型,使得熔断器340能够熔断器该信息。
在一个实施例中,在报告发送至熔断器引擎340之前,位置服务器210的另一个分量可以在各个报告的各个元素上或者报告的自身上加以标记,以加权使之熔断器。此加权诸如提供者加权,裁决器分离加权,空间不确定性,裁决器加权和报告使用时间加权可以从零至1的整数或实数来表示。有关加权,在一个实例中,提供者加权代表提供者信赖度。更具体的说,提供者的可信赖程度可以是由位置服务器210所确定的概率,它也是与报告有关的指定提供者提供正确数据的概率。在一个实施例中,提供者的可信赖程度是由用户所确定的,它是通过用户界面允许用户对不可信赖的提供者进行向下加权的所确定的。例如,大家公认具有不正确的位置数据的蜂窝电话提供者就可以由用户进行向下加权。
裁决器加权可以是裁决器可信赖程度,这是由位置服务器210根据与报告有关的指定裁决器提供正确的数据所确定的。在多个裁决器与一个报告有关的情况下,可以采用一个概率参数来考虑多个裁决器的可信赖程度的参数。
空间不确定性加权可以是与指定报告的精度有关的加权。例如,如果报告是基于802.11类访问点提供的房间号码或位置,并且所访问的点覆盖近100个房间,则报告的空间不确定性参数就是1/100。
使用时期加权可以是使用期间的可信赖程度,它是时间的函数。可以给报告小于报告使用期间的加权。随着报告使用期间的延长,该使用期间的加权减小。在一个实施例中,使用期间的加权是采用一个时间的负指数函数来确定的,它包括了一个最小量的加权以及在报告超时之后就没有加权。
裁决器分离加权也可以用于考虑通过多个裁决器来分离一个单一提供者的报告。例如,8012.11提供者可以具有它自己发送给两个不同裁决器的报告,各自都具有纬度和经度。在这种情况下,裁决器的分离加权将为0.5,它反映了将一个提供者的报告分成了两个裁决器的报告。这提供将一个单一的提供者报告分离成多个裁决器的报告来防止所增多的可信赖加权。
在一个实施例中,对某些类型的报告来说,例如,度量类型的报告。加权就可以通过加权的相乘来组合成一个单一的加权。
正如公式1所示,一组度量报告可以提供应用加权平均来表示。更具体的说,公式1表示了如果在报告i中有四个加权w1i,w2i,w3i,和w4i,则熔断器通过相乘wi=w1iw2iw3iw4i,将其组合成一个加权。对一组诸如(xi,yi)且其中i=1KN的度量报告来说,则熔断器报告可以加权平均(x,y)=(Σi=1Nwixi,Σi=1Nwiyi)/Σi=1Nwi]]>(公式1)对层次类的报告来说,就不是加权平均,熔断器引擎340应用一个加权层次投票表决处理。例如,参考表7,以下提供了一个四层的层次报告的实例。各个报告都提供了一个建造物、房间和楼层的元素。加权与各个报告的各个元素有关。熔断器引擎340从报告的树来组合这些元素。在一个实施例中,报告的树是在柱裁决器336中创建的。

表 7参考表7,四个报告被标记为1-4。加权的层次投票初始化采用了层次的物理最高等级来进行。在表7中,最大的元素是建造物。各个候选的加权求和。例如,在表7中,建筑物40的组合加权为0.9+0.8+0.9=2.6,这是一个比与建筑物41有关的组合加权为0.3更高的组合加权。
在一个实施例中,在从考虑中消除了一个最大等级的层次元素之后,也自动消除了任何对最高等级的子等级。于是,在消除了建筑物41之后,也就消除了建筑物的子等级。即,在建筑物41中的任何层次也从位置的考虑中消除。所保留的层次,所保留的加权平均表示该层次3可以具有正确的最大概率。在层次3被确定之后,层次4和层次1以及层次4上的房间都可以消除。在保留的房间之间,房间3141具有最大的加权。因此,熔断器引擎340所确定的位置是建造物40,层次3和房间3141。
熔断器引擎340可以为位置服务器210所确定的层次创建一个诸如表7的表格。一个层次可以具有一个和多个等级。在一个等级的层次类型中,熔断器引擎340应用投票的方式来确定在该等级之后的最大概率的位置。
通知服务通知服务的操作是与WinFS通知平台相结合的。通知的应用确定了应用可以预订的通知类型,该何时和如何来通知应用。通知应用包含着预订的方案、通知方案、事件源、事件方案、通知产生规则和通知格式。
预订方案定义了应用所产生的事件,例如,Outlook也许要注册登记。例如,适用于位置服务的预订方案将允许Outlook在当前位置是“房间”时通知注册登记。通知方案定义了在得到通知时怎样的信息达到Outlook。例如,通知方案也许允许Outlook接收时间、日期和当前的位置。事件源定义了事件的源。一个事件的发生也许是注册登记通知的应用所感兴趣的。例如,熔断器340所把新的位置写入到WinFs中就是一个事件。该事件源是WinFS。
事件方案定义了对一个事件需要怎样的信息。例如,一个事件所需要的时间、日期和位置。通知产生规则将事件与预订方案相匹配,以了解一个应用是否需要发送通知。例如,假定当前的位置是“房间”,并且应用已经注册登记了当位置是“房间”是发送通知,则通知产生规则就校对该匹配并产生一个通知。通知格式只是定义了通知寻找应用的方法,这对从SQL语言中抽象应用是非常有用的。
通知服务器460可以保持与位置列表有关的应用标记图。该图使得注册登记通知服务器460的应用能够在位置目标识别位置与应用标识相匹配时接收通知。
一例适用于通知调配器的数据结构可以包括Map[Application,List[Location]]的注册登记;现在参考图11,该流程图说明了通知服务器460的方法。方框1102提供了通知服务器等待来自高速缓存334的通知。在另一实施例中,该通知可以来自位置服务器210的另一部件,例如,熔断器引擎340或者其它等等。方框1110提供了通知服务器460接收来自高速缓存334的通知。方框1120提供了通知服务器460从WinFS中检索位置。判决方框1130提供了通知服务器460随后校对与位置与应用相匹配的数据结构。如果所列出的任何位置都与位置目标相匹配,则在方框1140中通知所确定的应用。如果没有应用被确定,则通知服务器460就进入到等待状态直至在方框1150中接收到来自高速缓存334的另一通知。
提供者提供者从传感器中检索设备所指定的位置信息,归一化该信息,将该信息转换成标准格式,并且将该信息发送到插件管理器412。适用于位置服务器210的提供者402具有计时器T和从它负责的各个设备中获得的最新报告。该计时器T可以设置在此时间上即,起到调节阀作用防止设备压倒提供者插件和位置服务器210的时间上。
在一个实施例中,传感器和/或提供者发布表示位置服务器210版本的版本号,提供者/传感器以此版本号工作,并也是一个版本号。例如,GUID可以唯一地识别一个传感器/提供者。在一个实施例中,提供者可以一个强名称的组合方式来实现,从而提供者可由位置服务器210安全识别。
提供者402还保持着一个来自各个设备的最新报告,以便于校对在感觉到的位置中是否已经发生了显著的变化。如果是,则提供者就通知插件管理器412。以下显示了任何适用于在提供者中保持数据的典型数据结构Map[Device,Device Report]LastReport现在,参考图12,更详细地讨论由提供者402所执行的处理过程。更具体地说,方框1210提供了当来自传感器的通知第一次到达时,提供者就检索该报告。提供者将该报告存储于一个适当的数据结构中。方框1220提供了提供者随后将该报告翻译成一个位置报告。方框1230提供了提供者随后将位置报告发送至插件管理器412并启动计时器T。
判决方框1240确定计时器T是否已经超时。如果没有超时,并且来自传感器的通知已经达到,则提供者就在方框1250中忽略该报告。如果是,计时器T已经超时,且在来自传感器的报告到达时,提供者在方框1260中检索该报告。方框1270提供了提供者将该报告与来自传感器的最新报告相比较。判决方框1272提供了确定是否已经发生了显著的变化。方框1280提供了如果发生了显著的变化,则将“NeedToSend”设置为TRUE,反之将在方框1290中将“NeedToSend”设置为FLASE。如果“NeedToSend”为TRUE,则方框1290提供了发送该报告并且复位计时器。如果“NeedToSend”为FLASE,则方框1294提供了等待来自传感器的下一个通知。
数据结构当本领域的熟练技术人士受益于本披露都会意识到为了充分利用位置服务器210,位置服务器210可以具有多种数据结构。在本文提出的实施例的范围内可以有许多中其它或组合的数据结构。典型的数据格式和数据结构可以包括位置报告(LReport);位置报告的集合(ColLReport);位置目标(Location);以及位置扩展目标(LocationEX)。
位置报告可以是由提供者插件310”所产生的报告。位置报告可以表示一个自主的信息片,即使一个提供者具有与多个传感器有关的信息,提供者也能产生多个位置报告。在一个实施例中,位置报告包括具有置信度、报告标识和报告类型等有关数据的数据结构。在一个实施例中,位置服务器210需要提供者能够支持由位置报告所继承的内部位置报告。该内部位置报告可以包括一个标识、一个NDMedia类型、Funnel类型,以及一个或多个熔断器加权。
相对于位置报告,另一种数据结构是一组位置报告。位置报告的集合可适用于裁决器408所接收到的各位置报告产生一个或多个报告。SetLReport用于表示裁决器产生的内容。一个典型的数据结构如下typedef SetLReport=Set[Lreport]以上所讨论的与位置服务器210不同分量有关的数据结构是一个位置目标。以上所讨论的位置目标是由熔断器引擎340所产生的,它是熔断器处理过程中的一部分。构成与位置服务器210相一致的应用期望使用位置目标,该位置目标可以是位置报告的集合,以确定运行服务的计算机的位置。在一个实施例中,该集合包括了一个位置、一个地址、一个层次的位置和元数据。
在一个实施例中,位置报告包括了两类报告,应用位置报告和内部位置报告。内部位置报告继承了位置报告。在内部位置报告和应用位置报告之间的差异是该内部位置报告可构成对熔断器初始化。该内部位置报告可以由熔断器340、提供者402和裁决器408所产生。应用位置报告可构成应用使用。正是如此,应用位置报告独立于熔断器所需要的数据,例如,熔断器加权和传递类型。应用位置目标包括了应用位置报告的集合。在一个实施例中,一个扩展目标可以是内部位置报告的集合;并且位置目标可以是良好定义的应用位置报告的集合,正如以上所讨论的。位置扩展目标可以包含指定一个用户当前位置的内部位置报告的任何集合。
回到参考图4,多个API使得位置服务器210能够与应用、插件和位置服务器210中的内部部件相互作用。以上所讨论的一个API是位置管理API(LocMgmt)420。位置管理API420允许应用构成插件,例如,裁决器插件408、高速缓存334、主裁决器336、和熔断器引擎340。LocMgmt 420具有以下构成插件的功能。在一个实施例中,LocMgmt 420遵循文件处理的模式。于是,在该实施例中,打开插件就引起对要创建的插件的处理。在时间的任何一个点上只能对插件进行一次读写处理,但是同时可以进行打开读取的多次处理。插件必须是在能够进行读写之前打开。关闭插件的操作可关闭对插件的处理。
以位置服务器来注册登记一个插件输入参数插件GUID、插件名称列举所有的插件输出参数具有所有插件GUID、名称和类型的列表打开对插件的处理,以读取或写入构成信息输入参数插件GUID、读取或写入输出参数对插件的处理从一个打开的插件读取参数输入参数对插件的处理输出参数插件参数、成功或失败对一个打开的插件写入参数输入参数对插件的处理、插件的参数输出参数成功或失败对一个插件关闭处理输入参数对插件的处理从服务器中删除注册登记的插件输入参数对插件的处理LocMgmt API 420的另一功能是提供了构成高速缓存334的以下功能。正如与插件所使用的模式那样,该API能够遵循文件处理类型的模式打开位置高速缓存的处理,以读取或写入结构信息输入参数读取或写入输出参数对高速缓存的处理从高速缓存中读取参数输入参数对高速缓存的处理输出参数高速缓存参数、成功或失败对高速缓存写入参数输入参数对高速缓存的处理、高速缓存的参数输出参数成功或失败关闭对高速缓存的处理输入参数对高速缓存的处理
LocMgmt API 420还提供了构成主裁决器336的以下功能。该API可以构成遵循文件处理模式打开位置高速缓存的处理,以读取或写入结构信息输入参数读取或写入输出参数对主裁决器的处理从主裁决器中读取参数输入参数对主裁决器的处理输出参数主裁决器参数、成功或失败对主裁决器写入参数输入参数对主裁决器的处理、主裁决器的参数输出参数成功或失败关闭对主裁决器的处理输入参数对主裁决器的处理用户定义的参数在一个实施例中,位置服务器210可以设置在一台用户计算机中,它可以是一个移动设备或者是一个固定设备。如果位置服务器210与一个用户有关,则位置服务器210就能够构成用户所感兴趣的高速缓存器位置。例如,用户可以与网络相连接并且具有能够访问诸如有效目录的位置信息的数据库。同样,用户可以是本地数据库。在一个实施例中,位置服务器210使用缺省参数,并且用户可以选择变化服务器的参数。
更具体的说,如果用户选择变化位置服务器210的参数,例如,裁决器插件408或者提供者插件402的可信赖性。另外,位置服务器210可以构成能够使用学习算法,例如,反馈控制系统可以使用统计分析来确定不同提供者310和裁决器408随时间的正确性。根据位置服务器210的结构,就可以设置基于不同插件的固有的偏置或者位置服务器210可以根据精度、用户优先和响应时间来区分来自插件信息的优先次序。
在一个实施例中,位置服务器210能够构成对不同的应用产生不同的信息。例如,一个应用可以构成来唯一接收一个传感器的指定信息。
安全性另一实施例提出了诸如位置服务器210的位置感知服务的安全性。更具体的说,位置服务器210可以包括避免和其它访问安全问题的结构和相关的编程作为一种背景来说,本文所指的哄骗是指欺骗数据的接收者相信数据的发送者并不是真正的数据发送者的行为。在一个实施例中,所获得的来自插件本身的源可以是哄骗的并且插件所接收到的各个数据包也可以是哄骗的。本文所指的老化是指改变接收器所接收到的数据的行为。由插件所接收到的数据可以潜在地由“电脑黑客”在无线或有线的连接中进行老化。本文所指的否认是指在发送者后来否认发送数据的情况。于是,一个源可以提供给插件具有后来否认与该源有关的数据。本文所指的信息披露是指向不是故意的对方披露信息的行为。于是,一个源可以根据插件所产生的疑问来追踪用户的位置。一个源可以向其它源转发用户的位置信息或由它们的插件所产生的疑问。用户所存储的位置可以被其它用户访问。
本文所指的拒绝服务是指防止合法的实体来使用诸如位置服务器210的服务。例如,应用可以强制位置服务器210的信息请求。应用220能强制位置服务器210注册登记对位置变化的通知,用户可以存储多个适当数量的位置;插件可以强制位置服务器210使用数据;黑客可以拷贝发送到插件的数据并且可以继续向插件发送数据,从而可以强制使用插件和位置服务器210。
本文中特权的提升是指具有对其它用户特权的命令的攻击者的执行。缓冲器过流引起由插件获得数据,插件可以采用与服务器相同的特权,执行可执行的命令来筛选。一个新的插件可以预谋地或者故意地写在老的插件上。位置服务器210可以构成能够保护对用户位置信息的访问。位置信息可认为是个人信息并且具体设备保护信息不被披露给不可靠的对方。
本文所指的具体设备涉及来自攻击者渗透的五点,包括位置信息源、搜寻服务、用户输入、应用API和插件的界面。
有关保护位置信息的源,位置信息的源是向提供者提供位置信息的实体。该源可以包括,例如,GPS、802.11、GPRS和NLA。
位置服务器210可扩展到检出许多位置信息的源并且允许用户来调节源的可信度。
此外,位置服务器210可以保护在Windows.Net平台上的服务,从而提供了稳定性。位置服务器210允许提供者加密它的数据以解决安全性的问题以及对应用领域的授权;从而允许第三方插件可以在一个没有网络访问的应用领域中运行。这类应用领域可以使用Microsoft’Net命令语言运行时间(CommonLanguage Runtime=CLR)来创建,它提供了一种实现多源语言的共享类型系统、媒体间语言和动态执行的环境。
一个搜寻服务是基于原先提供者或裁决器的信息来获得多个位置信息的裁决器的服务。MapPoint,Active Directory和WinFS是两种主要搜索的位置信息。
位置服务器210具有可支持任何后端的类属的万维网服务裁决器。更具体的说,在一个实施例中,位置服务器210可以构成与Windows PrivacyPlatform(WPP)交互。该WPP是一项技术基础,它使得开发者能够在用户信息中提供通知和选择且用户信息涉及一个应用、网页和服务。WPP可以在操作系统上分布执行系统的核心元件来实现,它具有适用于系统部件的信息机制,这样的系统部件类似于Watson、服务质量管理(SQM)、Fusion以及网络层,以在继续潜在的隐私影响操作之前能验证用户的优先。策略/许诺管理的核心基础是由其它部件模式来扩张的,用于从操作系统的各个方面来去除用户的历史。在该核心的编程层面上,WPP提供了一组相容的用户界面结构适用于隐私通知、获得用户承诺以及反映在机器可读隐私方案中提出的隐私状态。于是,在一个实施例中,WPP可以实现能够获得后端的隐私策略并与用户优先相比较。不一致性会使得所承诺的用户界面可以出现提醒用户。如果存在着不一致性,所承诺的用户界面可以构成弹出来提醒用户。此后,用户可以为网页服务设置异常。
在一个实施例中,位置服务器210使用WPP来获得裁决器的隐私策略以及与用户优先相比较。不一致性会引起所承诺的用户界面显示提醒用户。用户可以为裁决器选择异常。在一个实施例中,CLR基础可以构成安全地识别裁决器。
位置服务器210具有一个集中的高速缓存332,它是由位置服务器210控制,它可以保护服务器免受某些安全攻击。此外,位置服务器210可以构成拒绝裁决器获得用户当前位置的全部内容。
位置服务器210可以配置为记录什么时候改变位置目标并由它记录;什么时候使用位置用户API 418和位置通知API 416以及任何其它应用所使用的API并由它记录;和什候时候提供者和裁决器提供位置信息记录。这就保护了位置服务免受某些安全攻击。
位置服务器210可以构成与WPP一起工作,以获得应用的隐私策略并与用户优先相比较。任何不一致性都会引起所承诺的用户界面提醒用户。此后,用户可以选择设置一个异常。CLR可以用于安全地识别应用。在一个实施例中,只有一个机器管理员允许对位置服务器210注册登记或删除注册登记应用。此外,位置服务器210可以构成便于诊断那些应用使用位置信息。
在一个实施例中,任何与位置服务器210有关的插件都可以构成对所接收到的信息计数。如果在一个规定的时间帧中接收到的信号太大,则插件可以构成停止收听该信号。在时间的随机量之后,插件可以重新开始再次收听该信号。如果信号的数量仍旧太大,则插件可以执行指数性的后退。特别是,正如以上有关插件管理器412的讨论那样,各个插件都可以构成具有相类似的校对和平衡。插件也可以构成校对它们所接收到的信息,以了解该信息是否包含着可以用于形成可执行的代码的特殊特性。
位置服务器210的安全性能也可以包括适用于应用220的性能。例如,位置服务器210可以构成包括对应用可以产生当前位置和注册登记通知的请求数量的调节阀。此外,用户访问控制列表可以一种附加的数据结构来保持,以避免智能合法用户改变服务器的参数以及避免智能合法用户读取、写入或使用其它用户的简介信息以及读取、写入和使用由其它用户所存储的位置。
由于本发明的原理可以应用于许多可能的实施例中,因此应该意识到本文结合附图所讨论的实施例旨在仅仅是说明性的,并不是作为对本发明范围的限制。例如,本专业的熟练技术人士都会意识到以软件方式说明的实施例的各个部件也可以硬件的方式来实现,反之亦然,或者所说明的实施例可以在不背离本发明的精神的条件下在结构和细节上进行改动。因此,本文所讨论的发明企图将所有这类实施例都纳入在后附权利要求以及其等效技术方案的范围之内。
权利要求
1.一种操作计算机可实现服务的方法,包括接收计算设备的位置内容的请求;采集来自一个或多个位置检测设备与当前位置有关的数据;通过对所采集的数据应用至少一个处理,以对与当前位置有关的任何不一致性进行协调;和,产生一个能访问一个或多个应用的位置目标,该位置目标包括一个适用于计算设备的协调过的位置内容。
2.如权利要求1所述方法,其特征在于,所述处理是一个或多个层次的、度量的、字符串连接、结合、交集、不确定性处理以及不一致性裁决处理过程。
3.如权利要求1所述方法,还包括响应接收到的采集数据,根据预定的度量向一个或多个能够有效和能够裁决所采集数据的裁决器发送所述采集数据。
4.如权利要求1所述方法,其特征在于,所述协调的位置内容压缩在所获得的位置目标中。
5.如权利要求1所述方法,还包括响应接收到的所产生的位置目标,根据与应用有关的位置注册登记向应用发送所述位置目标。
6.如权利要求1所述方法,还包括根据所述采集数据的可信赖性来对所述采集数据分配优先权。
7.如权利要求6所述方法,其特征在于,所述可信赖性是由一个用户来分配的。
8.如权利要求6所述方法,其特征在于,所述可信赖性是提供确定所述采集数据是否具有安全的数字式特征来确定的。
9.如权利要求1所述方法,其特征在于,所述接收对位置内容的请求包括在通知部件上接收位置识别符。
10.如权利要求1所述方法,其特征在于,所述一个或多个位置检测提供者包括至少一个802.11类型的提供者、网络位置感知(NLA)提供者、全球定位服务(GPS)提供者、通用分组无线服务(GPRS)提供者数据以及蓝牙提供者。
11.如权利要求1所述方法,其特征在于,所述协调所采集的数据包括对所采集的数据应用一个或多个统计处理过程来确定大多数类似的位置内容。
12.如权利要求11所述方法,其特征在于,所述统计处理过程包括可能位置内容的加权平均。
13.如权利要求1所述方法,其特征在于,所述位置目标是由在计算机实现的服务器中的熔断器引擎来产生的。
14.一种服务器,它包括一个位置管理部件,它构成了路由位置数据;一个熔断器引擎,它与位置管理部件相耦合,该熔断器引擎构成了接收由位置数据所产生一个或多个位置报告,协调在位置报告之间的不一致性并产生一个位置目标;以及,一个和多个位置应用编程界面(API),它与位置管理部件相耦合,至少一个位置应用编程界面构成了将来自熔断器引擎的位置目标发送至一个应用,所述位置目标构成了向应用动态提供一个适用于计算机运行服务的位置内容。
15.如权利要求14所述服务器,其特征在于,至少一个位置API与至少一个提供者插件相耦合,构成了接收来自原始位置数据提供者的位置数据,所述提供者插件构成了归一化原始的位置数据。
16.如权利要求14所述服务器,其特征在于,所述位置API包括至少一个位置API构成了允许应用询问计算机运行服务器的位置内容。
17.如权利要求14所述服务器,其特征在于,所述位置API包括至少一个位置API构成了规定由注册登记服务的插件所实现的功能。
18.如权利要求14所述服务器,其特征在于,所述位置API包括至少一个位置API构成了接收来自一个或多个熔断器引擎、一个位置高速缓存、一个插件管理器和一个裁决器的位置数据,所述位置API构成了向应用发送所述位置数据。
19.如权利要求14所述服务器,其特征在于,所述位置API包括至少一个位置API构成了允许构成服务器的参数。
20.如权利要求14所述服务器,其特征在于,所述位置API包括至少一个位置API构成了添加和去除服务器的插件。
21.如权利要求14所述服务器,其特征在于,所述位置API包括至少一个位置API构成了允许所述应用在计算机运行服务的位置内容发生变化时注册登记通知。
22.如权利要求14所述服务器,其特征在于,所述位置API包括至少一个位置API构成了向和从至少一个插件发送和接收所述位置数据,所述插件构成了基于所述位置数据和基于所述推断的内容数据来添加丰富的内容。
23.如权利要求22所述服务器,其特征在于,所述插件是一个用户定义的缺省插件。
24.如权利要求22所述服务器,其特征在于,所述位置管理部件包括一个插件管理器,它构成了路由位置信息;以及,一个主裁决器,它与所述插件管理器相耦合,所述主裁决器构成了向一个或多个适用于位置信息的裁决器分配所述位置信息。
25.一种向应用程序提供动态位置信息的方法,该方法包括接收所述应用程序对位置内容数据的询问;动态集中来自一个或多个提供者的位置内容数据;根据统计功能来协调所述位置内容数据来裁决任何不一致性;以及,向应用程序发送所裁决的位置内容数据。
26.如权利要求25所述方法,其特征在于,所述统计功能是一个最佳的推测功能。
27.如权利要求25所述方法,其特征在于,所述动态集中位置内容数据是由一个位置管理部件执行的,所述位置管理部件构成了集中位置内容数据并分布所述位置内容数据进行协调。
28.如权利要求27所述方法,其特征在于,所述位置管理部件构成了接收来自一个或多个提供者和一个或多个裁决器的位置内容数据。
29.如权利要求28所述方法,其特征在于,所述提供者包括能够对所述位置管理部件进行原始位置信息通讯的插件,所述原始位置信息包括无线位置数据,它可包括一个或多个访问点以及一个与访问点有关的信号强度。
30.如权利要求28所述方法,其特征在于,所述提供者包括能够对所述位置管理部件进行原始位置信息通讯的插件,所述原始位置信息包括一个或多个802.11类型的提供者数据、网络位置感知提供者数据、GPS提供者数据、GPRS提供者数据、蓝牙提供者数据,以及动态目录数据。
31.如权利要求30所述方法,其特征在于,所述动态目录包括识别一个或多个访问点的媒体访问控制(MAC)地址代码。
32.如权利要求25所述方法,还包括将所述位置内容数据存储于数据库,所述数据库构成了保持至少一个所述位置内容数据、用户指定数据和应用指定数据的历史。
33.如权利要求25所述方法,其特征在于,所述位置内容数据包括原先从一个传感器指定设备发送给一个提供者的设备指定位置信息;原先从一个服务器发送给一个裁决器的源指定信息;由所述服务器内部使用的位置信息;
34.一种具有计算机可执行指令的计算机可读媒体,它使能计算机系统的位置内容的感知,所述计算机可执行指令执行的行为包括接收一个适用于计算机设备的位置内容的请求;采集来自一个或多个位置检测设备的与当前位置有关的数据;协调任何向不一致性的采集数据;以及,产生一个可访问一个或多个应用的位置目标,所述位置目标包括一个适用于计算设备的协调后的位置内容。
35.一种从多个位置提供者中至少一个提供者接收到的数据中产生丰富位置内容报告的方法,所述多个位置提供者遵循多个不相容的协议,该方法包括一旦从一个或多个位置提供者接收到一组位置报告的有效性的通知,则检索该组位置报告;对在该组位置报告中的各个位置报告,确定裁决器是否能够和有效地翻译所述位置报告并且具有不能超出的重复预定的数量;如果裁决器是能够、有效的并且具有不能超出的重复预定的数量,则向所述裁决器发送所述位置报告;从一个或多个裁决器接收到一个或多个与相互矛盾的协议有关的丰富的位置报告;在根据标准化的数据结构将丰富的位置报告组合成一组丰富的位置报告,在一组丰富位置报告中的各个丰富位置报告;以及,向一个熔断器引擎发送该组丰富的位置报告。
36.如权利要求35所述方法,还包括接收来自所述熔断器引擎的一个位置目标;以及,将该组丰富的位置报告写入到一个通知服务器。
37.如权利要求36所述方法,其特征在于,所述通知服务器设置在一个文件系统中。
38.如权利要求35所述方法,其特征在于,一个或多个预定时间和预定的重复数量都是由用户提供一个用户界面来构成的。
39.一种具有计算机可执行指令的计算机可读媒体,它使能从多个位置提供者中至少一个接收到的数据中产生丰富的位置内容报告,所述多个位置提供者遵循多个不相容的协议来感知一个计算机系统的位置内容,该计算机可执行指令执行的行为包括一旦从一个或多个位置提供者接收到一组位置报告的有效性的通知,则检索该组位置报告;对在该组位置报告中的各个位置报告,确定裁决器是否能够和有效地翻译所述位置报告并且具有不能超出的重复预定的数量;如果裁决器是能够、有效的并且具有不能超出的重复预定的数量,则向所述裁决器发送所述位置报告;从一个或多个裁决器接收到一个或多个与不相容的协议有关的丰富的位置报告;根据标准化的数据结构将丰富的位置报告组合成一组丰富的位置报告,在丰富位置报告的组中的各个丰富位置报告;以及,向一个熔断器引擎发送该组丰富的位置报告。
40.如权利要求39所述计算机可读媒体,其特征在于,所述行为还包括接收来自所述熔断器引擎的一个位置目标;以及,通知一个通知调度器,它将有效的位置目标通知一个或多个应用。
41.如权利要求39所述计算机可读媒体,其特征在于,所述行为还包括在预定的时间之后,向所述熔断器引擎发送所述丰富的位置报告。
42.如权利要求41所述的方法,其特征在于,一个或多个所述预定时间和所述重复预定数量都是由一个用户通过一个用户界面来构成。
全文摘要
一种位置服务和方法提供了一种位置感知计算设备,通过允许不同类型的位置感知提供者与服务器工作而扩展的。该方法包括接收对位置内容的请求、从一个或多个位置检测设备采集与当前位置有关的数据、通过应用一种层次或一种度量处理过程或两者过程来协调任何与当前位置有关的相不一致性的采集数据。该服务器包括一个构成发送路由位置数据的位置管理部件,一个构成接收由位置数据产生的一个或多个位置报告、协调在位置报告之间的不一致性并产生一个位置目标的熔断器引擎,以及一个或多个与位置管理部件相耦合并向一个应用发送来自熔断器引擎的位置目标的位置应用程序编程接口(API)。
文档编号H04W64/00GK1534514SQ20041003231
公开日2004年10月6日 申请日期2004年3月26日 优先权日2003年3月28日
发明者M·S·阿拉姆, W·V·巴克里, T·M·莫雷, G·E·皮舍, S·A·N·沙弗尔, F·迪奥多雷斯库, Y·姚, M·帕瓦尔, J·C·克鲁姆, M S 阿拉姆, N 沙弗尔, 克鲁姆, 叨, 巴克里, 皮舍, 莫雷, 露嗬姿箍 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1