利用第三方数据和元数据来扩展联合图的制作方法

文档序号:14959044发布日期:2018-07-18 00:09阅读:165来源:国知局

目前存在提供统一接口以访问由众多数据供应者所提供的信息的计算系统。例如,网络服务可以提供统一的网络服务应用程序接口(“api”),例如统一的网络服务api,其暴露了由众多其他联合数据供应者所控制的相关数据,例如由同一实体所操作的其他网络服务。

当在这样的api处接收请求时,所请求的数据从其他联合数据供应者获得、被组合、并且作为对请求的单个统一响应而被提供。通过以该方式对用于访问数据的统一api的实现,可以方便地进行单个请求以从许多不同的联合数据供应者获得数据。从这样的系统中的各种数据供应者可获得的内容的集合一般被称为“属性图”,或更简单地,“图”。一个示例是由微软公司所提供的microsftgraph,其目前在graph.microsoft.com可访问。

用于提供对这样的图的访问的系统频繁地使用“所有者+装饰者”模型,其中,图中给定的资源或实体由单个网络服务控制,并且通过由同一实体操作的其他联合网络服务而“装饰”有额外的数据。例如,可以利用一个网络服务来控制关于网络用户的某些信息。还可以利用其他联合“装饰者”网络服务来给用户信息“装饰”有关于网络用户的额外的信息。

利用“所有者+装饰者”模型以提供对属性图的统一访问的系统倾向于与相对较少数量的“装饰者”网络服务较好地工作。然而,当利用大量(例如,数百或数千)的“装饰者”网络服务时,“所有者+装饰者”模型可能会出故障。因此,第三方(即,与属性图的供应者或消费者不同的当事方)通常不被允许将其网络服务作为数据的“装饰者”集成在这样的图中。

如在上文简要提及的,用于实现提供对属性图的访问的“所有者+装饰者”模型的各种网络服务(例如“控制”网络服务和各种“装饰者”网络服务)通常由同一实体来操作。出于网络安全性的考虑,“装饰者”网络服务的第三方供应者可能非常不情愿将其网络服务与这样的实体联合。例如,“装饰者”网络服务的第三方供应者可能不想通过将数据提供至操作实现“所有者+装饰者”模型的各种网络服务的实体而妥协其数据的安全性。

关于这些和其他考虑呈现了在本文中进行的公开。



技术实现要素:

在本文中描述了用于利用第三方数据和元数据来扩展联合图的技术。通过实现在本文中公开的技术,可以利用任意大数量的第三方提供的“装饰者”网络服务来装饰通过统一网络服务api可访问的在属性图中所包含的数据。此外,实现在本文中所公开的技术可以使得第三方“装饰者”网络服务以不妥协由第三方所维护的数据的安全性或统治权的方式与联合图相集成。与在本文中具体标识出的这些不同的技术益处也可以通过对所公开的技术的实现来达成。

根据在本文中所公开的一个配置,一种网络服务,其在本文中被称为“联合图供应者服务”,提供了用于暴露用于访问图中的数据的统一网络服务api。例如而不进行限制,联合图供应者服务可以暴露网络服务api,通过该网络服务api,服务客户端可以从图中获得数据。响应于针对数据的请求,联合图供应者服务可以从多个其他联合数据提供者获得并组合数据,例如由操作联合图供应者服务的同一实体所操作的“装饰者”网络服务。

联合图供应者服务还可以提供用于与第三方提供的“装饰者”网络服务相集成的功能,其在本文中被称为“联合面(facet)供应者服务”,或者更一般地,“面供应者服务”。如上文简要讨论的,联合图供应者服务可以以允许使用任意大数量的联合面供应者服务的方式,以及以不妥协由联合面供应者服务维护的数据的安全性和统治权的方式来与联合面供应者相集成。

为了使能该功能,联合面供应者服务首先向联合图供应者服务注册为针对特定面的供应者。例如,在上文中所描述的示例中,其中,图保存关于用户的数据,面可以是关于在图中所标识的用户的任何任意信息,例如用户的鞋或帽子的尺寸。面可以通过与联合面供应者服务和联合图供应者服务相关联的数据或元数据而与图中的资源相关联。

联合面提供者服务在不同于联合图供应者服务在其中操作的网络(其在本文中可以被称为“图供应者网络”)的网络(其在本文中可以被称为“面提供者网络”)中操作。额外地,操作联合图供应者服务的实体以及操作联合面供应者服务的实体具有联合关系。在一些配置中,通过该关系,操作联合图供应者服务的实体可以发出允许用户访问联合面供应者服务的认证令牌。在下文讨论了关于该机制的额外细节。

在一个特定配置中,联合面供应者服务通过以下方式向联合图提供者服务注册为面供应者:提供与联合面供应者服务相关联的唯一的服务标识符(“id”)以及针对联合面供应者服务的回调网络地址,例如统一资源定位符(“url”)。该注册机制在本文中被称为“基本注册”。

在另一配置中,联合面供应者服务通过以下方式来向联合图供应者服务注册为面供应者:提供与联合面供应者服务相关联的唯一服务服务id以及统一资源标识符(“uri”)模板。如将在下文中更详细地讨论的,可以利用uri模板来解析用于在查询时间从联合面供应者服务取回所请求的面的回调url。该注册机制在本文中可以被称为“高级注册”。

一旦联合面供应者已经向联合图供应者服务进行了注册,则面供应者服务就可以被用作针对特定面的数据供应者。例如,在一个配置中,联合图供应者服务从服务客户端接收针对图中资源的面的请求。如上文提及的,可以经由诸如web服务api之类的网络服务api来接收这样的请求。该请求包括标识在资源图中的位置的数据以及与提供该面的联合面供应者相关联的唯一id。

响应于接收到这样的请求,联合图供应者服务识别网络服务api(例如,网络服务)的网络地址,其是由向联合图供应者服务注册以提供该面的联合面供应者服务暴露的。例如,当已经利用了上文描述的基本注册机制时,联合图供应者服务可以利用与联合面供应者服务相关联的唯一id来取回先前存储的针对该联合面供应者服务的回调url。

当已经利用了上文描述的高级注册机制时,联合图供应者服务可以利用与联合面供应者服务相关联的唯一id来获得针对联合面供应者服务的uri模板。接着,联合图供应者服务可以解析该uri模板以生成网络服务api(例如,网络服务api)的网络地址,其是由用于获得所请求的面的联合面供应者服务暴露的。

联合图供应者服务还获得认证令牌,其能够由进行请求的服务客户端利用以对联合面供应者服务进行认证。如上文简要讨论的,联合图供应者服务和联合面供应者服务具有联合的关系,并且因此,联合图供应者服务被授权生成或者以其他方式获得服务客户端能够利用以对联合面供应者服务进行认证的认证令牌。

在一个配置中,联合图供应者服务提供对从服务客户端所接收的请求的响应,其指示服务客户端执行重定向到由用于获得该面的联合面供应者服务暴露的网络服务api的网络地址。该响应还包括认证令牌,其中,服务客户端可以利用该认证令牌来对联合面供应者服务进行认证。进而,服务客户端将其请求重定向到联合面供应者服务,并且包括由联合图供应者服务利用该请求所提供的认证令牌。联合面供应者服务接收该请求,验证该认证令牌,并且如果被验证,则向服务客户端提供所请求的面。

在另一配置中,联合图供应者服务被配置为利用联合面供应者服务的回调url和认证令牌以从联合面供应者服务自身获得所请求的面。在该配置中,联合图供应者服务从联合面供应者服务取回所请求的面,并且将该面直接返回至服务客户端。在该配置中,不需要服务客户端到联合面供应者服务的重定向,由此使能更快速地执行对所请求的面的取回,但是是以损失数据统治权为代价的。额外地,在该配置中,联合图供应者服务还可以响应于这样的请求而提供与从图供应者网络内的联合网络服务获得的图资源相关联的其他信息。

在一些配置中,联合图供应者服务暴露网络服务api(例如,web服务api),通过该api,呼叫方可以获得关于该面的信息。例如,联合图供应者服务可以接收对关于面的信息的请求,其包括所注册的联合面供应者服务的唯一服务id。联合图供应者服务可以利用与联合面供应者服务相关联的唯一id以获得关于所请求的关于面的信息。接着,可以响应于针对信息的请求而返回所请求的关于面的信息。关于面的信息可以包括但不限于,与联合面供应者服务相关联的唯一服务id、操作联合面提供者服务的实体的名称、面的文本描述、和/或关于用于对联合面供应者服务进行认证的认证令牌的细节。

在一些配置中,联合图供应者服务暴露网络接口api(例如,网络服务api),通过该api,呼叫方可以获得标识与图中的资源相关联的特定面的数据。例如而非限制,对这样的api的请求可以标识图中的资源。响应于此,可以识别与所标识的资源相关联的面,并且可以在回复该请求时提供关于面的信息。该信息可以包括例如与每个面相关联的唯一服务id、标识操作相关联的联合面供应者服务的实体的数据、该面的文本描述、针对相关联的联合面供应者服务的回调url、和/或关于用于对联合面供应者服务进行认证的认证令牌的细节。

在一些配置中,联合图供应者服务、联合面供应者服务、以及服务客户端位于不同的地理位置中。在一个特定的示例中,例如,联合图供应者服务位于美国,联合面供应者服务位于德国,而服务客户端位于法国。在该示例中,服务客户端可以利用上文所描述的机制来进行针对不允许离开欧盟(“eu”)边界的敏感数据的请求。该请求可以对位于美国的联合图供应者服务进行,但是将被重定向到位于德国的联合面供应者服务。因此,在没有数据离开eu边界的情况下,位于法国的服务客户端从位于德国的联合面供应者服务取回数据。如上文所提及的,可以从对在本文中公开的技术的实现来达成其他技术益处。

应当理解的是,上文描述的主题可以被实现为计算机控制的装置、计算机进程、计算系统、或者被实现为诸如计算机可读介质之类的制品。通过阅读以下的具体实施方式和浏览相关联的附图,这些和各种其他特征将是显而易见的。

提供了该发明内容而以用简化形式引入将在下文的具体实施方式中进一步描述的概念的选择。该发明内容并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在该发明内容用于限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决了在本公开的任何部分中所述的任何或全部缺点的实现。

附图说明

图1是根据在本文中所公开的一个配置的网络图,其示出了用于向联合图供应者服务注册联合面供应者服务的几个机制的方面;

图2是根据在本文中所公开的一个配置的、示出了例程的方面的流程图,其进一步示出了在图1中所示出的用于向联合图供应者服务注册联合面供应者服务的机制;

图3a是根据在本文中所公开的一个配置的网络图,其示出了用于从联合面供应者服务取回面的机制的方面;

图3b是根据在本文中所公开的一个配置的、示出了几个例程的流程图,所述几个例程共同示出了在图3b中所示出的用于从联合面供应者服务取回面的机制的额外方面;

图4a是根据在本文中所公开的一个配置的网络图,其示出了用于从利用uri模板的联合面供应者服务取回面的另一机制的方面;

图4b是根据在本文中所公开的一个配置的、示出了几个例程的流程图,所述几个例程共同示出了用于从利用uri模板的联合面供应者服务取回面的机制的额外方面;

图5是根据在本文中所公开的一个配置的网络图,其示出了用于查询面以及用于获得关于面供应者的信息的机制;

图6是根据在本文中所公开的一个配置的、示出了例程的流程图,其示出了在图5中所示出的用于获得关于面供应者的信息的机制的额外方面;

图7是根据在本文中所公开的一个配置的、示出了例程的流程图,其示出了在图5中所示出的用于针对面进行查询的机制的额外方面;

图8是根据在本文中所公开的一个配置的网络图,其示出了用于从不利用客户端侧的重定向的联合面供应者服务取回面的机制的方面;

图9是根据在本文中所公开的一个配置的、示出了几个例程的流程图,所述几个例程共同示出了用于在没有客户端侧的重定向的情况下从联合面供应者服务取回面的机制的额外方面;

图10是计算机架构图,其示出了能够实现在本文中所呈现的技术的方面的计算系统的说明性计算机硬件和软件架构;

图11是计算机系统架构和网络图,其示出了能够实现在本文中所呈现的技术的方面的分布式计算环境;以及

图12是计算机架构图,其示出了能够实现在本文中所呈现的技术的方面的另一计算设备的计算设备架构。

具体实施方式

以下的详细描述针对用于利用第三方数据和元数据来扩展联合图的技术。如上文简要讨论的,通过实现在本文中所公开的技术,可以利用任意大数量的第三方提供的“装饰者”网络服务来装饰在通过统一的网络服务api可访问的属性图中包含的数据。在本文中所公开的技术的实现还可以允许第三方“装饰者”网络服务以不妥协由第三方保存的数据的安全性的方式来与属性图相集成。通过实现在本文中所公开的技术还可以达成其他的技术益处。

尽管在结合对计算机系统上的操作系统和应用程序的执行而执行程序模块的一般上下文中呈现了在本文中所描述的主题,但是本领域技术人员将认识到可以结合其他类型的程序模块来执行其他实现。一般而言,程序模块包括例程、程序、组件、数据结构、以及执行特定任务或实现特定抽象数据类型的任何其他类型的结构。此外,本领域技术人员将认识到,可以利用其他计算机系统配置来实践在本文中所描述的主题,包括手持设备、多处理器系统、基于微处理器的或可编程的消费性电子产品、小型计算机、大型机计算机等。

在以下的详细描述中,对形成了其一部分并且其中通过具体配置或示例的方式示出的附图进行了参考。现在参考附图,其中,贯穿几个附图,相同的附图标记表示相同的元件,将描述用于利用第三方数据和元数据来扩展联合图的各种技术的方面。

图1是根据在本文中所公开的一个配置的网络图,其示出了用于向联合图供应者服务102注册联合面供应者服务108的几个机制的方面。如上文简要讨论的,联合图供应者服务102是提供用于暴露用于访问图中的数据的统一网络服务api(没有在图1中示出)的功能的网络服务。例如而非限制,联合图供应者服务102可以暴露web服务api,通过该api,服务客户端(没有在图1中示出)可以从该图获得数据。响应于针对数据的请求,联合图供应者服务102可以获得并组合来自多个其他联合数据供应者的数据,例如由操作联合图供应者服务102的同一实体操作的“装饰者”网络服务104a-104n。

由联合图供应者服务102所提供的图可以包括关于各种类型的资源的数据。例如而非限制,图可以包括关于企业资源的数据,例如人和文档,以及资源之间的关系和交互。所述关系和交互可以被表示为在标识各种资源的节点之间的边。例如,所述边可以指示用户已经修改了文档、用户正在与另一用户工作、某些资源受到其他相关用户的欢迎、组织结构、和/或其他类型的数据。图中的各种节点和边可以由第一方网络服务104a-104n提供。

如将在下文更加详细地描述的,联合图供应者服务102还可以提供用于与第三方提供的“装饰者”网络服务相集成的功能,例如联合面供应者服务108。如上文简要讨论的,联合图供应者服务102可以以允许使用任意大数量的联合面供应者服务108的方式以及以不妥协由联合面供应者服务108保存的数据的安全性或统治权的方式来与联合面供应者服务108相集成。就此而言,应当理解的是,尽管已经在附图中示出了仅单个联合面供应者服务108,但是还可以利用更多这样的服务。

如在图1中所示出的,在不同于联合图供应者服务102在其中操作的网络(例如,图供应者网络106)的网络(例如,面供应者网络114)中操作联合面供应者服务108。额外地,操作联合图供应者服务102和操作联合面供应者服务108的实体具有联合关系,由此操作联合图供应者服务102的实体可以发出允许访问联合面供应者服务108的认证令牌(没有在图1中示出)。下文讨论了关于该机制的额外细节。

如还在图1中所示出的,图供应者网络106和面供应者网络114通过网络132互相连接。网络132可以是互联网或另一类型的数据通信网络。就此而言,应当理解的是,可以利用相比于在图1中所示出的更多的公共和私人网络来互相连接在本文中在所公开的配置中描述的各种组件。可以利用关于分布式计算环境的额外细节来实现图供应者网络106的面,并且在下文中关于图11提供了面供应者网络114。在下文中关于图10和12提供了关于可以用于实现联合图供应者服务102、联合面供应者服务108、以及服务客户端(没有在图1中示出)的几个计算系统的额外细节。

为了使能在本文中所公开的功能的方面,联合面供应者108首先向联合图供应者服务102注册为针对图中资源的特定面的供应者。如上文简要讨论的,面是与由联合图供应者服务102所提供的图中的资源相关联的数据或元数据。例如并且如上文所提及的,在上文中所描述的示例中,其中,图保存关于用户的数据,面可以是关于在图中所标识的用户的任何任意信息,例如用户的鞋或帽子的尺寸。联合面供应者服务108可以将面数据110(即,面)存储在合适的电子数据存储112中。

在一个特定配置中,联合面供应者服务108通过向由联合图供应者服务102暴露的基本注册api116发送基本注册请求118来向联合图供应者服务102注册为面供应者。基本注册api116可以是网络服务api,例如web服务api,或另一类型的网络可访问的api。基本注册请求118包括对联合面供应者服务108唯一的唯一服务id120以及诸如针对联合面供应者服务108的回调url122之类的回调网络地址。如上文提及的,该注册机制在本文中可以被称为“基本注册”。

为了示出在本文中公开的功能的方面,在该文档通篇中可以利用样本场景。在样本场景中,被称为bestboots有限公司(“bestboots”)的公司想要将由网络服务104a-104n中的一个控制的用户数据扩展为包括针对每个用户的启动大小。在该示例中,bestboots在合适的互联网可访问网络(即,面供应者网络114)中实现联合面供应者服务108,所述合适的互联网可访问网络被配置为存储描述各种用户的启动大小的面数据110。在该示例中,联合面供应者服务108暴露公开可访问的api,通过该api,可以获得针对特定用户的启动大小。

在该具体示例中,基本注册请求118指定了针对由bestboots操作的联合面供应者服务108的唯一服务id120是“http://bestboots.com/v1/bootpreferences”。就此而言,应当理解的是,尽管在该示例中唯一url被用作唯一服务id120,但还可以使用对联合面供应者服务108唯一的其他类型的数据。在该示例中,基本注册请求118还指定为https://bestboots-preferences.apigateway.serviceprovider.com的回调url122。这是由用于获得所请求的面的联合面供应者服务108暴露的网络服务api的网络地址,所述面在该示例中是特定用户的启动大小。

当利用在上文中描述的基本注册机制时,将利用来自由联合图供应者服务102作为查询参数所提供的原始资源的位置来调用回调url122。例如,对回调url122的调用将采用https://<callbackurl>?resource=<graphresourceuri>的形式。将在下文中关于图3a和3b来呈现额外的细节,所述额外的细节与利用已经以在上文中所描述的方式执行基本注册的位置来取回面相关。

在另一配置中,联合面供应者服务108通过向由联合图供应者服务102暴露的高级注册api128发送高级注册请求126来向联合图供应者服务102注册为面供应者。高级注册api128还可以是网络服务api,例如web服务api、或另一类型的网络可访问的api。高级注册请求126还包括对联合面供应者服务108唯一的唯一服务id120。然而,在该机制中,高级注册请求126不包括显式的回调url122。相反,高级注册请求包括uri模板130,例如rfc6750uri模板。如将在下文中更加详细地讨论的,联合图供应者服务102可以利用uri模板130来解析回调url,以用于在查询时从联合面供应者服务108取回所请求的面。该注册机制在本文中可以被称为“高级注册”。

返回上文所提及的bestboots示例,当高级注册被执行时,唯一服务id120可以是“https://bestboots.com/v1/bootpreferences-advanced”。当在基本注册中时,唯一服务id无须是url的形式并且可以被表达为唯一地标识联合面供应者服务的另一类型的数据。在该示例中,uri模板130可以是https://bestboots-preferences.apigateway.serviceprovider.com/{userprincipalname}”的形式。在该示例中,uri模板130将被解析为包括作为分段而附加至uri的“userprincipalname”(即,用户名)。应当理解的是,该示例已经被简化,并且许多其他字段可以由联合图供应者服务102支持以建立uri模板。

响应于接收到对基本注册api116的调用,联合图供应者服务102将指定的服务id120和回调url122存储在合适的数据存储124中。类似地,响应于对高级注册api126的调用,联合图供应者服务102将服务id120和uri模板130存储在数据存储124中。如将在下文中详细讨论的,可以在查询时利用该信息以将服务客户端重定向到针对特定面的适当的联合面供应者服务108。将关于图2在下文中提供与基本和高级注册机制两者相关的额外细节。

图2是根据在本文中所公开的一个配置的、示出了例程的方面的流程图,其进一步示出了在图1中所示出的用于向联合图供应者服务102注册联合面供应者服务108的机制。应当理解的是,在本文中关于图2和其他图所描述的逻辑操作可以被实现为(1)一系列的计算机实现的动作或在计算系统上运行的程序模块和/或(2)在计算系统内互相连接的机器逻辑电路或电路模块。

在本文中公开的技术的特定实现是取决于计算系统的性能和其他要求的选择的问题。由此,在本文中描述的逻辑操作可以被不同地称为状态、操作、结构设备、动作、或模块。这些状态、操作、结构设备、动作、和模块可以以软件、以固件、以专用数字逻辑、及其任何组合来实现。应当理解的是,可以执行与在附图中所示出的和在本文中所描述的相比更多或更少的操作。还可以以与在本文中所描述的这些操作不同的顺序来执行这些操作。

例程在操作202处开始,其中,联合图供应者服务102在基本注册api116处接收请求118或者在高级注册api128处接收请求126。响应于接收到任一类型的注册请求,例程200从操作202进行至操作204,在操作204处,联合图供应者服务102将指定的唯一服务id120存储在数据存储124中。接着,例程从操作204进行至操作206。

如果已经请求了基本注册,则在操作206处,联合图供应者服务102存储针对联合面供应者服务108的回调url122。如果已经请求了高级注册,则在操作208处,联合图供应者服务102将指定的uri模板130存储在数据存储124中。接着,联合图供应者服务102可以在操作210处向联合面供应者服务108返回指示成功执行了注册的消息。接着,例程200从操作210进行至操作212,在操作212处,例程终止。

图3a是根据在本文中所公开的一个配置的网络图,其示出了用于在已经以上文所描述的方式执行了基本注册的示例中从联合面供应者服务108取回面320的机制的方面。如上文简要讨论的,一旦联合面供应者服务108已经向联合图供应者服务102进行了注册,则联合面供应者服务108可以被用作针对特定面的数据供应者。

例如,在一个配置中,联合图供应者服务102从在针对图中资源的面的服务客户端306上执行的应用304接收针对面的请求308(即,“面请求”)。如上文提及的,可以经由诸如web服务api(在图3a中被示出为图取回api302)之类的网络服务api来接收这样的请求308。面请求308包括标识在资源图中的位置(在图3a中被示出为图资源位置310)以及与提供所请求的面的联合面供应者服务108相关联的唯一服务id120。

响应于接收到面请求308,联合图供应者服务102识别由向联合图供应者服务102注册以提供面的联合面供应者服务108暴露的网络服务api(例如,网站服务)的网络地址。例如,当已经利用了上文描述的基本注册机制时,联合图供应者服务102可以使用与联合面供应者服务108相关联的唯一id120来从数据存储124取回先前存储的针对联合面供应者服务108的回调url122。

联合图供应者服务102还获得能够由进行请求的服务客户端306用于向联合面供应者服务108进行认证的认证令牌314。如上文简要讨论的,联合图供应者服务102和联合面供应者服务108具有联合的关系,并且因此联合图供应者服务102被授权生成或以其他方式获得服务客户端可以用于向联合面供应者服务108进行认证的认证令牌314。在一个特定实现中,认证令牌314是由网络服务104a-104n中的一个获得或生成的oauth2.0无记名(bearer)令牌。然而,可以在其他配置中利用其他类型的认证令牌和机制。

在一个配置中,联合图供应者服务102提供对从服务客户端306接收的面请求308的响应(在图3a中示出),其指示服务客户端306执行重定向到由用于获得所请求的面的联合面供应者服务108暴露的网络服务api的回调url122(即,网络地址)。在一个特定配置中,重定向指示312是http/1.1302消息,其使得在服务客户端306上执行的应用304将其针对该面的请求重定向到联合面供应者服务108。在该示例中,http消息包括具有作为查询参数的指定的图资源位置310的回调url122。还可以利用其他机制以使得服务客户端306将其请求重定向到联合面供应者服务108。

对面请求308的响应还包括认证令牌314,其中,服务客户端306可以利用该认证令牌314来向联合面供应者服务108进行认证。进而,服务客户端316将请求316重定向到联合面供应者服务108,并且包括由具有请求316的联合图供应者服务102所提供的认证令牌314。联合面供应者服务122接收请求316,验证所包括的认证令牌314,并且如果被验证,则在回复318中向服务客户端306提供所请求的面320。联合面供应者服务108可以利用以面请求316供应的图资源位置310来识别所请求的面320。

返回到上文引入的bestboots示例,为了获得标识具有身份jsmith@contoso.com的用户的启动大小的面320,在服务客户端306上执行的应用304可以将以“get/contoso.com/v1.0/users/jsmith@contoso.com/?facet=https://bestboots.com/v1/bootpreferenceshttp/1.1”形式的http请求(即,面请求308)发送至联合图供应者服务102。在该示例中,联合图供应者服务102由被称为contoso有限公司的公司(“contoso”)操作并且图取回api位于graph.contoso.com。

在该示例中,联合图供应者服务102获得针对bestboots联合面供应者服务108的回调url122以及用于向联合面供应者服务108进行认证的认证令牌314(“abcdefg”)。接着,联合图供应者服务102向服务客户端306返回以下形式的响应(即,重定向指令312)。

http/1.1302found

location:https://bestboots-

preferences.apigateway.serviceprovider.com?orginalresourse=

graph.contoso.com/v1.0/users/jsmith@contoso.com

authorization:bearerabcdefg

当服务客户端306从联合图供应者服务102接收重定向指令312时,服务客户端使用以下的httpget消息以将其请求重定向到由联合面供应者服务108暴露的回调url122:

gethttps://bestboots-

preferences.apigateway.serviceprovider.com?orginalresourse=

graph.contoso.com/v1.0/users/jsmith@contoso.com

http/1.1

accept:application/json

authorization:bearerabcdefg

接着,联合面供应者服务108利用图资源位置310来获得所请求的面320,并且向应用304提供在一个配置中包括所请求的面320的以下形式的回复318:

http/1.1200ok

content-type:application/json

{

“facetid”:“https://bestboots.com/v1/bootpreferences,”

“value”:[{bootsizeforuserjsmith@contoso.com}]

}。

当应用304接收包括面320的回复318时,应用304可以解析回复318以获得面320。急着,可以以各种方式利用面320。就此而言,应当理解的是,服务客户端306可以重复地利用上文描述的机制来从许多不同的联合面供应者服务108获得面320。接着,从各种联合面供应者服务108获得的面320可以由应用304以各种方式来组合和利用。下文将关于图3b提供在图3a中所示出的关于取回机制的额外的细节。

图3b是示出了几个例程350、370、和390的流程图,所述例程共同示出了在图3b中所示出的用于在已经利用了上文描述的基本注册机制时从联合面供应者服务108取回面320的机制的额外的方面;例程350表示由联合面供应者服务108执行的操作,例程370表示由服务客户端306执行的操作,而例程390表示由联合图供应者服务102执行的操作。这些例程将一起被描述。

例程370在操作372处开始,其中,服务客户端306向联合图供应者服务102发送面请求308。如上文所讨论的,面请求308包括针对其的面正在被请求的图资源的图资源位置310、以及提供所请求的面的联合面供应者服务108的唯一服务id120。

例程390在操作392处开始,其中,联合图供应者服务102在图取回api302处接收面请求308。响应于接收到面请求308,例程390进行至操作394,其中,联合图供应者服务102利用在面请求308中所提供的唯一服务id120以确定针对联合面供应者服务108的回调url122。接着,例程390进行至操作396。

在操作396处,联合图供应者服务102获得针对联合面供应者服务108的认证令牌314。如上文所提及的,在一个特定配置中,联合图供应者服务102从网络服务104a-104n中的一个中获得认证令牌314。一旦已经获得认证令牌,例程390进行至操作398,其中,重定向指令312被返回至服务客户端306。如上文所讨论的,重定向指令312使得服务客户端306重定向到联合面供应者服务108的回调url122并且将图像资源位置310作为面请求316中的查询参数来提供。服务客户端306还包括由联合图供应者服务102在面请求316中所提供的认证令牌314。例程390继续从操作398到操作399,其在操作399处终止。

在例程370的操作374处,服务客户端306从联合图供应者服务102接收重定向指令312。接着,例程370进行至操作376,其中,服务客户端306重定向到由联合面供应者服务108所提供的回调url122。特别地,服务客户端向回调url122发送面请求316,其包括来自原始面请求308的图资源位置310和由联合图供应者服务102所提供的认证令牌314。

例程350在操作352处开始,其中,联合面供应者服务108接收面请求316,其包括认证令牌314。例程350从操作352进行至操作354,其中,联合面供应者服务108验证认证令牌314。如果认证令牌314可以被验证,则例程350从操作354进行至操作356,其中,联合面供应服务108从数据存储112获得所请求的面320。如上文所讨论的,来自原始面请求308的图资源位置310可以用于定位所请求的面320。接着,例程350进行至操作358,其中,联合面供应者服务108向服务客户端306发送包括所请求的面320的回复318。接着,例程350从操作358进行至操作360,其在操作360处结束。

服务客户端306在例程370的操作378处接收所请求的面320。如上文所讨论的,服务客户端306可以对面32行各种类型的处理,包括将面320与从其他联合面供应者服务108获得的面进行组合。接着,例程370从操作378进行至操作380,其在操作380处结束。

图4a是根据在本文中所公开的一个配置的网络图,其示出了用于从利用uri模板130的联合面供应者服务108取回面320的另一机制的方面。当已经利用了上文描述的高级注册机制时,联合图供应者服务102可以利用与联合面供应者服务108相关联的唯一id120以获得针对联合面供应者服务108的uri模板130。接着,联合图供应者服务102可以解析uri模板130以生成由用于获得所请求的面的联合面供应者服务108暴露的网络服务api(例如,web服务api)的网络地址(例如,回调url122)。下文提供了关于该机制的额外的细节。

在图4a中所示出的示例中,面请求308还指定了针对其的面正在被请求的图资源的图资源位置310以及针对联合面供应者服务108的唯一服务id。然而,在该示例中,联合图供应者服务102利用在面请求308中所提供的唯一服务102来获得与联合面供应者服务108相关联的url模板130,而不是直接获得针对联合面供应者服务108的回调url122。联合图供应者服务102可以解析uri模板130以生成针对联合面供应者服务108的回调url122。接着,可以响应于包括所生成的回调url122和认证令牌314的面请求308而提供重定向指令312,如在关于图3a和3b在上文中所描述的机制中。

暂时地参考回bestboots示例,在该示例中,面请求308将采用对“graph.contoso.com/v1.0/users/jsmith@contoso.com/?facet=https//bestboots.com/v1/bootpreferences-advancedhttp/1.1”的httpget请求的形式。如可以看到的,该示例性http请求指定了图资源位置310,在该情况下是用户jsmith@contoso.com的身份,而bestboots联合面供应者服务108的唯一服务id120,在该情况下是“https//bestboots.com/v1/bootpreferences-advanced”。

在该示例中,contoso-操作的联合图供应者服务102将识别与所指定的唯一服务id120相关联的先前提供的uri模板130,并且解析uri模板130以获得bestboots-操作的联合面供应者服务108的回调url。在该实现中,将经解析的uri模板作为针对联合面供应者服务108的回调uri122的利用可以提供与在明确定义的回调url122的配置中相比更加简单的url。例如,使用bestboots场景,联合图供应者服务102可以提供以下形式的响应(即,重定向指令312):

http/1.1302found

location:https://bestboots-preferences-

advanced.apigateway.serviceprovider.com/jsmith@contoso.com

authorization:bearerabcdefg

响应于接收到重定向指令312,服务客户端306利用所提供的认证令牌314重定向到所指定的回调url122。例如,在bestboots示例中,服务客户端306生成对联合面供应者服务108的回调url122的http面请求316,其在该示例中是https://bestboots-preferences-advanced.apigateway.serviceprovider.com/jsmith@contoso.com。面请求316还包括认证令牌314。响应于接收到面请求316,联合面供应者服务108验证认证令牌314,并且如果被验证,则将具有所请求的面320的回复318返回至服务客户端306。在bestboots示例中,回放318可以以如下方式格式化:

http/1.1200ok

content-type:application/json

{

“facetid”:“https://bestboots.com/v1/bootpreferences-

advanced”,

“value”:[{bootsizeforuserjsmith@contoso.com}]

}

图4b是示出了几个例程450、470、和490的流程图,所述几个例程共同示出了用于在利用了上文所描述的高级注册机制时从利用uri模板130的联合面供应者服务108取回面320的机制的额外方面。例程450表示由联合面供应者服务108执行的操作,例程470表示由服务客户端306执行的操作,而例程490表示由联合图供应者服务102执行的操作。这些例程将一起被描述。

例程470在操作472处开始,其中,服务客户端306向联合图供应者服务102发送面请求308。如上文所讨论的,面请求308包括针对其的面正在被请求的图资源的图资源位置310以及提供所请求的面的联合面供应者服务108的唯一服务id120。

例程490在操作492处开始,其中,联合图供应者服务102在图取回api302处接收面请求308。响应于接收到面请求308,例程490进行至操作494,其中,联合图供应者服务102利用在面请求308中提供的唯一服务id120以确定先前提供的针对联合面供应者服务108的uri模板130。接着,例程490进行至操作496。

在操作496处,联合图供应者服务102解析uri模板130以获得针对联合面供应者服务108的回调url122。接着,例程490进行至操作497,其中,联合图供应者服务102获得针对联合面供应者服务108的认证令牌314。如上文提及的,在一个特定配置中,联合图供应者服务102从网络服务104a-104n中的一个中获得认证令牌314。

一旦已经获得了认证令牌314,则例程490进行至操作498,其中向服务客户端306返回重定向指令312。如上文所讨论的,重定向指令312使得服务客户端306重定向到联合面供应者服务108的回调url122,在该情况下是经解析的uri模板130。例程490继续从操作498到操作499,其在操作499处结束。

在例程470的操作474处,服务客户端306从联合图供应者服务102接收重定向指令312。接着,例程470进行至操作476,其中,服务客户端306重定向到由联合面供应者服务108所提供的回调url122。特别地,服务客户端发送对回调url122(即,经解析的uri模板130)的面请求316,其包含由联合图供应者服务102所提供的认证令牌314。

例程450在操作452处开始,其中联合面供应者服务108接收面请求316,其包括认证令牌314。例程450从操作452进行至操作454,其中,联合面供应者服务108验证认证令牌314。如果认证令牌314能够被验证,则例程450从操作454进行至操作456,其中,联合面供应者服务108从数据存储112获得所请求的面320。接着,例程450进行至操作458,其中,联合面供应者服务108向服务客户端306发送包括所请求的面320的回复318。接着,例程450从操作458进行至操作460,其在操作460处结束。

服务客户端306在例程470的操作478处接收所请求的面320。如上文所讨论的,服务客户端306可以对面320执行各种类型的处理,包括将面320与从其他联合面供应者服务108获得的面进行组合。接着,例程470从操作478进行至操作480,其在操作480处结束。

如上文简要提及的,在本文中所公开的技术的具体实现中,联合图供应者服务102、联合面供应者服务108、以及服务客户端306可以位于不同的地理位置。例如,在一个具体示例中,联合图供应者服务102位于美国、联合面供应者服务108位于德国、而服务客户端306位于法国。

在该示例实现中,服务客户端306可以利用上文描述的机制来针对不允许离开欧盟(“eu”)边界的敏感数据进行请求308。可以向位于美国的联合图供应者服务102进行请求308,但是其将被重定向到位于德国的联合面供应者服务108。因此,在该示例性实现中,位于法国的服务客户端306可以在数据不离开eu边界的情况下从位于德国的联合面供应者服务108取回数据。如上文所提及的,可以从在本文中所公开的技术的实现中达成其他的技术益处。

图5是根据在本文中所公开的几个配置的网络图,其示出了用于针对面进行查询并且用于获得关于面供应者的信息的机制的方面。特别地,在一些配置中,联合图供应者服务102暴露网络服务api502(例如,web服务api),通过该api,呼叫方可以获得关于特定面的信息。例如,联合图供应者服务102可以接收针对关于面的信息的请求(在图5中被示出为面信息查询504),所述请求包括经注册的联合面供应者服务108的唯一服务id120。

联合图供应者服务102可以利用与联合面供应者服务108相关联的唯一id120以从数据存储124获得所请求的关于面320的信息506。接着,可以响应于对信息504的查询而返回所请求的关于面的信息506。关于面的信息506可以包括但不限于与联合面供应者服务108相关联的唯一服务id120、运行联合面供应者服务108的实体的名称、面的文本描述、和/或关于用于对联合面供应者服务108认证的认证令牌314的细节。在上文提供的bestboots的示例中,用于执行面信息查询504的http请求可以如下被格式化:

get

/contoso.com/v1.0/?$facet=https://bestboots.com/v1/bootpreferences

accept:application/json

在对这样的查询504的响应中提供的面信息506可以如下被格式化:

在一些配置中,联合图供应者服务102暴露网络服务api(例如,web服务api),通过该api,呼叫方可以获得标识与该图中的资源相关联的特定面的数据。例如而非限制,对这样的api的请求(被示出为图5中的面查询api508)可以提供针对图中的资源的图资源位置310。响应于这样的请求,联合图供应者服务102可以识别与经标识的资源相关联的面320,并在对查询510的回复中提供关于面的信息512。

面信息512可以包括例如与每个面相关联的唯一服务id120、标识操作相关联的联合面供应者服务108的实体的数据、面的文本描述、针对相关联的联合面供应者服务108的回调url122、和/或关于用于对联合面供应者服务108进行验证的认证令牌的细节。在上文提供的bestboots示例中,对针对用户(即,jsmith@contoso.com)的面信息512的http请求可以如下被格式化:

get/contoso.com/v1.0/users/jsmith@contoso.com/$facets

http/1.1

accept:application/json

在对这样的查询510中提供的面信息512可以如下被格式化:

应当理解的是,在一个特定的配置中,可以通过适当地格式化的httpget请求来过滤面信息512。例如,在bestboots的示例中,httpget可以被格式化,以便将面信息512限制为由bestboots作为“gethttps://graph.contoso.com/v1.0/users/jsmith@contoso.com/$facets?filter=facetprovidereqboots.com”来提供的面。其他类型的过滤和分拣还可以被应用于由对面查询api508的调用所返回的面信息512。

图6是根据在本文中所公开的一个配置的、示出了例程600的流程图,其示出了在图5中所示出的用于获得关于面供应者的信息的机制的额外方面。例程600在操作602处开始,其中,联合图供应者服务102接收包括针对联合面供应者服务108的唯一服务id122的面信息查询504。响应于接收到这样的请求,例程600从操作602进行至操作604。

在操作604处,联合图供应者服务102取回与所提供的唯一服务id120相关联的面供应者的面信息506。然后,例程600继续从操作604到操作606,其中联合图供应者服务102在对面信息查询504的回复中返回面信息506。如上文所讨论的,面信息506可以包括但不限于与联合面供应者服务108相关联的唯一服务id120、操作联合面供应者服务108的实体的名称、面的文本描述、和/或关于用于向联合面供应者服务108进行认证的认证令牌314的细节。接着,例程600从操作606进行至操作608,其在操作608处结束。

图7是根据在本文中所公开的一个配置的、示出了例程700的流程图,其示出了在图5中所示出的用于针对面进行查询的机制的额外方面。例程700在操作702处开始,其中,联合图供应者服务102接收指定了图中的资源的图资源位置310的面查询510。接着,例程700从操作702进行至操作704,其中,联合图供应者服务102确定应用于指定的资源的面和/或面供应者。接着,例程700从操作704进行至操作706。

在操作706处,联合图供应者服务102对在图中所标识的资源的面信息506进行过滤、分拣、或应用的所请求的其他操作。接着,例程700从操作706进行至操作708,其中,联合图供应者服务102在对面查询310的回复中返回针对所标识的图资源的面信息512。如上文所讨论的,面信息512可以包括但不限于与每个面320相关联的唯一服务id120、标识操作相关联的联合面供应者服务108的实体的数据、面的文本描述、针对相关联的联合面供应者服务108的回调url122、和/或关于用于对联合面供应者服务102进行认证的认证令牌的信息。接着,例程700从操作708进行至操作710,其在操作710处结束。

图8是根据在本文中所公开的一个配置的网络图,其示出了用于从不利用客户端侧的重定向的联合面供应者服务108取回面320的机制的方面。如在图8中示出的,联合图供应者服务102可以接收指定图中的资源的图资源位置310和针对联合面供应者服务108的唯一服务id120的面请求308。接着,联合图供应者服务102直接地或者以上文描述的方式使用uri模板130来获得回调url122。

然而,在该配置中,联合图供应者服务102利用联合面供应者服务108的回调url122和认证令牌314以直接地从联合面供应者服务108自身获得所请求的面320。例如,且如在图8中所示出的,联合图供应者服务102可以向包括认证令牌314的回调url122发送面请求316。

响应于接收到面请求316,联合面供应者服务108验证认证令牌314,并且如果被验证,则从数据存储112取回所请求的面320并且向联合图供应者服务102返回包括面320的回复318。接着,联合图供应者服务102向服务客户端返回包括面320的响应802。在该配置中,不需要服务客户端306重定向到联合面供应者服务108,由此使得能够更加快速地执行对所请求的面320的取回。额外地,在该配置中,联合图供应者服务102还可以响应于这样的请求308而提供与从联合网络服务104a-104n获得的图资源相关联的其他信息804。下文将关于图9来提供关于该机制的额外的细节。

图9是根据在本文中所公开的一个配置的、示出了几个例程950、960、和970的流程图,所述几个例程共同示出了用于在不重定向服务客户端306的情况下从联合面供应者服务108取回面320的机制的额外方面。例程950表示由服务客户端306所执行的操作,例程970表示由联合图供应者服务102所执行的操作,而例程990表示由联合面供应者服务108所执行的操作。这些例程将一起被描述。

例程950在操作952处开始,其中,服务客户端306向联合图供应者服务102发送面请求308。例程970在操作972处开始,其中,联合图供应者服务102接收面请求308。接着,例程970进行至操作974,其中,联合图供应者服务102确定针对联合面供应者服务108的回调url122。如在上文讨论的,回调url122可以利用与联合面供应者服务108关联的uri模板130而被显式地提供或确定。

例程970从操作974进行至操作976,其中,联合图供应者服务102向联合面供应者服务108的回调url122发送包括认证令牌314的面请求316。例程990在操作992处开始,其中,联合面供应者服务108接收包括认证令牌314的面请求316。接着,例程990从操作992进行至操作994。

在操作994处,联合面供应者服务108验证认证令牌314。如果能够验证认证令牌314,则例程990从操作994进行至操作996,其中,联合面供应者服务108从数据存储112获得所请求的面320。接着,例程990进行至操作998,其中,联合面供应者服务108向联合图供应者服务102发送包括所请求的面320的回复318。接着,例程990从操作998进行至操作999,其在操作999处结束。

联合图供应者服务102在例程970的操作978处接收具有所请求的面320的回复318。接着,例程970从操作978进行至操作980,其中,如果被请求,则联合图供应者服务102从其他网络服务104a-104n取回其他图资源信息804。接着,例程970进行至操作982,其中,如果被请求,则联合图供应者服务102向服务客户端306发送响应802,包括面304和其他图资源信息804。接着,例程970从操作982进行至操作984,其在操作984处结束。

在例程950的操作954处,服务客户端306接收响应802,其包括面320以及任何其他图资源信息804。接着,例程950从操作954进行至操作956,其在操作956处结束。

应当理解的是,在服务客户端306上执行的应用304、联合图供应者服务102、联合面供应者服务108、以及上文描述的其他软件组件可以使用或结合以下项来实现:二进制可执行文件、动态链接库(“dll”)、api、网络服务、脚本文件、经解译的程序代码、软件容器、对象文件、适合及时编译的字节码、和/或能够由处理器执行以执行在本文中关于图1-9所描述的操作的其他类型的程序代码。

图10是计算机架构图,其示出了能够实现在本文中所呈现的技术的方面的计算机1000的架构。图10中示出的架构是针对服务器计算机、移动电话、电子阅读器、智能电话、台式计算机、笔记本计算机、平板计算机、膝上型计算机、或适合执行在本文中呈现的软件组件的另一类型的计算设备的架构。

就此而言,应当理解的是,在图10中所示出的计算机1000可以用于实现能够执行在本文中所呈现的软件组件中的任何一个的计算设备。例如而非限制,关于计算机1000所描述的计算架构可以用于在用于执行联合图供应者服务102的图供应者网络106中实现服务器计算机、在用于执行联合面供应者服务108的面供应者网络114中实现服务器计算机、实现用于执行应用304的服务客户端306、和/或实现用于执行上文描述的其他软件组件中的任何一个的其他类型的计算系统。

在图10中所示出的计算机1000包括中央处理单元1002(“cpu”)、系统存储器1004,其包括随机存取存储器1006(“ram”)以及只读存储器(“rom”)1008、以及将存储器1004耦合至cpu1002的系统总线1010。包含有助于在计算机1000内的元件之间传输信息(例如,在启动期间)的基本例程的基本输入/输出系统被存储在rom1008中。计算机1000还包括用于存储操作系统1014和一个或多个程序的大容量存储设备1012,取决于计算机1000的使用,所述程序包括但不限于联合图供应者服务102、联合面供应者服务108、或应用304。大容量存储设备1012还可以被配置为存储没有在图10中具体地示出的其他类型的程序和数据。

大容量存储设备1012通过连接至总线1010的大容量存储控制器(未示出)连接至cpu1002。大容量存储设备1012及其相关联的计算机可读介质为计算机1000提供了非易失性存储。尽管在本文中所包含的计算机可读介质的描述指的是大容量存储设备,例如硬盘、cd-rom驱动器、dvd-rom驱动器、或usb存储键,但本领域技术人员应当理解的是,计算机可读介质可以是任何可获得的计算机存储介质或者能够由计算机1000访问的通信介质。

通信介质包括计算机可读指令、数据结构、程序模块、或者诸如载波或其他传输机制之类的经调制的数据信号中的其他数据,并且包括任何传递介质。术语“经调制的数据信号”表示具有以关于对信号中的信息进行编码的方式改变或设置的信号的特性中的一个或多个特性的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、射频、红外线和其他无线介质之类的无线介质。还应当将以上中的任意一个的组合包括在计算机可读介质的范围内。

作为示例而非限制,计算机存储介质可以包括以用于存储信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动的介质,所述信息例如是计算机可读指令、数据结构、程序模块、或其他数据。例如,计算机介质包括但不限于,ram、rom、eprom、eeprom、闪速存储器或其他固态存储器技术、cd-rom、数字多功能盘(“dvd”)、hd-dvd、blu-ray、或者其他光存储设备、盒式磁带、磁带、磁盘存储装置或其他磁存储设备、或者可以用于存储期望的信息并且可以由计算机1000访问的任何其他介质。出于权利要求的目的,短语“计算机存储介质”及其变型不包括波或信号本身或通信介质本身。

根据各种配置,计算机1000可以使用通过诸如网络1018之类的网络至远程计算机的逻辑连接来在联网环境中操作。计算机1000可以通过连接至总线1010的网络接口单元1020而连接至网络1018。应当认识到的是,网络接口单元1020还可以用于连接至其他类型的网络和远程计算机系统。计算机1000还可以包括用于接收和处理来自许多其他设备的输入的输入/输出控制器1016,其包括键盘、鼠标、电子触笔(未在图10中示出)。相似地,输入/输出控制器1016可以向显示屏、打印机、或者其他类型的输出设备(也未在图10中示出)提供输出。

应当理解的是,诸如联合图供应者服务102、联合面供应者服务108、以及应用304之类的在本文中所描述的软件组件当被加载到cpu1002中并被执行时,可以将cpu1002和整个计算机1000从通用计算系统转换成定制为促进实现在本文中所呈现的功能的专用计算系统。cpu1002可以从任何数量的晶体管或其他分立电路元件构造,其可以单独地或集体地假定任何数量的状态。更加具体而言,cpu1002可以响应于诸如应用304之类的在本文中公开的软件模块中包含的可执行指令而操作为有限状态机。这些计算机可执行指令可以通过指定cpu如何在状态之间转变来转换cpu1002,由此转换构成cpu1002的晶体管或其他分立硬件元件。

编码在本文中所呈现的软件模块(例如,应用304)还可以转换在本文中所呈现的计算机可读介质的物理结构。在本说明书的不同实现中,物理结构的具体转换取决于各种因素。这样的因素的示例包括但不限于用于实现计算机可读介质的技术,无论计算机可读介质被表征为主存储器还是副存储器等。例如,如果计算机可读介质被实现为基于半导体的存储器,则在本文中所公开的软件可以通过转换半导体存储器的物理状态来在计算机可读介质上进行编码。例如,软件可以转换晶体管、电容、或构成半导体存储器的其他分立电路元件的状态。软件还可以转换这样的组件的物理状态以将数据存储在其上。

作为另一示例,在本文中所公开的计算机可读介质可以使用磁或光技术来实现。在这样的实现中,当软件被编码在其中时,在本文中所呈现的软件组件可以转换磁或光介质的物理状态。这些转换可以包括警告在给定磁介质中特定位置的磁特性。这些转换还可以包括警告在给定光介质中特定位置的物理特征或特性以改变这些位置的光特性。在不脱离本说明书的范围和精神的情况下,物理介质的其他转换是可能的,其中前述示例仅被提供以促进该讨论。

根据上文,应当理解的是,在计算机1000中可以发生许多类型的物理转换以存储并执行在本文中所呈现的组件。还应该明白的是,图10中所示出的计算机1000的架构、或类似的架构可以用于实现其他类型的计算设备,包括手持式计算机、嵌入式计算系统、诸如智能电话或平板之类的移动设备、以及本领域技术人员已知的其他类型的计算设备。还可以预期的是,计算机1000可以不包括图10中所示出的所有组件,可以包括在图10中没有明确示出的其他组件、或者可以利用与在图10中所示出的完全不同的架构。

图11示出了在其中可以执行在本文中描述的软件组件的说明性分布式计算环境1102的方面。因此,图11中示出的分布式计算环境1102可以用于执行能够提供针对图1-9在本文中描述的功能的程序代码和/或在本文中描述的其他软件组件中的任何一个,例如联合图供应者服务102、联合面供应者服务108、以及应用304。例如而非限制,分布式计算环境1102可以用于实现图供应者网络106和/或面供应者网络114。

根据各种实现,分布式计算环境1102在网络1103上操作、与网络1103进行通信、或作为网络1103的一部分。一个或多个客户端设备1106a-1106n(在下文中统一地和/或一般地被称为“客户端1106”)可以经由网络1103和/或其他连接(在图11中未示出)与分布式计算环境1102进行通信。

在所示出的配置中,客户端1106包括:诸如膝上型计算机、台式计算机、或其他计算设备之类的计算设备1106a;“板式”或平板计算设备(“平板计算设备”)1106b;诸如移动电话、智能电话、或其他移动计算设备之类的移动计算设备1106c;服务器计算机1106d;和/或其他设备1106n。应当理解的是,任何数量的客户端1106可以与分布式计算环境1102进行通信。在本文中参考图10和11示出和描述了针对客户端1106的两个示例性计算架构。应当理解的是,在本文中所示出的客户端1106以及在本文中所示出和描述的计算机架构是说明性的,并且不应当被解释为以任何方式受到限制。

在所示出的配置中,分布式计算环境1102包括应用服务器1104、数据存储1110、以及一个或多个网络接口1112。根据各种实现,应用服务器1104的功能可以由作为网络1103的一部分执行或者与网络1103进行通信地一个或多个服务器计算机来提供。应用服务器1104可以托管诸如上文所描述的联合图供应者服务102和联合面供应者服务108之类的各种服务、虚拟机、端口、和/或其他资源。在所示出的配置中,应用服务器1104托管用于托管诸如联合图供应者服务102、联合面供应者服务108、或其他类型的应用和/或服务之类的应用或网络服务的一个或多个虚拟机。根据各种实现,虚拟机1114托管诸如应用304之类的一个或多个应用和/或软件模块。应当理解的是,该配置是说明性的,并且不应当被解释为以任何方式进行限制。应用服务器1104还可以托管或提供对网络端口、链接页面、网站、和/或其他信息(“网络端口”)1116中的一个或多个的访问。

根据各种实现,应用服务器1104还包括一个或多个邮箱服务1118以及一个或多个消息传送服务1120。邮箱服务1118可以包括电子邮件(“email”)服务。邮箱服务1118还可以包括各种个人信息管理(“pim”)服务,包括但不限于日历服务、联系人管理服务、协同服务、或和/或其他服务。消息传送服务1120可以包括但不限于即时消息传送(“im”)服务、聊天服务、论坛服务、和/或其他通信服务。

应用服务器1104还可以包括一个或多个社交网络服务1122。社交网络服务1122可以提供各种类型的社交网络服务,包括但不限于用于分享或发布状态更新、即时消息、链接、照片、视频、和/或其他信息的服务,用于评论或显示感兴趣的文章、产品、博客、或其他资源的服务,和/或其他服务。在一些配置中,社交网络服务1122是由facebook社交网络服务、linkedin职业网络服务、myspace社交网络服务、foursquare地理网络服务、yammer办公室同事网络服务等提供的或包括所述服务。在其他配置中,社交网络服务1122由可以被称为“社交网络供应者”的其他服务、站点、和/或供应者来提供。例如,一些网站允许用户经由电子邮件、聊天服务、和/或其他方式在各种活动和/或上下文期间彼此交互,例如阅读出版的论文、对商品或服务进行评论、出版、协同、游戏等。其他服务是可能的并且是可预期的。

社交网络服务1122还可以包括评论、博客、和/或微博客服务。这样的服务示例包括但不限于,yelp评论服务、kudzu审查服务、officetalk企业微博客服务、twitter消息传送服务、谷歌buzz服务、和/或其他服务。应当理解的是,所述服务列表不是穷举的且为了简单起见在本文中没有提交多个额外的和/或可替代的社交网络服务1122。由此,上文描述的配置是说明性的,并且不应当被解释为以任何方式受到限制。

也如在图11中所示出的,应用服务器1104还可以托管其他服务、应用、端口、和/或其他资源(“其他服务”)1124。其他服务1124可以包括但不限于网络服务104a-104n、和/或在本文中所描述的其他软件组件中的任何一个。因此,应当理解的是,分布式计算环境1102可以提供在本文中公开的技术与各种邮箱、消息传送、社交网络、生产力、转换、和/或其他类型的服务或资源的集成。

如上文提及的,分布式计算环境1102可以包括数据存储1110。根据各种实现,数据存储1110的功能是由在网络1103上操作或者与网络1103进行通信的一个或多个数据库提供的。数据存储1110的功能还可以由被配置为托管分布式计算环境1102的数据的一个或多个服务器计算机来提供。数据存储1110可以包括、托管、或提供一个或多个实际的或虚拟的数据存储1126a-1126n(在下文中被统一称为和/或一般地称为“数据存储1126”)。数据存储1126被配置为托管由应用服务器1104使用或创建的数据和/或其他数据。

分布式计算环境1102可以与网络接口1112通信或者由网络接口1112访问。网络接口1112可以包括用于支持两个或更多计算设备之间的通信的各种类型的网络硬件和软件,所述计算设备包括但不限于客户端1106和应用服务器1104。应该明白的是,网络接口1112还可以用于连接至其他类型的网络和/或计算机系统。

应当理解的是,在本文中所描述的分布式计算环境1102可以利用任何数量的虚拟计算资源来实现在本文中所描述的软件元件的任何方面和/或可以被配置为执行在本文中所公开的软件组件的任何方面。根据在本文中所公开的技术的各种实现,分布式计算环境1102将提供在本文中被描述为对客户端1106的服务的软件功能中的一些或全部的。应当理解的是,客户端1106还可以包括实际的或虚拟的机器,包括但不限于,服务器计算机、web服务器、个人计算机、移动计算设备、智能电话、和/或其他设备。由此,在本文中所公开的技术的各种实现使得任何设备能够被配置为访问分布式计算环境1102,从而利用在本文中所描述的功能。

现在转到图12,将描述能够实现在本文中所描述的各种软件组件的计算设备的计算设备架构1200。计算设备架构1200部分地由于形状因子、无线连接性、和/或电池供电操作而适用于促进移动计算的计算设备。在一些配置中,计算设备包括但不限于移动电话、平板设备、板式设备、便携视频游戏设备等。

计算设备架构1200还适用于在图11中所示出的客户端1106中的任何一个。此外,计算设备架构1200的方面适用于传统台式计算机、便携式计算机(例如,膝上型计算机、笔记本、超便携计算机、和上网本)、服务器计算机、以及其他计算系统,例如参考图12在本文中所描述的这些。例如,在下文公开的单点触摸和多点触摸的方面可以应用于利用触摸屏或诸如具有触摸功能的轨迹垫或具有触摸功能的鼠标之类的具有触摸功能的某一其他设备的台式计算机。计算设备架构1200还可以用于实现用于执行应用304的服务客户端306、和/或用于实现或消费在本文中所描述的功能的其他类型的计算设备。

在图12中所示出的计算设备架构1200包括处理器1202、存储组件1204、网络连通性组件1206、传感器组件1208、输入/输出组件1210、以及电源组件1212。在所示出的配置中,处理器1202与存储组件1204、网络连通性组件1206、传感器1208、输入/输出(“i/o”)组件1210、以及电源组件1212进行通信。尽管在图12中所示出的个体组件之间没有示出连接,但是这些组件可以电气连接,以便交互并实行设备功能。在一些配置中,组件被布置以便经由一个或多个总线(未示出)来进行通信。

处理器1202包括一个或多个中央处理单元(“cpu”)内核,其被配置为处理数据、执行一个或多个应用程序的计算机可执行指令(例如,应用304),以及与计算设备架构1200的其他组件进行通信以便执行在本文中所描述的功能的方面。处理器1202可以用于执行在本文中所呈现的软件组件的方面,并且特别地,至少部分地利用具有触摸功能的输入的那些。

在一些配置中,处理器1202包括被配置为加速由cpu执行的操作的图形处理单元(“gpu”),其包括但不限于,通过执行通用科学和工程计算应用以及诸如高分辨率视频(例如,720p、1080p、4k以及更大)的图形密集型计算应用、视频游戏、3d建模应用等所执行的操作。在一些配置中,处理器1202被配置为与分立gpu(未示出)进行通信。在任何情况下,cpu和gpu可以根据协处理cpu/gpu计算模型来配置,其中,在cpu上执行的应用的顺序部分和计算密集型部分由gpu来加速。

在一些配置中,处理器1202是与在下文在本文中描述的其他组件中的一个或多个一起的片上系统(“soc”)或包含在所述片上系统中。例如,soc可以包括处理器1202、gpu、网络连通性组件1206中的一个或多个、以及传感器组件1208中的一个或多个。在一些配置中,处理器1202部分地利用封装叠加(“pop”)集成电路封装技术来制造。此外,处理器1202可以是单核或多核处理器。

处理器1202可以根据arm架构来创建,arm架构可以从英国剑桥市的arm国际公司获得许可。可替代地,处理器1202可以根据x86架构来创建,例如从california州mountainview市的intel公司和其他公司可获得的。在一些配置中,处理器1202是从california州sandiego市的高通公司可获得的snapdrgonsoc、从california州的santaclara市的nvidia可获得的tegrasoc、从韩国首尔的三星公司可获得的hummingbirdsoc、从texas州dallas市的德州仪器可获得的开放多媒体应用平台(“omap”)soc、上述soc中任何一个的定制版本、或专用soc。

存储器组件1204包括ram1214、rom1216、集成存储存储器(“集成存储”)1218、以及可移动存储存储器(“可移动存储”)1220。在一些配置中,ram1214或其部分、rom1216或其部分、和/或ram1214和rom1216的一些组合被集成在处理器1202中。在一些配置中,rom1216被配置为存储固件、操作系统或其部分(例如,操作系统内核)、和/或用于将操作系统内核从集成存储1218或可移动存储1220加载的引导加载程序。

集成存储1218可以包括固态存储器、硬盘、或固态存储器和硬盘的组合。集成存储1218可以被焊接或以其他方式连接至在本文中所描述的处理器1202和其他组件也连接到其上的逻辑板。由此,集成存储1218被集成到计算设备中。集成存储1218可以被配置为存储操作系统或其部分、应用程序、数据、和在本文中所描述的其他软件组件。

可移动存储1220可以包括固态存储器、硬盘、或固态存储器和硬盘的组合。在一些配置中,代替集成存储1218而提供可移动存储1220。在其他配置中,可移动存储1220被提供为额外的可选存储。在一些配置中,可移动存储1220在逻辑上与集成存储1218集成,以便整个可用的存储可用并向用户示出为集成存储1218和可移动存储1220的整个组合的容量。

可移动存储1220被配置为插入到可移动存储存储器插槽(未示出)或其他机制中,通过所述机制,可移动存储1220被插入并固定以促进可移动存储1220在其上可以与诸如处理器1202之类的计算设备的其他组件进行通信的连接。可移动存储1220可以以各种存储卡格式被实施,包括但不限于,pc卡、压缩闪存卡、存储器棒、安全数字(“sd”)、迷你sd、微sd、通用集成电路卡(“uicc”)(例如,订阅者身份模块(“sim”)或通用sim(“usim”))、专用格式等。

可以理解的是,存储组件1204中的一个或多个可以存储操作系统。根据各种配置,操作系统包括但不限于来自微软公司的windowsmobileos、windowsphoneos、或windowsos,来自加拿大ontario省waterloo市的动态研究有限公司的blackberryos、来自california州cupertino市的苹果有限公司的ios、以及来自california州mountainview市的谷歌有限公司的androidos。可以预期到其他操作系统。

网络连通性组件1206包括无线广域网组件(“wwan组件”)1222、无线局域网络组件(“wlan组件”)1224、以及无线个域网组件(“wpan组件”)1226。网络连通性组件1206促进到网络1228和来自网络1228的通信,所述网络可以是wwan、wlan、或wpan。尽管示出了单个网络1228,但是网络连通性组件1206可以促进与多个网络的同时通信。例如,网络连通性组件1206可以促进经由wwan、wlan、或wpan中的一个或多个与多个网络同时通信。

网络1228可以是wwan,例如利用一个或多个移动电信技术以经由wwan组件1222向利用计算设备架构1200的计算设备提供语音和/或数据服务的移动电信网络。移动电信技术可以包括但不限于全球移动通信系统(“gsm”)、码分多址(“cdma”)one、cdma2000、通用移动电信系统(“umts”)、长期演进(“lte”)、以及全球微波接入互操作性(“wimax”)。

此外,网络1228可以利用各种信道访问方法(其可以通过前述标准使用或不通过前述标准来使用),包括但不限于,时分多址(“tdma”)、频分多址(“fdma”)、cdma、宽带cdma(“w-cdma”)、正交频分复用(“ofdm”)、空分多址(“sdma”)等。可以使用通用分组无线服务(“gprs”)、用于全球演化的增强型数据速率(“edge”)、包括高速下行链路分组访问(“hsdpa”)的高速分组访问(“hspa”)协议家族、增强型上行链路(“eul”)或以其他方式所称的高速上行链路分组访问(“hsupa”)、演进型hspa(“hspa+”)、lte、以及各种其他当前的和未来的无线数据访问标准。网络1228可以被配置为利用上述技术的任何组合来提供语音和/或数据通信。网络1228可以被配置为或适配为根据后代技术来提供语音和/或数据通信。

在一些配置中,wwan组件1222被配置为提供到网络1228的双-多-模连接。例如,wwan组件1222可以被配置为提供至网络1228的连通性,其中,网络1228经由gsm或umts技术或经由技术的某一其他组合来提供服务。可替代地,多个wwan组件1222可以用于执行这样的功能,和/或提供用于支持其他非兼容技术(即,不能够由单个wwan组件支持)的额外功能。wwan组件1222可以促进到多个网络(例如,umts网络和lte网络)的类似连通性。

网络1228可以是根据电气与电子工程师协会(“ieee”)104.11中的一个或多个(例如,ieee104.11a、104.11b、104.11g、104.11n、和/或未来的104.11标准(在本文中统称为wi-fi))运行的wlan。还可以预期初步104.11标准。在一些配置中,利用一个或多个无线wi-fi接入点来实现wlan。在一些配置中,无线wi-fi接入点中的一个或多个是充当wi-fi热点的具有到wwan的连通性的另一计算设备。wlan组件1224被配置为经由wi-fi接入点而连接至网络1228。可以经由各种加密技术来确保这样的连接的安全,所述加密技术包括但不限于wi-fi保护访问(“wpa”)、wpa2、有线等效保密(“wep”)等。

网络1228可以是根据红外数据通讯(“irda”)、蓝牙、无线通用串行总线(“usb”)、z波、zigbee、或某一其他短距无线技术运行的wpan。在一些配置中,wpan组件1226被配置为促进经由wpan与其他设备的通信,例如外围设备、计算机、或其他计算设备。

传感器组件1208包括磁力计1230、环境光传感器1232、接近度传感器1234、加速度计1236、陀螺仪1238、以及全球定位系统传感器(“gps传感器”)1240。可以预期的是,例如但不限于温度传感器或冲撞检测传感器的其他传感器也可以并入到计算设备架构1200中。

磁力计1230被配置为测量磁场的强度和方向。在一些配置中,磁力计1230向存储在存储器组件1204中的一个内的指南针应用程序提供测量,以便在包含基本方向北、南、东、和西的参考帧中向用户提供准确的方向。可以向包括指南针组件的导航应用程序提供类似的测量。可以预期由磁力计1230获得的测量的其他使用。

环境光传感器1232被配置为测量环境光。在一些配置中,环境光传感器1232向存储在存储器组件1204中的一个内的应用程序(例如,应用304)提供测量以便自动地调节显示器的亮度(下文描述的),从而对低亮度和高亮度环境进行补偿。可以预期对通过环境光传感器1232获得的测量的其他使用。

接近度传感器1234被配置为在没有直接接触的情况下检测邻近计算设备的对象或事物的存在。在一些配置中,接近度传感器1234检测用户身体(例如,用户的脸)的存在并且向存储在存储组件1204中的一个内的应用程序提供该信息,所述应用程序利用该接近度信息来启用或禁用计算设备的某一功能。例如,电话应用程序可以响应于接收到接近度信息而自动地禁用触摸屏(下文描述的),以使得用户的脸不会在通话期间不注意地终止电话或启用/禁用电话应用程序内的其他功能。可以预期对如由接近度传感器1234检测的接近度的其他使用。

加速计1236被配置为测量合适的加速度。在一些配置中,来自加速计1236的输出被应用程序用作控制应用程序的某一功能的输入机制。在一些配置中,向应用程序提供来自加速计1236的输出,以在风景和肖像模式之间切换、计算协调加速度、或检测下降时使用。可以预期对加速计1236的其他使用。

陀螺仪1238被配置为测量并维持方向。在一些配置中,来自陀螺仪1238的输出被应用程序用作控制应用程序某一功能的输入机制。例如,陀螺仪1238可以用于准确识别在视频游戏应用或某一其他应用的3d环境内的运动。在一些配置中,应用程序利用来自陀螺仪1238和加速计1236的输出来增强对应用304的某一功能的控制。可以预期对陀螺仪1238的其他使用。

gps传感器1240被配置为从gps卫星接收信号以在计算位置时使用。由gps传感器1240计算的位置可以由需要位置信息或从位置信息受益的任何应用程序使用。例如,由gps传感器1240计算的位置可以与导航应用程序一起使用,以提供从位置到目的地的方向或从目的地到该位置的方向。此外,gps传感器1240可以用于向诸如e911服务之类的外部的基于位置的服务提供位置信息。gps传感器1240可以获得经由wi-fi、wimax、和/或使用一个或多个网络连通性组件1206来辅助gps传感器1240获得定位的蜂窝三角技术生成的位置信息。gps传感器1240还可以在辅助gps(“a-gps”)系统中使用。

i/o组件1210包括显示器1242、触摸屏1244、数据i/o接口组件(“数据i/o”)1246、音频i/o接口组件(“音频i/o”)1248、视频i/o接口组件(“视频i/o”)1250、以及相机1252。在一些配置中,组合显示器1242和触摸屏1244。在一些配置中,组合数据i/o组件1246、音频组件1248、以及视频i/o组件1250中的两个或更多个。i/o组件1210可以包括被配置为支持下文描述的各种接口的分立处理器,或可以包括内置到处理器1202中的处理功能。

显示器1242是被配置为以可视的形式呈现信息的输出设备。特别地,显示器1242可以呈现图形用户界面(“gui”)元素、文本、图像、视频、通知、可视按钮、虚拟键盘、消息传送数据、互联网内容、设备状态、时间、日期、日历数据、偏好、地图信息、位置信息、以及能够以可视形式呈现的任何其他信息。在一些配置中,显示器1242是使用任何主动或被动矩阵技术以及任何背光技术(如果使用的话)的液晶显示器(“lcd”)。在一些配置中,显示器1242是有机发光二极管(“oled”)显示器。可以预期其他的显示器类型。

触摸屏1244是被配置为检测触摸的存在和位置的输入设备。触摸屏1244可以是电阻式触摸屏、电容式触摸屏、表面声波触摸屏、红外触摸屏、光学成像触摸屏、分散信号触摸屏、声音脉冲识别触摸屏,或可以利用任何其他的触摸屏技术。在一些配置中,触摸屏1244作为透明层被并入到显示器1242的顶部以使得用户能够使用一个或多个触摸来与在显示器1242上呈现的对象或其他信息进行交互。在其他配置中,触摸屏1244是并入到不包括显示器1242的计算设备表面上的触摸板。例如,计算设备可以具有并入到显示器1242顶部上的触摸屏和在显示器1242对面的表面上的触摸板。

在一些配置中,触摸屏1244是单点触摸屏。在其他实现中,触摸屏1244是多点触摸屏。在一些配置中,触摸屏1244被配置为检测离散的触摸、单点触摸手势、和/或多点触摸手势。为了方便起见,在本文中这些统一被称为“手势”。现在将描述几个手势。应当理解的是,这些手势是说明性的并且不旨在限制所附权利要求的范围。此外,所描述的手势、额外的手势、和/或可替代的手势可以以软件实现以与触摸屏1244一起使用。由此,开发者可以创建专用于特定应用程序的手势。

在一些配置中,触摸屏1244支持轻敲手势,其中用户在显示器1242所呈现的项上轻敲触摸屏1244一次。轻敲手势可以用于各种原因,包括但不限于打开或发起任何用户轻敲的东西,例如表示应用304的图形图标。在一些配置中,触摸屏1244支持双敲手势,其中用户在显示器1242上显示的项上轻敲触摸屏1244两次。双敲手势可以用于各种原因,包括但不限于分阶段地放大或缩小。在一些配置中,触摸屏1244支持轻敲并保持手势,其中用户轻敲触摸屏1244并维持接触达至少预先定义的时间。轻敲并保持手势可以用于各种原因,包括但不限于打开特定于上下文的菜单。

在一些配置中,触摸屏124支持平移手势,其中用户将手指放在触摸屏1244上并在于触摸屏1244上移动手指的同时维持与触摸屏1244的接触。平移手势可以用于各种原因,包括但不限于以受控的速度移动通过屏幕、图像、或菜单。还可以预期多个手指平移手势。在一些配置中,触摸屏1244支持轻扫手势,其中用户在用户想要屏幕移动的方向上滑动手指。轻扫手势可以用于各种原因,包括但不限于,水平地或垂直地滚动通过菜单或页面。在一些配置中,触摸屏1244支持挤压和伸展手势,其中用户在触摸屏1244上用两个手指(例如,拇指和食指)做出挤压的动作或将两个手指移开。挤压和伸展手势可以用于各种原因,包括但不限于逐渐地放大或缩小网站、地图、或图片。

虽然已经参考用于执行手势的一个或多个手指的使用呈现了上文描述的手势,但是诸如脚趾之类的其他附件或诸如触笔之类的对象可以用于与触摸屏1244交互。由此,上文的手势应该被理解为是说明性的,并且不应被解释为以任何方式进行限制。

数据i/o接口组件1246被配置为促进向计算设备输入数据以及从计算设备输出数据。在一些配置中,数据i/o接口组件1246包括被配置为在计算设备和技术系统之间提供有线连通性的连接器,例如,为了同步操作的目的。连接器可以是专有连接器或诸如usb、微usb、迷你usb、usb-c等之类的标准化连接器。在一些配置中,连接器是用于将计算设备与诸如插接站、音频设备(例如,数字音乐播放器)、视频设备之类的另一设备对接的基座连接器。

音频i/o接口组件1248被配置为向计算设备提供音频输入和/或输出功能。在一些实现中,音频i/o接口组件1246包括被配置为收集音频信号的麦克风。在一些实现中,音频i/o接口组件1248包括被配置为提供针对耳机或其他外部扬声器的连通性的耳机插口。在一些配置中,音频接口组件1248包括用于输出音频信号的扬声器。在一些配置中,音频i/o接口组件1248包括光学音频电缆输出。

视频i/o接口组件1250被配置为向计算设备提供视频输入和/或输出能力。在一些配置中,视频i/o接口组件1250包括被配置为作为输入从另一设备(例如,诸如dvd或蓝牙播放器之类的视频媒体播放器)接收视频或者作为输出向另一设备(例如,监视器、电视、或某一其他外部显示器)发送视频的视频连接器。在一些配置中,视频i/o接口组件1250包括高分辨率多媒体接口(“hdmi”)、迷你hdmi、微hdmi、显示端口(displayport)、或用于输入/输出视频内容的专用连接器。在一些配置中,视频i/o接口组件或其部分与音频i/o接口组件1248或其部分组合。

相机1252可以被配置为捕获静态图像和/或视频。相机1252可以使用电荷耦合元件(“ccd”)或互补金属氧化物半导体(“cmos”)图像传感器来捕获图像。在一些配置中,相机1252包括帮助在低亮度环境中拍照的闪光灯。针对相机1252的设置可以被实现为硬件或软件按钮。

尽管没有被示出,但是一个或多个硬件按钮还可以被包括在计算设备架构1200中。硬件按钮可以用于控制计算设备的某一操作方面。硬件按钮可以是专用按钮或多用途按钮。硬件按钮可以是机械的或基于传感器的。

所示出的电源组件1212包括一个或多个电池1254,其可以连接到电池电量计1256。电池1254可以是可充电的或一次性的。可充电电池类型包括但不限于锂聚合物、锂离子、镍镉、以及镍氢。电池1254中的每一个可以由一个或多个单元组成。

电池电量计1256可以被配置为测量诸如电流、电压、和温度之类的电池参数。在一些配置中,电池电量计1256被配置为测量电池的放电率的效果、温度、年龄以及用于在特定的误差百分比之内预测剩余寿命的其他因素。在一些配置中,电池电量计1256提供对应用程序的测量,该应用程序被配置为利用这些测量来向用户呈现有用的电力管理数据。电力管理数据可以包括以下中的一个或多个:已使用电池的百分比、剩余电池的百分比、电池条件、剩余时间、剩余容量(例如,以瓦特时为单位)、电流消耗、以及电压。

电源组件1212还可以包括电源连接器(未示出),其可以与前述i/o组件1210中的一个或多个组合。电源组件1212可以经由电源i/o组件与外部电源系统或充电设备接合。还可以使用其他配置。

在本文中呈现的公开还包括在以下条款中给出的主题:

条款1.一种计算机实现的方法,包括:经由第一网络服务应用程序接口(api)从服务客户端接收对图中资源的面的请求,所述第一网络服务api是通过在第一网络中操作的第一网络服务提供的;识别由向所述第一网络服务注册以提供所述面的第二网络服务暴露的第二网络服务api的网络地址;通过所述第一网络服务来获得在向所述第二网络服务认证时使用的数据;以及提供对从所述服务客户端接收的所述请求的响应,所述响应包括对所述服务客户端的指示,所述指示用于执行到由用于获得所述面的所述第二网络服务暴露的所述第二网络服务api的所述网络地址的重定向,其中获得所述面是使用在向所述第二网络服务认证时使用的所述数据来进行的。

条款2.条款1的计算机实现的方法,其中,从所述服务客户端所接收的针对所述面的所述请求包括标识所述资源的数据以及与所述第二网络服务相关联的唯一标识符(id)。

条款3.条款1-2的计算机实现的方法,其中,所述第二网络服务是在与所述第一网络不同的第二网络中操作的,并且其中,识别由所述第二网络服务暴露的所述第二网络服务api的所述网络地址包括利用与所述第二网络服务相关联的所述唯一id来取回先前存储的针对所述第二网络服务的回调统一资源定位符(url)。

条款4.条款1-3的计算机实现的方法,其中,所述第二网络服务通过向所述第一网络服务提供所述回调url和所述唯一id来向所述第一网络服务注册。

条款5.条款1-4的计算机实现的方法,其中,识别由所述第二网络服务暴露的所述第二网络服务api的所述网络地址包括:利用与所述第二网络服务相关联的所述唯一id来获得针对所述第二网络服务的统一资源标识符(uri)模板;以及解析所述uri模板以生成由所述第二网络服务暴露的所述第二网络服务api的所述网络地址。

条款6.条款1-5的计算机实现的方法,其中,所述第二网络服务通过向第一网络服务提供uri模板和唯一id来向所述第一网络服务注册。

条款7.条款1-6的计算机实现的方法,还包括:通过所述第一网络服务来接收针对关于所述面的信息的请求,针对关于所述面的信息的所述请求包括与所述第二网络服务相关联的唯一标识符(id);利用与所述第二网络服务相关联的唯一id来获得关于所述面的所述信息;以及响应于针对信息的所述请求而返回关于所述面的所述信息。

条款8.条款1-7的计算机实现的方法,还包括:通过所述第一网络服务来接收针对标识与图中的资源相关联的面的数据的请求,所述请求包括标识图中的资源的位置的数据;以及响应于针对数据的所述请求而返回标识与图中的资源相关联的面的数据。

条款9.条款1-8的计算机实现的方法,其中,所述第一服务位于第一地理位置,其中,所述第二服务位于第二地理位置中,并且其中,所述服务客户端位于第三地理位置中。

条款10.一种装置,包括:一个或多个处理器;以及具有存储在其上的计算机可执行指令的至少一个计算机存储介质,其中,所述计算机可执行指令当由所述一个或多个处理器执行时,使得所述装置执行以下操作:经由通过在第一网络中操作的第一网络服务所提供的第一网络服务应用程序接口(api)来从服务客户端接收针对图中的资源的面的请求,识别由向所述第一网络服务注册以提供所述面的第二网络服务暴露的第二网络服务api的网络地址,以及提供对从所述服务客户端接收的所述请求的响应,所述响应包括对所述服务客户端的指示,所述指示用于执行到由用于获得所述面的所述第二网络服务暴露的所述第二网络服务api的所述网络地址的重定向。

条款11.条款10的装置,其中,从所述服务客户端接收的针对所述面的所述请求包括标识在所述资源的所述图中的位置的数据以及与所述第二网络服务相关联的唯一标识符(id),并且其中,识别由所述第二网络服务暴露的所述第二网络服务api的所述网络地址包括利用与所述第二网络服务相关联的所述唯一id来取回先前存储的针对所述第二网络服务的回调统一资源定位符(url)。

条款12.条款10-11的装置,其中,所述第二网络服务通过向所述第一网络服务提供回调url和唯一id来向所述第一网络服务注册。

条款13.条款10-12的装置,其中,从所述服务客户端接收的针对所述面的所述请求包括标识在所述资源的所述图中的位置的数据以及与第二网络服务相关联的唯一标识符(id),并且其中,识别由所述第二网络服务暴露的所述第二网络服务api的所述网络地址包括:利用与所述第二网络服务相关联的所述唯一id来获得针对所述第二网络服务的统一资源标识符(uri)模板;以及解析所述uri模板以生成由所述第二网络服务暴露的所述第二网络服务api的所述网络地址。

条款14.条款10-13的装置,其中,所述第二网络服务通过向所述第一网络服务提供uri模板和唯一id来向所述第一网络服务注册。

条款15.条款10-14的装置,其中,所述第一服务还被配置为:向所述第二网络服务发送针对所述面的请求,所述请求包括针对所述第二网络服务的认证令牌;从所述第二网络服务接收所述面;以及向所述服务客户端提供对针对所述面的请求的回复,所述回复包括所述面以及针对从在所述第一网络中操作的一个或多个其他网络服务所获得的所述图中的所述资源的额外信息。

条款16.一种具有存储在其上的计算机可执行指令的计算机可读存储介质,其中,所述计算机可执行指令当由一个或多个处理器执行时,使得所述处理器执行以下操作:经由通过在第一网络中操作的第一网络服务所提供的第一网络服务应用程序接口(api)来从服务客户端接收针对图中的资源的面的请求,识别由向所述第一网络服务注册以提供所述面的第二网络服务暴露的第二网络服务api的网络地址,以及提供对从所述服务客户端接收的所述请求的响应,所述响应包括对所述服务客户端的指示,所述指示用于执行到由用于获得所述面的所述第二网络服务暴露的所述第二网络服务api的所述网络地址的重定向。

条款17.条款16的计算机可读存储介质,其中,从所述服务客户端接收的针对所述面的所述请求包括标识在所述资源的所述图中的位置的数据以及与所述第二网络服务相关联的唯一标识符(id),并且其中,识别由所述第二网络服务暴露的所述第二网络服务api的所述网络地址包括利用与所述第二网络服务相关联的所述唯一id来取回先前存储的针对所述第二网络服务的回调统一资源定位符(url)。

条款18.条款16-17的计算机可读存储介质,其中,所述第二网络服务通过向所述第一网络服务提供回调url和唯一id来向所述第一网络服务注册。

条款19.条款16-18的计算机可读存储介质,其中,从所述服务客户端接收的针对所述面的所述请求包括标识在所述资源的所述图中的位置的数据以及与第二网络服务相关联的唯一标识符(id),并且其中,识别由所述第二网络服务暴露的所述第二网络服务api的所述网络地址包括:利用与所述第二网络服务相关联的所述唯一id来获得针对所述第二网络服务的统一资源标识符(uri)模板;以及解析所述uri模板以生成由所述第二网络服务暴露的所述第二网络服务api的所述网络地址。

条款20.条款16-19的计算机可读存储介质,其中,所述第二网络服务通过向所述第一网络服务提供uri模板和唯一id来向所述第一网络服务注册。

基于前述内容,应当理解的是,在本文中已经公开了提供用于将数据项转换至新的数据格式的应用自动路由的概念和技术。尽管已经用特定于计算机结构特征、方法和转换动作、具体的计算机器、以及计算机可读介质的语言描述了在本文中所呈现的主题,但应当理解的是,在所附权利要求中所定义的本发明不一定限于在本文中所描述的具体特征、动作、或介质。相反,具体的特征、动作和介质是作为实现权利要求书的示例性形式而公开的。

在上文中所描述的主题仅通过说明的方式提供并且不应被理解为进行限制。可以在不遵守所示出和描述的示例配置和应用的情况下对在本文中所描述的主题进行各种修改和改变,而不脱离在以下的权利要求中阐述的本发明的真正范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1