发明内容
根据本公开的各方面,提供了根据所附权利要求的方法、用户终端、服务器系统和计算机程序产品。
根据第一方面,提供了由第一用户终端使用的方法,第一用户终端包括处理器和由处理器执行的第一应用,第一应用被配置为使处理器将第一服务的执行委托到另外不同的应用,所述方法包括:
确定将代表(on behalf of,为)第一应用执行所述第一服务;
响应于所述确定,将包括所述第一服务的标识符的请求消息发送到数据存储装置,数据存储装置包括指示保持在一个或多个用户终端上的多个应用以及指示可由多个应用中的对应应用根据请求执行的一个或多个服务的条目;
从数据存储装置接收响应消息,响应消息确认(identifying,识别)保持在一个或多个用户终端上的可向其委托所述第一服务的执行的一个或多个应用;和
使处理器将所述第一服务的执行委托到第二应用,第二应用是经确认的一个或多个应用中的一个。
在根据该方面的示例实施例中,第一应用能够发现保持在第一用户终端或另一用户终端上、提供第一应用可委托的服务的应用。在示例实施例中,这可便于应用之间的服务共享。
在一个实施例中,响应消息确认在一个或多个用户终端上保持的多个应用,且所述方法包括从多个应用中选择所述第二应用。可基于用户选择来选择第二应用,或者可基于准则或标准(诸如第二应用是否位于与第一应用相同的用户终端、应用被保持在其上的各个用户终端的操作系统和/或各个应用被保持在其上的用户终端的相对位置)由用户终端进行选择。在示例实施例中,这些特征通过支持适当服务提供应用的选择来提高应用之间的服务提供。
在一个实施例中,方法包括从第一应用将用于第一服务的执行的请求发送到第二应用。
在一个实施例中,用于第一服务的执行的请求包括确认第一服务的服务标识符。
在一个实施例中,用于第一服务的执行的请求包括确认第一服务的版本号的版本标识符。
在一个实施例中,第一服务包括多个功能且用于第一服务的执行的请求包括确认多个功能中的第一功能的功能标识符。
在一个实施例中,用于第一服务的执行的请求包括第一应用的标识符。
在一个实施例中,用于执行第一服务的请求包括与第一应用相关的地址信息。
在一个实施例中,所述方法包括将关于将要执行的第一服务的数据发送到所选应用。
在一个实施例中,所述方法包括从所选择应用接收由第一服务的执行产生的数据。
在一个实施例中,从数据存储装置接收的响应消息包括关于第二应用的地址信息,且使用所述地址信息发送用于第一服务的执行的请求。
在一个实施例中,所述方法包括经由保持在第一用户终端上的库应用编程接口(API)发送用于第一服务的执行的请求。
在一个实施例中,所述方法包括配置处理器以执行关于第一应用的安装过程,从而为第一用户终端配置有第一应用,此后将注册消息发送到服务器系统以注册(register,登记)第一应用已被安装在第一用户终端上。所述方法还可包括配置处理器以执行关于第二应用的安装过程,从而为第一用户终端配置有第二应用,此后将注册消息发送到服务器系统以注册第一应用已被安装在用户终端上。在示例实施例中,这些功能能够使服务器系统编译保持在用户终端上的应用的记录,由此服务器系统可便于由用户终端上的应用进行的应用发现。
在一个实施例中,数据存储装置被容纳(held,保持)在远离所述第一用户终端的服务器系统。
在一个实施例中,数据存储装置被容纳在第一用户终端上。所述方法包括:从远离所述第一用户终端的服务器系统检索确认保持在一个或多个用户终端上的数据和可由保持在一个或多个用户终端上的应用根据请求执行的服务;和在检索信息的基础上将条目保留(maintain)在数据存储装置中。在示例实施例中,这些特征能够使用户终端保留可用的服务和应用的本地记录,由此即使在用户终端未连接到远程服务器系统的时候,用户终端上的应用也可从其它应用请求服务。
在一个实施例中,第一用户终端包括移动装置。
根据第二方面,提供了一种计算机程序产品,其包括具有存储在其上的计算机可读指令的非暂时性计算机可读存储介质,计算机可读指令可由用户终端执行以使用户终端执行用于用户终端上的方法,用户终端包括处理器和由所述处理器执行的第一应用,第一应用被配置为使处理器将第一服务的执行委托到另外不同的应用,所述方法包括:
确定将代表第一应用执行所述第一服务;
响应于所述确定,将包括所述第一服务的标识符的请求消息发送到数据存储装置,数据存储装置包括指示保持在一个或多个用户终端上的多个应用并指示可由多个应用中的对应应用根据请求执行的一个或多个服务的条目;
从数据存储装置接收响应消息,响应消息确认保持在一个或多个用户终端上的可向其委托所述第一服务的执行的一个或多个应用;和
使处理器将所述第一服务的执行委托到第二应用,第二应用是所标识的一个或多个应用中的一个。
第二方面的计算机程序产品可适于提供对应于上述关于第一方面的方法的那些中的任何的特征。
根据第三方面,提供了一种用户终端,其包括处理器和由所述处理器执行的第一应用,第一应用被配置为使处理器将第一服务的执行委托到另外不同的应用,用户终端被配置为:
确定将代表第一应用执行所述第一服务;
响应于所述确定,将包括所述第一服务的标识符的请求消息发送到数据存储装置,数据存储装置包括指示保持在一个或多个用户终端上的多个应用的条目和对应条目各自指示可由多个应用中的对应应用根据请求执行的一个或多个服务;
从数据存储装置接收响应消息,响应消息确认保持在一个或多个用户终端上的可委托所述第一服务的执行的一个或多个应用;和
将所述第一服务的执行委托到第二应用,第二应用是所标识的一个或多个应用中的一个。
第三方面的用户终端可适于提供对应于上述关于第一方面的方法的那些中的任何的特征。
根据本发明的第四方面,提供了由第一用户终端使用的方法,第一用户终端包括处理器和由所述处理器执行的第一应用,第一应用被配置为使处理器将第一服务的执行委托到另外不同的应用,所述方法包括:
从远离第一用户终端的服务器系统检索确认在用户终端上保持的应用的数据和可由在用户终端上保持的应用根据请求执行的服务;
基于检索数据,将指示保持在一个或多个用户终端上的多个应用并指示可由多个应用中的对应应用根据请求执行的一个或多个服务的条目保留在第一用户终端的存储器上;
从第一应用接收请求消息,请求包括所述第一服务的标识符;
基于第一服务的标识符确定保持在一个或多个用户终端上的所述第一服务的执行可被委托到其上的一个或多个应用;
将响应消息发送到第一应用,响应消息确认所确定的一个或多个应用。
根据本发明的第五方面,提供了由第一用户终端使用的方法,第一用户终端包括处理器和由所述处理器执行的第一应用,第一应用被配置为将第一服务的执行委托到另外不同的应用,所述方法包括:
在数据存储装置上存储指示在一个或多个用户终端上保持的多个应用并指示可由多个应用中的对应应用根据请求执行的一个或多个服务的条目;
从第一应用接收请求消息,请求消息包括第一服务的标识符;
访问数据存储装置以确定保持在一个或多个用户终端上的能够代表所述第一应用执行所述第一服务的一个或多个应用;
发送由第一应用接收的响应消息,响应消息确认所确定的能够代表所述第一应用执行所述第一服务的一个或多个应用。
根据第六方面,提供了一种计算机程序产品,其包括具有存储在其上的计算机可读指令的非暂时性计算机可读存储介质,计算机可读指令可由第一用户终端执行以使第一用户终端执行用于第一用户终端上的方法,第一用户终端包括处理器和由所述处理器执行的第一应用,第一应用被配置为使处理器将第一服务的执行委托到另外不同的应用,所述方法包括:
在数据存储装置上存储指示保持在一个或多个用户终端上的多个应用并指示可由多个应用中的对应应用根据请求执行的一个或多个服务的条目;
从第一应用接收请求消息,请求消息包括第一服务的标识符;
访问数据存储装置以确定保持在一个或多个用户终端上的能够代表所述第一应用执行所述第一服务的一个或多个应用;
发送由第一应用接收的响应消息,响应消息确认所确定的能够代表所述第一应用执行所述第一服务的一个或多个应用。
第四、第五和第六方面提供了便于发现保持在用户终端上的应用的方法。第四、第五和第六方面可适于提供对应于上述关于第一方面的方法的那些中的任何的特征。
根据第七方面,提供了与多个用户终端一起使用的服务器系统,服务器系统包括存储器和一个或多个处理器,用户终端每个都包括用于在其上执行的一个或多个应用,存储器被配置为存储:
多个用户终端标识符,其中每个确认多个用户终端中的用户终端;
多个应用标识符,其中每个应用标识符确认保持在相应用户终端上的应用;和
多个服务标识符,其中每个服务标识符确认可代表其它不同应用由各个的所述应用执行的服务,
一个或多个处理器被配置为:
从第一所述用户终端接收请求消息,请求消息包括确认所述第一用户终端的标识符;
基于第一用户终端标识符,访问存储器以确认所经确认的应用中对应的那些被配置为执行的一个或多个所述应用和一个或多个服务;
将响应消息发送到第一用户终端,响应消息确认所经确认的一个或多个应用和对应的一个或多个服务。
在示例实施例中,第七实施例的服务器系统能够保留由保持在用户终端上的应用提供的服务的记录,并根据请求将该信息提供到用户终端,以便于由这些用户终端上的应用发现服务。
在一个实施例中,每个用户终端和每个服务都与多个组中的一个或多个组相关联,且存储器被配置为存储指示与每个用户终端和每个应用相关联的一个或多个组的数据,
其中,服务根据多个类别被分类,且存储器被配置为存储指示每个所述服务的所述类别的数据,多个类别包括第一类别和第二类别,第一类别包括其可被提供到其不与和服务相同的组相关联的应用的服务,且第二类别包括其可不被提供到其不与和服务相同的组相关联的应用的服务,
其中,在第二类别的给定标识服务不与第一用户终端与其相关联的组相关联的情况下,一个或多个处理器被配置为不确认响应消息中的给定标识服务。
在示例实施例中,这些特征能够使特定应用通过从由其它应用发现来禁止。例如,一些组织(诸如企业)可希望仅与和组织相关联的用户终端共享服务。
根据第八方面,提供了由第一用户终端使用的方法,第一用户终端包括处理器和由所述处理器执行的第一应用,第一应用被配置为使处理器将第一服务的执行委托到另外不同应用,所述方法包括:
确定代表第一应用执行所述第一服务;
响应于所述确定,将包括所述第一服务的标识符的请求消息发送到数据存储装置,数据存储装置包括指示可由多个应用中的对应应用根据请求执行的一个或多个服务的条目;
从数据存储装置接收响应消息,响应消息确认可委托所述第一服务的执行的两个或更多应用;和
使处理器将所述第一服务的执行委托到第二应用,第二应用是标识的一个或多个应用中的一个。
在一个实施例中,至少所述第二应用被保持在远离第一用户终端的服务器装置上。在一些情况下,可期望将服务提供应用存储在服务器系统上,而不是用户终端上。这能够在无需在用户终端上下载和安装应用的情况下实现提供服务。这可能是特别有利的,例如,其中服务提供应用需要大量的存储空间或处理资源。
根据第九方面,提供了由第一用户终端使用的方法,第一用户终端包括处理器和由所述处理器执行的第一应用,第一应用被配置为将第一服务的执行委托到另外不同的应用,所述方法包括:
在数据存储装置上存储指示可由多个应用中的对应应用根据请求执行的多个应用和一个或多个服务的条目;
从第一应用接收请求消息,请求消息包括第一服务的标识符;
访问数据存储装置以确定保持在一个或多个用户终端上的能够代表所述第一应用执行所述第一服务的一个或多个应用;
发送由第一应用接收的响应消息,响应消息确认所确定的能够代表所述第一应用执行所述第一服务的一个或多个应用。
第九方面的方法可适于提供对应于上述关于第八方面的服务器系统的那些中的任何的特征。
根据第十方面,提供了用于注册其可由其它不同应用代表给定应用执行的服务的服务器系统,服务器系统包括存储器、一个或多个处理器和通信接口装置,一个或多个处理器被配置为经由通信接口接收关于服务和应用的信息,其包括:
第一应用标识符,确认被配置为代表第二不同应用执行给定服务的第一应用;
服务标识符,确认所述服务;和
所述服务的执行所需的一个或多个输入参数,
一个或多个处理器被配置为在所述存储器中存储数据条目,其包括所述第一应用标识符、所述服务标识符和所述一个或多个输入参数并指示第一应用标识符和服务标识符之间的关联。
在根据第一方面的示例实施例中,服务器系统提供可用服务和有关可用服务的输入参数的存储库,其便于提供注册服务的应用的开发。
在一个实施例中,一个或多个处理器被配置为经由通信接口从请求方接收请求消息,请求消息包括所述服务标识符;和响应于所述请求消息,将请求的一个或多个参数发送到所述请求方。处理器系统可被配置为:经由通信接口从请求方接收消息,其包括标识不同于所述第一应用的第三应用的第三应用标识符,第三应用被配置为执行所述服务;和在所述存储器中存储一个或多个数据条目,其包括所述第三应用标识符并指示第三应用和服务之间的关联。在示例实施例中,这些特征能够使多个应用提供待开发和注册的给定服务,从而便于应用的开放和随后的应用发现。
根据第十一实施例,提供了用于对服务器系统提供一个或多个软件组件的方法,所述组件用于注册可由其它不同应用代表给定应用执行的服务,服务器系统包括存储器、一个或多个处理器和通信接口装置,所述方法包括:
对服务器系统提供第一软件组件,其用于配置一个或多个处理器,以经由通信接口接收关于服务和应用的信息,其包括:
第一应用标识符,其确认被配置为代表第二不同应用执行给定服务的第一应用;
服务标识符,确认所述服务;和
所述服务的执行所需的一个或多个输入参数,
所述方法包括对一个或多个处理器提供软件组件,其用于配置一个或多个处理器以在所述存储器中存储包括所述第一应用标识符、所述服务标识符和所述一个或多个输入参数并指示第一应用标识符和服务标识符之间的关联的数据条目。
第十一方面的方法可适于提供对应于上述关于第十方面的服务器系统的那些中的任何的特征。
通过本发明的一些优选实施例的以下描述(仅通过举例的方式给出,其参考附图作出),本发明的实施例的其它特征和优点将变得显而易见。
具体实施方式
图1是示出根据实施例的用户终端100的实例的组件的示意图。用户终端可以是便携式计算装置100,诸如移动电话(例如智能电话)、个人数字助理(PDA)、平板计算机或笔记本计算机等。
用户终端100包括显示屏102,其可以是能够接收用户输入的触摸屏;和/或计算装置100可具有单独的输入装置,诸如键盘104或一些定点装置(未示出),该单独的输入装置可与用户终端100集成或无线地连接或通过有线连接相连。用户终端100还包括处理器106和数据存储装置108。数据存储装置108可包括一个或多个计算机可读介质。计算机可读介质包括计算机存储介质和通信介质,该通信介质包括便于将计算机程序从一个位置传送到另一个位置的任何介质。存储介质可以是可由计算机访问的任何可获得介质。通过举例的方式,而非限制,这样的计算机可读介质可包括:RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁存储装置,或可用于携带或存储指令形式的所需程序代码或数据结构且可由计算机访问的任何其它介质。而且,任何连接被适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)、或无线技术(诸如红外线、无线电和微波)将软件从网站、服务器或其它远程源(remote source)传输,则同轴电缆、光纤电缆、双绞线、DSL、或无线技术(诸如红外线、无线电和微波)包括在介质的定义中。如本文中所使用的磁盘和光盘包括光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地再现数据,而光盘由激光光学地再现数据用。因此,在一些方面,计算机可读介质可包括非暂时性计算机可读存储介质(例如有形介质)。此外,在一些方面,计算机可读介质可包括暂时性计算机可读介质(例如信号)。上述的组合也应包括在计算机可读介质的范围之内。
处理器106处理存储在数据存储装置108中的指令。这些指令是以实现操作系统的一个或多个程序的形式的计算机软件的形式;示例操作系统包括应用和AndroidTM操作系统。数据存储装置108还被在处理器106上运行的程序用作存储和访问电信号形式的数据的装置,其中数据在程序的执行过程中使用。操作系统提供用于存储、修改和访问保持在数据存储装置中的文件的文件系统。该文件系统可经由由操作系统提供的编程接口而由在处理器106上运行的其它程序访问。在处理器102上运行的程序也处理从例如触摸屏102或键盘104等接收的用户输入。用户终端100还包括网络接口110(或多个这样的接口),其允许在处理器102上运行的程序经由有线及/或无线连接,经由通信网络(或多个这样的网络)向和从其它装置和系统传输和接收数据。
如图2中示意地示出,数据存储装置108还可存储软件应用应用1200a、应用2 200b和应用3 200c(在本文中称为“应用”),软件应用在用户终端100上执行特定任务,诸如关于文档查看、文字处理、记账、加密、搜索等的任务。应用可被预安装在用户终端100上,或者它们可由用户随后例如通过从远程数据商店下载应用来安装;下面描述应用的安装。数据存储装置108还可包括库应用编程接口(API)(在本文中称为“库”),其提供由应用200a、200b、200c使用的资源的收集,诸如配置数据、消息模板、子例程等。库还可通过例如序列化传输用的数据来促进不同应用之间的通信。图2示出库的三个实例,即分别与应用1 200a、应用2200b和应用3 200c相关联的库1 202a、库2 202b和库3 202c。虽然在图2中示出三个应用和库,但是应理解,用户终端100通常包括几十或数百个应用。
图3是根据一个实施例的系统的示意图。用户终端100上的网络接口110可包括无线电接入网络接口,其能够与无线接入节点300(诸如基站或无线接入点)通信,所述节点提供对通信网络302的接入。网络接口110能够使用一个或多个无线接入技术,例如包括全球移动通信系统(GSM)、通用移动电信系统(UMTS)、长期演进(LTE)、和固定无线接入(诸如IEEE802.16WiMax)连接到无线接入节点120和无线网络(例如IEEE802.11无线网络))。可替代地或附加地,网络接口112可诸如经由调制解调器或路由器等提供到通信网络302的有线连接。
用户终端100经由通信网络302与服务器系统通信;这可使用联网程序进行,所述联网程序允许在处理器106和外部设备上运行的程序之间经由通信网络302通信。与用户终端通信的服务器系统包括网络运营中心(NOC)304。NOC 304可包括一个计算机服务器或多个计算机服务器,其可使用通信接口经由通信网络306与其它远程数据处理装置(诸如连接到企业网络(未示出)的一个或多个企业服务器314、316、318)进行通信。NOC 304包括一个或多个处理器304a和数据库304b形式的存储器。
从通信网络306访问一个或多个企业服务器314、316、318和企业网络可通常受到通信网络306和企业网络之间的防火墙312的控制,使得在通信网络306和企业网络之间传递的所有网络流量可被监视,且可选地:如果它不满足由防火墙312实施的标准可被禁止。例如,防火墙312可被配置为仅允许NOC 304和一个或多个企业服务器314、316、318之间的网络连接,并将从通信网络306到一个或多个企业服务器160、162、164和/或企业网络的所有其它网络连接丢弃。
用户终端100还可与提供其它服务,诸如用于分发软件应用的应用商店310的其它第三方计算机服务器通信。这可经由NOC 304和通信网络180来进行。
图3还示出其它不同用户终端150,其还包括网络接口160,其能够经由无线接入节点300和通信网络302与NOC 304连接。虽然未示出,但是其它用户终端150还可包括与图1中所示的用户终端100相同或类似的组件,诸如处理器、数据存储装置、触摸屏和/或键盘等。其它用户终端150的数据存储装置可存储与上述参考图2描述的那些类似或相同的一个或多个软件应用。
虽然图3仅示出连接到NOC 304的两个用户终端100、150,但是应理解,通常两个以上用户终端100(例如数百或数千个用户终端)可与NOC304连接。
通信网络302、306和308每个都可以是或包括因特网和/或公共陆地移动网络(PLMN)和/或公共交换电话网络(PSTN)。可使用基于分组的通信协议(诸如超文本传输协议(HTTP))进行跨各个通信网络302、306、308的通信。
根据本发明的实施例,NOC 304设有软件,其用于使应用开发者在数据库304a中注册服务。注册的服务是可由一个应用代表另一个应用来进行的服务。
图4示出示例服务注册过程,其中应用开发者(“应用2开发者”400)利用NOC 304注册服务“服务A”。应用2开发者400可决定提供应用由其它应用使用的能力(即服务)。为了做到这一点,应用2开发者400经由例如用户界面连接到NOC 4。应用2开发者400通过在步骤S402将“注册服务”消息发送到NOC 304来在NOC 304上注册相关服务。注册服务消息包括服务标识符,通常包括字符的字母数字序列,其唯一地标识该服务。它也可包括组织标识符,确认与服务相关联的组织,以及可见标识符,该可见标识符确认服务是否被分类为“公共”或“私人”。如果服务被分类为私人,则它只能用于由与服务相同的组织或与具有适当权限的组织相关联的应用进行消费。如果服务被分类为公共,则其可用于由任何应用消费,而不管与应用相关联的任何组织。在一些情况下,注册服务消息可不指定与服务相关联的组织;在这种情况下,服务被视为公共。注册服务消息通常还包括由服务执行的功能(方法)列表。例如,在打印服务的情况下,服务可提供诸如“打印传真”、“打印pdf”等的功能。
注册服务消息可任选地包括其它信息,诸如服务的描述(例如服务是否涉及印刷文件、加密等)和服务的显示名称。
在步骤S403,应用2开发者400通过将“注册服务版本”消息发送到NOC 304来利用NOC 304注册服务的版本。注册服务版本消息包括在步骤S402发送的服务标识符,以及确认服务的版本号和接口定义的版本标识符。接口定义是应用编程接口(API),描述服务的版本的输入参数。例如,在服务是打印服务的情况下,API可要求由服务消费应用提供输入参数,诸如字体大小、字体颜色等。
一旦已经在NOC 304注册了服务,应用2开发者400即可在步骤S404实施被配置为执行服务的应用应用2 200b。应用2开发者400通过在步骤S406将“注册应用”消息发送到NOC 304将来注册应用2 200b。注册应用消息包括确认应用2 200b的应用标识符。
在步骤S408,应用2开发者400通过将“注册应用版本”消息发送到NOC 304来注册应用2的版本。注册应用版本消息包括在步骤S304发送的应用标识符,以及确认应用2 200b的版本的版本标识符。
在步骤S410,应用2开发者400将“注册地址”消息发送到NOC 304;注册地址消息包括分别在步骤S406和S408发送的应用标识符和版本标识符,并且包括指示应用的有关版本的地址的地址信息。一旦应用2被安装在用户终端,地址信息即可定义应用2的目的地址,以便消费由应用2执行的服务的应用可接触应用2。在应用装置的情况下,地址可被提供为统一资源定位器(URL)方案的一部分。优选地,URL方案由应用包ID构建;这使得接收请求的应用容易地由设置有请求的源“包ID”信息构建返回地址。同样地,在AndroidTM装置的情况下,地址可包括“分组名称”。
在步骤S412,应用2开发者400将“绑定版本”消息发送到NOC 304。绑定版本消息包括在步骤S406发送的应用标识符和在步骤S408发送的版本标识符,以及在步骤S402发送的服务标识符和在步骤S403发送的服务版本标识符。绑定版本消息向NOC 304指示应用2202b被配置为执行在步骤S402和S403注册为服务A的服务。
一旦上述注册过程完成,应用2开发者400即可在步骤S414在应用商店310发布应用2 202b的注册版本。一旦发布在应用商店310,应用2202b即可被下载到一个或多个用户终端100、150;这可包括认证试图下载应用2 202b的用户终端100、150的认证过程。例如,应用商店310可要求用户凭证的条目,诸如用户名和密码。在一些情况下,应用2 202b可仅用于下载到与例如给定企业或其它集团相关联的用户终端100、150。
通过根据如上参考图4描述的应用过程编译从不同应用开发者提供的注册数据,NOC 304被启用以在数据库304b中建立关联应用与服务的条目组。图5a示意地示出保持在数据库304b中的示例第一组条目500,第一组条目指示可提供特定服务的应用。示例第一组条目500包括:确认利用NOC304注册的服务的服务标识符502;确认与每个注册的服务相关联的组织的组织标识符504;确认每个注册服务是否被分类为公共或私人的可见标识符506;描述每个注册服务的特征的服务描述508;确认每个注册服务的版本号的版本标识符510;对应于每个应用的每个版本的接口定义512(例如,这些可使用Web服务描述语言(WSDL)来描述);和确认应用的应用标识符514,和被配置为执行给定服务的各个版本的相应的应用的版本号。虽然在图5a中未示出,但是第一组条目可包括其它信息,诸如由每个服务提供的不同功能的描述。
其他开发商(或其它各请求方)可访问NOC 304并浏览保持在数据库304b中的数据条目。例如,这可经由使得能够搜索数据库304b的定制用户接口进行。可需要认证处理以访问数据库304c;例如,开发者可被要求提供用户凭证,诸如用户名和/或密码。NOC 304可被配置为允许给定的开发者来访问仅涉及与被分类为公共的服务或其是私人且也与关联开发者的组织相关联的数据。NOC 304可保留确认与每个开发者相关联的一个组织或多个组织的开发者记录,并基于用户凭证确定相关组织。
如上所述,NOC 304可支持可通过一个应用提供到另一个应用的服务的注册。一旦服务在NOC 304被注册,开发者即可开发和注册多个应用,其中每个都能够提供该服务(应注意,在一些情况下,图5a示出对应于给定服务版本的多个应用版本)。此外,一旦服务已经被注册,则消费服务的应用即可容易地被开发。例如,开发者可搜索服务描述508以确认合适的服务,一旦这样的服务已经被确认,即可检索对应的接口定义512。基于检索的接口定义,开发者可随后开发应用,该应用消费相关服务(即将服务的执行委托到不同应用),或提供相关服务。在服务消费应用的情况下,应用被配置为在需要时发送相关服务的请求,其包括服务的服务标识符。因此,根据本文描述的方法的服务的注册便于可互操作以提供和消费服务的应用的开发。
图6示出其中开发者“应用1开发者”600利用NOC 304开发并注册应用的示例过程,该应用消费在NOC 304上注册的服务。在步骤S602,应用1开发者600浏览在NOC 304上注册的服务,并且一旦合适的服务(及其版本)已被确认,则在步骤S603获取相关的接口定义;例如如上所述可使用用户界面进行这些步骤。
在步骤S603获得的接口定义使得应用1开发者600实施应用应用1200a(其消费在步骤S604所确认的服务)。应用1开发者600然后发送消息以分别在步骤S606和S608利用NOC304注册应用1 200a和版本号,并在步骤S610在应用1商店310上发布应用1 200a;步骤S606至S610分别对应于上述的S406至S408和S414。
在上面参考图4描述的应用2 200b的注册过程中,在步骤S410发送注册地址消息以提供关于应用2 200b的目的地地址信息。这在应用1 200a的情况下可能是不必要,因为后者是服务的消费者,而不是提供者,这意味着对于其它应用能够与应用1 200a接触可能不是必要的。然而,一些应用可以是服务的提供者,以及消费者;例如,给定的应用可将第一服务(例如打印服务)委托到其它应用,但提供第二服务(例如文档查看服务)。对于其为服务提供商和服务消费者两者的应用,地址信息通常被提供到NOC 304,如上面参考图4所描述的。
一旦应用已经存储在应用商店310中,即可将它们下载并安装到用户终端100、150。这可经由作为目录服务器的NOC 304进行。NOC 304可将用于不同的可下载和可安装应用的条目存储在数据库304b中。数据库304b也可存储与每个应用相关联的元数据,诸如应用的预期功能的标题和短/长描述。NOC 304可存储关于在多个应用商店中存储的应用的数据,其使用户能够在下载和安装选定应用之前浏览在多个不同应用商店中存储的应用。
本发明的实施例使得能够对应用的应用间通信进行管理,并且特别可促进一个应用可代表另一个执行的服务的发现。
图7示出通过其安装在用户终端100上的应用利用NOC304注册的过程。虽然参考应用1 200a,服务消费应用描述这种方法,但是相同过程也可用于在服务提供应用的安装中。
在步骤S700,应用1 200a安装在用户终端100上并在其上启动。这可对应于如上所述的用户终端100的用户从应用商店310下载应用1 200a并启动该应用1 200a。在步骤S702,应用1 200a将消息发送到NOC 304,该消息包括确认用户终端的终端标识符和任选的其它凭证,诸如用户名和密码。在步骤S704,应用1 200a将进一步消息(其也包括用户终端标识符和/或其它凭证)发送到企业服务器314。一旦终端标识符和/或其它凭证已被传递到NOC 304和企业服务器314,后者中的任一个或两者可将可将替代凭证(“实例ID”)返回用户终端100,用于应用1 200a以备之后使用。这使得NOC 304和/或企业服务器314能够跟踪安装在用户终端100上的应用1 200a的实例。
在步骤S706,应用1将“请求证书”消息发送到企业服务器314,以便请求由其进行证书签名,以便验证用户终端与控制企业服务器314的组织相关联。证书可以是公共密钥证书,其用于建立与保持在用户终端100上的另一个应用的连接,如在下面更详细地描述。企业服务器314例如,通过确定用户终端标识符和/或其它凭证是否匹配存储在企业服务器的对应数据进行认证过程以认证用户终端100。如果用户终端100被认证,则企业服务器314在步骤S708返回签名的证书。
虽然上述关于凭证的提供和凭证的交换的步骤具有如本文所述的一定优势,但是在一些实施例中省略了这些步骤。在一些实施例中,例如其中用户终端100不与任何特定企业相关联,不存在与任何企业服务器的互动。
在步骤S710,应用1200a将“安装的应用”消息发送到NOC 304,其指示应用1 200a已经安装在用户终端100上。安装的应用消息可包括对应于应用1 200a的应用标识符和版本标识符(其确认已安装在用户终端100上的应用1 200a的版本),以及用户终端标识符(其确认它被安装在其上的用户终端);后者可包括例如以上描述的唯一装置标识符或实例ID。
在用户终端100、150上安装和注册多个应用时,NOC 304能够在数据库304b中建立条目组,其关联用户终端与保持在终端的应用。图5b示意地示出保持在数据库304b中的示例第二组条目520。第二组条目520包括用于利用NOC 304注册的用户终端的用户终端标识符522;确认组织(诸如与每个注册用户终端100相关联的企业或其它集团)的组织标识符404;确认安装在每个注册的用户终端100、150上的应用的应用标识符526;和确认安装在每个注册的用户终端上的应用的版本号的版本标识符528。
用户终端100、150可在服务发现过程中访问保持在数据库304b中的第二组条目520,现在参考图8描述这种情况。图8示出服务消费应用、应用1200a、服务提供应用应用2200b、库API、库1 202a和库2 202b的各自相关实例与NOC 304之间的交互。
服务提供应用应用2 200b可与服务消费应用应用1 200a保持在相同的用户终端100上。然而,在一些情况下,其可被保持在不同用户终端150。例如,给定的用户可具有多个用户终端,诸如移动电话和膝上型计算机,每个都保持不同应用。在一些实施例中,保持在用户的用户终端中的一个用户终端(例如,移动电话)上的应用将服务委托到在用户的用户终端中的另一个用户终端(例如膝上型计算机)上运行的应用。在一些实施例中,保持在与给定企业或其它集团相关联的用户终端上的应用被配置为将服务委托到与相同组相关联的其它用户终端。
在步骤S800,库1将“获取服务”消息发送到NOC 304,以请求可用于安装在用户终端100上的应用的所有服务的列表和被配置为提供可用服务的应用列表。在步骤S802,NOC304确定应用和支持的服务,并返回该应用和支持的服务的列表;在下面参考图9描述用于确定应用和支持的服务的示例过程。
已经在步骤S802接收到应用和服务的列表,库1 202a缓存存储器108中的表示所接受的应用和服务的列表的数据。库1 202a因此充当数据存储装置,存储指示在用户终端100上保持的应用并指示根据请求能够由对应应用执行的服务的条目。库1 202a可接收和存储其它信息,诸如关于服务提供应用的地址的地址信息;该地址信息对应于在图4的步骤410提供到NOC 304的地址信息。在服务提供应用保持在与向其提供列表的用户终端100不同的用户终端150上的情况下,由NOC 304提供的地址数据可包括用户终端标识符,其确认保持服务提供应用的用户终端150。以这种方式存储信息能够使库1 202a管理用于来自服务消费应用的可用服务的请求,如现在所解释的。
在步骤S804,应用1确定需要给定服务,并将对执行给定服务的应用的请求发送到库1 202a。例如,在应用1 200a是文字处理服务的情况下,其可响应于打印选项的用户选择确定需要打印服务。发送到库1 202a的请求包括所需服务的服务标识符。
如上所述,库1 202a已经在存储器中存储了指示在用户终端100上可用的服务和被配置为执行这些服务的应用的条目。基于接收的服务标识符,库1 202a确定是否具有可用于其被配置为使用服务的应用1 200a的任何应用。如果库1 202a确定具有可用于应用1200a的一个或多个这样的应用,则在步骤S806它将指示一个或多个这样的应用且包括对应应用标识符的列表返回应用1 200a。
在库1 202a经确认被配置为执行所请求的服务的多个应用的情况下,应用1 200a选择经确认的应用之一用于服务的委托。该选择可随机做出,或者例如可选择第一个列出的应用。在另一实例中,应用1 200a可向用户提供选择一个所列出的应用的选项。
在一些实施例中,如果库1 202a经确认被配置为执行所请求的服务的多个应用,可以使用优先级规则来选择应用。例如,如果服务提供应用中的一个与应用1200a被保持在相同用户终端上时,其可优先于保持在其它用户终端上的应用。这可能有助于减少处理所请求的服务的延迟,这是由于保持在相同用户终端上的应用之间的通信可能比相互远离的用户终端之间的通信不更不容易延迟。
此外,如果两个或所有经确认的服务提供应用被保持在与保持应用1200a的用户终端不同的用户终端上,可基于关于相关的用户终端的状态或其它信息进行选择。该信息可被存储在NOC 304的数据库304b中,并作为在步骤S802提供的列表的一部分提供到用户终端100。可替代地,信息可例如响应于来自用户终端的请求而被单独提供到用户终端100,基于已经经确认的保持在远程的用户终端的多个应用的确定来产生请求。
例如,可基于与所涉及的用户终端相关联的OS进行选择。这对于选择保持在与保持应用1的用户终端100a运行相同的操作系统的用户终端上的应用可能是有利的。
在另一实例中,基于关于用户终端的位置信息进行选择。例如,这对于选择保持在位于更靠近保持应用1 200a的用户终端100的位置处的用户终端上的应用可能是有利的;这可能有助于减少处理请求的延迟。
在又另一实例中,可基于保持服务提供应用的用户终端所具有的与网络进行连接的类型进行选择;例如,从成本的角度来看,这对于保持在用户终端上的应用经由无线局域网(WLAN)(例如使用WiFi)的连接优先于经由蜂窝网络(诸如LTE网络)的那些连接是有利的。
如果用户终端100上没有被配置为执行所请求的服务的应用,库1202a将指示没有这样的应用是可用的消息返回应用1 200a。然后可对用户终端100的用户呈现指示服务不能被执行的消息。消息还可包括可如何获得适当的应用的建议;这可包括例如到应用商店310的链接,诸如超链接。
在本实施例中,我们假设已经由应用1200a选择了应用2 200b来执行所需的服务。在步骤S807,应用1 200a将请求发送到库1 202b以发送服务请求到应用2 202b。这个请求包括应用2 202b的应用标识符,以及根据需要的服务标识符和服务版本标识符。包括在请求消息中的其它信息可包括:由应用执行的特定功能的指示、所需功能的性能所需要的参数,和包括关于对其执行服务的数据的文件附件(例如是要打印的文档)。
在步骤S806和S808,库1 202a在应用1 200a和应用2 200b之间建立连接,诸如传输控制协议(TCP)/传输层安全(TLS)连接。这涉及在步骤S808发送连接请求的库1 202a和在步骤S810发送连接响应的库2202b。建立连接之前的连接请求和连接响应的交换具有若干优点。例如,如果应用2 200b未运行,则且可能不能“收听”(即配置为接收)传入的TCP连接;因此可使用基于非TCP协议来发送连接请求,从而如果其尚未运行,可触发应用2 200b启动。
也可具有与连接请求和连接响应消息的交换相关联的安全的优点。用户终端100的操作系统可将信息添加到确认作为消息源的应用的每个消息。由操作系统添加的信息可被认为比由应用本身包括的信息更可信,且因此可作为认证的形式。
连接请求和连接响应可各自包括证书,如上面参考图7描述的步骤S706和S708中所获得的,从而使安全(例如加密)连接建立在应用1200a和应用2 200a之间。此外,用于由连接请求和连接响应消息建立的连接的TLS“握手”也可涉及证书的交换。因此应用1 200a和应用2 200b中的每个都可通过确定作为握手的一部分的交换的证书是否匹配在连接请求和连接请求消息中交换的那些证书,来验证另一个是参与连接请求和连接响应消息的交换的同一应用。
证书的交换也可使应用1 200a和应用2 200b通过验证两个证书是否由相同机构(例如相同企业)签名来确定它们是否被授权彼此交互。例如,给定企业可允许由给定企业激活的应用仅与也针对相同企业激活的应用交互。如果证书由不同企业签名,则一个企业或其它的策略可被实施来防止应用交互。
一旦已经建立了应用1 200a和应用2 200b之间的连接,在步骤S812库1 202a将“请求服务”消息发送到库2 202b。请求服务消息包括所请求的服务的服务标识符,以及在适当情况下包括版本标识符、确认请求的特定功能的功能标识符、与请求相关联的参数和在步骤S807接收的任何附件。
在步骤S814,库2 202b然后将请求传递到应用2 202b,使应用2 202b在步骤S816处理该请求。处理的结果在步骤S818被传递回库2 202b,在步骤S820从库2202b传递至库1202a且在步骤S822从库1202a传递至应用1200a。返回到应用1200a的结果可包括由处理(例如修改的附件)产生的数据和/或指示所请求的功能被成功执行(例如,结果可指示打印处理被成功完成)的消息。
在服务消费应用和服务提供应用被保持在不同用户终端的情况下,这两个应用之间的通信(包括连接请求和连接响应(步骤S808和S810))通常经由NOC 304发生。在上述实例中,在步骤S804从应用1接收应用的请求之前,库1 202a从NOC 304获得可用服务(步骤S800和S802)。步骤S800的获得服务请求可响应于例如应用1启动而被发送。在用户终端100上的存储器中的本地保持关于可用服务和应用的信息有助于最小化根据请求获取关于服务的信息的延迟。
在一些情况下,获取服务请求可被定期发送(例如每天一次),以便得到在用户终端100上保持的服务和应用的更新列表。在又另一些情况下,获取服务请求可响应于在步骤S804从应用1 200a接收针对可用于执行特定服务的应用的请求而被发送。在这种情况下,关于可用应用和服务的信息可不在用户终端100上进行本地保持,其中每个应用执行服务的请求对NOC 304导致不同获取服务请求。这可有助于确保最新更新的信息被提供到请求应用。可替代地,在关于可用的应用和服务的信息被本地保持在用户终端100上的情况下,在对存储在前者的数据进行相关变化时,可将更新从NOC 304推送到用户终端100。
图9是示出在产生在用户终端100上可用的服务和对应应用的列表中由NOC 304进行的示例过程的流程图,每个步骤S802如上所述。
在步骤S900,NOC 304从用户终端100接收包括用户终端100的标识符的消息;该消息对应于上述步骤S800的获取服务信息。
在步骤S902,NOC 304访问图5b中所示的第二组条目520,并基于所接收到的终端标识符,确定是否存在保持在用户终端100上的任何应用。在其中应用可委托保持在远程用户终端上的服务的实施例中,步骤S902还涉及确认这些远程终端和保持在其上的应用。例如,如果给定的企业允许保持在与给定企业相关联的用户终端上的应用之间共享,则这可能涉及确认具有与请求的用户终端相同的组织标识符524的用户终端。在另一实例中,保持在NOC 304上的第二组条目520可包括指示与每个终端相关联的用户的条目;然后步骤S902可涉及确认与请求终端具有的相同的用户相关联的所有用户终端。
在步骤S902没有经确认应用的情况下,过程前进到步骤S916,其中不包括应用或服务的空列表被返回用户终端100。然而,如果一个或多个应用被确认,则过程前进到步骤S904,其中NOC 304访问图5a中所示的第一组条目500,并且搜索该条目以确认由所经确认的应用提供的服务。如果所确认的应用不提供任何服务,则NOC 304返回步骤S902以确认是否具有可用的任何其它应用将服务提供到保持在请求的用户终端100上。
假设服务已被确认,NOC 304前进到步骤S906,其中其基于第一组条目500确定经确认的服务是否被分类为公共或私人。如果服务被分类为私人,则在步骤S908确定用户终端是否被授权使用服务。这可涉及比较与服务相关联的组织标识符504和与用户终端100相关联的组织标识符524。如果标识符匹配,这指示用户终端100和服务都与相同组织相关联,则NOC 304可确定用户终端100被授权使用服务。相反,如果组织标识符不匹配,则NOC 304可确定用户终端100未被授权使用服务。然而,在一些情况下,一个组织可允许与另一组织相关联的用户终端使用与前者相关联的服务;在这些情况下,NOC 304可存储指示某些组织被授权使用与其它组织相关联的服务的数据并相应授权用户终端100。
如果在步骤S906确定用户终端100被授权使用该服务,或者如果在步骤S906确定服务是公共的,则分别在步骤S904和S902经确认的服务和应用在步骤S910添加到被发送到用户终端100的服务和应用的列表。过程前进到步骤S912,如下所述。
另一方面,如果确定用户终端100没有被授权使用服务,则服务不被添加到列表并且过程直接前进到步骤S912。
在步骤S912,NOC 304确定在步骤S902经确认的应用是否是任何另外的服务的提供者。如果另外的这样的服务被确认,则为另外服务进行步骤S906、S908和S910(如果适用)。
如果在步骤S912没有经确认这样的另外服务,则NOC 304在步骤S914确定用户终端100是否与任何其它应用相关联。如果其它这样的应用被确认,则对其它应用重复步骤S904到S912。否则过程前进到步骤S916,其中根据前述步骤生成的列表被发送到用户终端100;该列表对应于上述在步骤S802发送的列表。
在上面描述了在步骤S916/S802中提供的列表可仅包括公共服务和与用户终端100具有相同的组织的用户终端相关联的服务。进一步的考虑是,一些组织可能不会为与组织相关联的用户终端100的所有用户授权使用与组织相关联的所有应用。因此,即使与服务相关联的组织标识符504和与用户终端100相关联的组织布置符524匹配,服务也不可用于用户终端100,条件是如果服务仅由个别用户未被授权使用的应用提供。
在这种情况下,可能具有额外的步骤(未示出),其中NOC 304对与用户终端100具有相同的组织的用户终端相关联的每个给定服务,确定是否由用户被授权访问的应用提供服务。为此,第二组条目520可包括指示给定的用户终端100的用户被和/或未被授权使用的应用的条目(未示出)。由于如上面参考图5a所描述的,第一组条目500可指示服务和提供服务的应用之间的对应关系,所以这使得NOC 304确认哪些服务(如果有的话)由用户终端100的用户被授权使用。在这种情况下,在步骤S916/S802返回终端的列表可仅包括由用户被授权使用的应用提供的服务。
以上描述的系统和方法提供一种架构,其中保持在用户终端上的应用间的功能是通过评价服务的用户终端上保持的应用来提高,该服务可从保持在相同或不同用户终端上的其它应用获得。
在一些实施例中,服务提供应用可附加地或替代地保持在远离保持服务消费应用的用户终端100的服务器上。例如,服务提供应用可保持在企业服务器314上,由防火墙与用户终端100分离。
这样的应用的开发者可遵循类似上面参考图4描述的过程,向NOC304注册(如果尚未注册)服务及其版本(如在步骤S402和S403所描述的)。开发者然后实施应用,并向NOC304注册应用及其版本,如上面关于步骤S404至S408所描述的。
开发者也提供地址信息,如关于步骤S410所描述的;在服务提供应用被保持在服务器上的情况下,地址信息可包括应用的URL。一旦地址信息已在NOC 304注册,则开发者将绑定版本消息发送到NOC 304,如关于步骤S412所描述的。
代替将应用发布到应用商店310,如关于步骤S414所描述的,开发者而是将应用存储在服务器(诸如企业服务器)中。
一旦如上所述在NOC 304上注册,服务提供应用可根据上述过程被保持在用户装置上的应用“发现”。即,在步骤S802返回用户终端100的服务和应用的列表可包括保持在服务器上的一个或多个应用,以及由这些应用提供的服务。如果保持在服务器上的应用被分类为“公共”,则它被包含在列表中,而不论请求的用户终端100与其相关联的组或组织如何。如果保持在服务器上的应用被分类为“私人”,则仅在请求终端与具有应用相同的组或组织的应用相关联时它被包括在列表中,如上所述。
从保持在服务器而不是用户装置上的应用提供服务可使与服务器相关联的开发者和/或组织在不要求应用被下载并安装在用户装置上的情况下提供相关服务。这可能是特别有利的,其中服务提供应用不适合于安装在用户终端(例如,如果应用需要大量的存储空间和/或处理资源),或者如果应用是更适合集中管理(例如在联系人目录查找应用、云存储应用或企业论坛/博客应用的情况下)。
以上一些实施例应被理解为本发明的说明性实例。此外,可设想本发明的一些其它实施例。例如,虽然上面描述了数据库304b由包括指示存储在用户终端100上的应用和由应用提供的服务的第一组条目500的NOC 304维护,但是在一些实施例中,可在用户终端100本身上本地存储该数据。应理解,关于任何一个实施例所描述的任何特征可单独使用,或与描述的其它特征组合,且还可结合一些实施例中的任何其它的一个或多个特征或这些实施例中的任何其它的任何组合使用。此外,在不脱离本发明的范围的情况下,可采用上面没有描述的等同物和修改,而本发明的范围在所附权利要求中限定。