CN103297497A - 计算机实现的方法、计算机系统以及计算机可读介质 - Google Patents
计算机实现的方法、计算机系统以及计算机可读介质 Download PDFInfo
- Publication number
- CN103297497A CN103297497A CN2013100629377A CN201310062937A CN103297497A CN 103297497 A CN103297497 A CN 103297497A CN 2013100629377 A CN2013100629377 A CN 2013100629377A CN 201310062937 A CN201310062937 A CN 201310062937A CN 103297497 A CN103297497 A CN 103297497A
- Authority
- CN
- China
- Prior art keywords
- service interface
- application
- server
- request
- coupling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种用于处理来自驻留在客户端设备上的应用的对于连接到服务器的请求的计算机实现的方法,该方法包括:接收来自驻留在客户端设备上的应用的对于连接到服务器的请求;确定匹配服务接口;确定匹配服务接口的访问指示符;以及响应于所述对于连接到服务器的请求将该匹配服务接口的访问指示符发送给驻留在客户端设备上的应用。
Description
技术领域
本申请涉及计算机实现的方法、计算机系统以及计算机可读介质。
背景技术
在典型的客户端-服务器计算中,广泛分布式应用可以在至少两个设备之间划分任务、工作量和/或应用过程。例如,分布式应用可以在被称为客户端的服务请求器和被称为服务器的服务提供者之间划分。客户端可以通过网络请求服务器提供的服务。例如,客户端可以通过诸如因特网的网络请求服务器提供的计算服务或电子邮件服务。
在分布式应用在客户端-服务器计算环境中升级期间,客户端设备上的应用代码(即,客户端软件)和/或服务器设备上的应用代码(即,服务器软件)可能需要进行配置。然而,在客户端设备上配置升级的客户端软件可能导致许多问题。例如,客户端设备的用户可能忽略了来自服务器的要求配置客户端软件的通知并且继续试图使用尚未升级的客户端软件。此外,客户端设备的用户可能在尚未配置升级的客户端软件的情况下试图使用升级的客户端软件。而且,即使客户端设备的用户试图配置升级的客户端软件,在配置期间也可能引入错误,从而导致升级的客户端软件指向不存在的服务器软件。
附图说明
在示例性附图和下面的示例性描述中阐述了一个或多个实施方案的细节。从所述描述和附图以及从权利要求中,其他特征将变得明显。
图1示出根据实施例的示例性系统架构图;
图2a-2d根据实施例示出示例性示意图;
图3根据实施例示出示例性服务接口管理系统;
图4根据实施例示出示例性方法;
图5根据实施例示出另一个示例性方法;
图6根据实施例示出示例性注册服务;以及
图7根据实施例示出用于实现如图1到5中示出的计算机系统和方法的示例性计算机系统和/或计算机网络系统。
具体实施方式
在下文中,将参考附图给出对实施例的详细描述。应当理解可以对实施例做出各种修改。具体来说,一个或更多个实施例的一个或更多个元素可以相互隔离,并且可以组合和/或用在其它实施例中以形成新的实施例。
图1根据实施例示出服务器101和客户端设备102之间经由网络103的通信的示例性系统架构图100。服务器101可以是诸如计算机的计算设备。客户端设备102可以是智能电话、平板电脑、个人数字助理(PDA)、台式电脑、笔记本电脑等等。
根据实施例,服务器101可以托管(host)或提供一个或更多个服务,比如,104-106。服务可以是执行特定功能的计算机进程、软件、或应用。服务可以具有一个或更多个版本。对于服务的每个版本,服务接口,也称为契约(contract),可以提供在服务器101上,使得应用能够访问该服务版本。例如,在图1中,为服务104的可用版本提供服务接口104a-n。也可以为服务105和106提供服务接口。使应用能够访问服务的版本的服务接口可以经由访问指示符来访问。访问指示符的示例可以是统一资源定位符(URL)或者指向访问指示符的其它指针。
服务器101可以是多个版本中的一个。如果为单个服务器,比如服务器101,提供多个版本,那么服务器的较新版本可以比服务器的较旧版本提供更多的服务接口。此外,如果服务器的特定版本的多个实例被实现,例如,服务器的特定版本的每个实例被实现在不同的业务中,那么与驻留在服务器的实例上的服务的特定版本相对应的每个服务接口可以经由不同的访问指示符来寻址。例如,服务器X的实例在公司A实现而服务器X的另一个实例在公司B实现。为了访问驻留在公司A处的服务器X上的服务接口,客户端应用可以使用访问指示符,比如,URL(例如,http(s)://companya.com/svc)。为了访问驻留在公司B处的服务器X上的相同版本的相同服务的服务接口,客户端应用可以使用不同的访问指示符,比如,不同的URL(例如,http(s)://companyb.com/svc)。
客户端设备102可以包括客户端应用107。客户端应用107可以包括代码并且可以是被预先安装在客户端设备102上或者可以被下载到客户端设备102上。客户端应用107可以使用驻留在服务器101上的一个或更多个服务接口。例如,客户端应用107可以仅使用服务接口104a并且因此可以被视为静态客户端应用。另一个方法包括使客户端应用107能够使用对服务接口104a-n的选择,比如,服务接口104a、服务接口104b和服务接口104c,并且因此可以被视为多静态(multi-static)客户端应用。在静态和多静态客户端应用中,服务接口可以通过客户端应用107的代码中编码的访问指示符来寻址。例如,客户端应用可以使用访问指示符,比如,URL(例如http(s)://companya.com/svc)来寻址服务接口的特定版本。
多静态客户端应用的伪代码的示例:
#Constants:(常量)
#describing the contracts(implementations)the applications was built against
Contracts=[C1,C2,C3,C4](描述契约(实施方案)应用是基于契约=[C1,C2,C3,C4]来构建的)
#Application Configuration:(应用配置)
#Contract-management-service endpoint;identical for ALL application
ConfiguredContractManagementURL=
http://smallexample.com:50009/sap/opu/sdata/iwfnd/CONTRACTMANAGEMENT/
#Locally persisted values:initially null
PersistedContractURL=
http://smallexample.com:50009/sap/opu/sdata/iwcnt/WFODCPROCESSING
PersistedContract=1
PersistedContractManagementURL=
http://smallexample.com:50009/sap/opu/sdata/iwfnd/CONTRACTMANAGEMENT/
#Coding
main(){checkContractURL()
ContractURL=PersistedContractURL
Contract=PersistedContract
#really launches application:
Loop until(application is closed){
...some user interaction...based on<Contract>using<ContractURL>
if(application is idle)
{#call once per"foreground state"or per"application launch"
findBestMatchingContract()}
}
#end application.
}
checkContractURL(){
if(ConfiguredContractManagementURL is null)
{#Configuration missing-->exit application(or work offline)
exit()}
if(ConfiguredContractManagementURL<>PersistedContractManagementURL)
{#ConfiguredContractManagementURL has changed
PersistedContractManagementURL=null}
if((PersistedContractURL is null)or
(PersistedContract is null)or
(PersistedContractManagementURL is null))
{findBestMatchingContract()
if(PersistedContractURL is null)
{#We are in serious trouble-->exit application(or work offline)
exit()}
}
}
findBestMatchingContract(){
callURL=ConfiguredContractManagementURL&"?Contracts="&Contracts
try{
ContractEntity=call_http_GET(callURL)#ContractEntry is the response payload
PersistedContractURL=ContractEntity.ContractURL
PersistedContract=ContractEntity.Contract
PersistedContractManagementURL=ConfiguredContractManagementURL
}catch{#verification failed-->do nothing}
}
伪代码结束
有利的是,在应用运行时期间,客户端应用可以尽快地切换到较新的服务接口,而避免了破坏性的切换(disruptive switch)。在应用运行时期间,客户端应用可以检测服务接口的较新版本,然而该较新接口将在该应用下一次启动时使用。
另一个方法是使客户端应用107能够使用服务器101提供的所有服务接口,比如,服务接口104a-n,并且因此被视为动态客户端应用。客户端应用107可以使用的所述一个或更多个特定服务接口被视为可接受的服务接口。例如,动态的客户端应用可以是浏览器类型/一般客户端类型的应用。
动态应用可以包括服务接口管理系统的访问标识符并且可以在对于服务接口管理系统的请求中将输入参数传递到服务接口管理系统。代替作为可接受的服务接口的输入参数,输入参数可以是表达应用的目的(比如,雇员列表或者机会列表)的应用标识符。服务接口管理系统可以查找属于该应用标识符的服务接口并且从这些服务接口中确定最佳匹配服务接口。
动态的客户端应用的伪代码的示例:
#Constants:(常量)
#describing the purpose of the application(e.g.Employee list,opportunity list)via an application ID
ApplicationID=1234
(通过应用ID描述应用的目的(例如,雇员列表、机会列表))
#Application Configuration:(应用配置)
#Contract-management-service endpoint;identical for ALL application
ConfiguredContractManagementURL=
http://smallexample.com:50009/sap/opu/sdata/iwfnd/CONTRACTMANAGEMENT/
#Locally persisted values:initially null
PersistedContractURL=
http://smallexample.com:50009/sap/opu/sdata/iwcnt/Employeelookup;v=3
PersistedContractManagementURL=
http://smallexample.com:50009/sap/opu/sdata/iwfnd/CONTRACTMANAGEMENT/#Coding
main(){checkContractURL()
ContractURL=PersistedContractURL
#really launches application:
Loop until(application is closed){
...some user interaction...using<ContractURL>
if(application is idle)
{#call once per"foreground state"or per"application launch"
findBestMatchingContract()}
}
#end application.
}
checkContractURL(){
if(ConfiguredContractManagementURL is null)
{#Configuration missing-->exit application(or work offline)
exit()}
if(ConfiguredContractManagementURL<>PersistedContractManagementURL)
{#ConfiguredContractManagementURL has changed
PersistedContractManagementURL=null}
if((PersistedContractURL is null)or
(PersistedContractManagementURL is null))
{findBestMatchingContract()
if(PersistedContractURL is null)
{#We are in serious trouble-->exit application(or work offline)
exit()}
}
}
findBestMatchingContract(){
callURL=ConfiguredContractManagementURL&"?ApplicationID="&ApplicationID
try{
ContractEntity=call_http_GET(callURL)#ContractEntry is the response payload
PersistedContractURL=ContractEntity.ContractURL
PersistedContractManagementURL=ConfiguredContractManagementURL
}catch{#verification failed-->do nothing}
}
伪代码结束
此外,动态应用可以包括最近(latest)版本链接,其使得在服务器上服务接口的较新版本一旦可用,应用就能够更新到该较新版本。寻址特定服务接口的请求的响应有效载荷(response payload)必须包含该服务接口的最近(最新)版本的访问标识符,以允许一般客户端切换到该最近(最新)版本。
动态的客户端应用的伪代码的另一个示例:
#Application Configuration:(应用配置)
#Contract-service endpoint;specific for an application
ConfiguredContractURL=
http://smallexample.com:50009/sap/opu/sdata/iwfnd/EmployeeDirectory
#Locally persisted value:initially null
PersistedContractURL=
http://smallexample.com:50009/sap/opu/sdata/iwfnd/EmployeeDirectory;v=2
#Coding
main(){checkContractURL()
ContractURL=PersistedContractURL
#really launches application:
Loop until(application is closed){
...some user interaction...using<ContractURL>
if(ReponsePayload.latest-version.link<>PersistedContractURL){
PersistedContractURL=ReponsePayload.latest-version.link}
}
#end application.
}
checkContractURL(){
if(ConfiguredContractURL is null)
{#Configuration missing-->exit application
exit()}
if(PersistedContractURL is null)
{PersistedContractURL=ConfiguredContractUrl}
}
伪代码结束
如果为单个应用提供应用的多个版本,那么可以使该应用的较新版本能够比该应用的较旧版本使用更多的服务接口。换句话说,与应用的较旧版本相比,应用的较新版本可以具有更多的可接受的服务接口。根据实施例,应用的下一个版本可以比应用的前一个版本(direct predecessor version)多使用一个服务接口。此外,应用的特定版本可以由许多用户安装和使用,即,可以存在应用的特定版本的许多实例。
在服务器101或客户端设备102上的客户端应用107的升级期间,执行从该服务器和/或该客户端应用的较旧版本到该服务器和/或该客户端应用的较新版本的切换。然而,在执行升级之后,客户端应用107可能并未包含访问驻留在服务器101上的服务接口所需的正确的访问指示符。例如,公司A下载的升级的客户端应用可能需要进行配置以访问公司A的服务器上的新服务接口。
示例
图2a示出提供利用姓名(first name,last name)和电话号码列出所有雇员的服务接口C1的服务器S1。雇员目录(Employee-Directory)应用A1利用姓名和电话号码显示所有雇员。应用A1可以使用服务接口C1。应用A1可以是应用商店(application store)中提供的应用并且可以通过另外的实体下载。
两个公司,公司A,example.org和公司B,smallexample.com,实现服务器S1和应用A1的不同实例,如上所述并且如图2b中所示。为了确保公司A和公司B各自显示正确的雇员目录,必须适当地配置访问指示符。例如,公司A和公司B两者都可以从应用商店下载应用A1。公司A使用访问指示符,例如URL,https://example.org/u,来寻址和访问公司A的服务接口C1。公司B使用不同的访问指示符,例如URL,https://smallexample.com/v,来寻址和访问公司B的服务接口C1。
因此,使用公司A的应用A1的雇员必须输入访问指示符,例如,URL,https://example.org/u,并且使用公司B的应用A1的雇员必须输入访问指示符,例如,URL,https://smallexample.com/v。
在图2c中,当雇员目录应用A1被扩展即升级时,该应用的下一个版本,例如,应用A2,可能具有附加的功能,例如,除了其它雇员数据之外还显示雇员的照片。应用A2可以接受服务接口C1和服务接口C2两者,而应用A1仍然只接受服务接口C1。此外,公司A和公司B都可以仍然使用服务器S1。
一旦经由应用商店发布了应用A2,在给公司A和公司B两者中的应用A1用户的更新通告(announcement)中应用A2被指示为应用A1的新版本。例如,说明存在应用A1的新版本的电子邮件通告可以被发送给公司A和公司B的使用应用A1的雇员。
相应地,某些雇员可能将应用A1更新到应用A2,其余雇员可能不将应用A1更新到应用A2,而是仍然使用应用A1。应用A1仍将工作,因为应用A1接受服务接口C1并且服务器S1提供服务接口C1。应用A2将工作,因为应用A2除了服务接口C2之外仍然可以接受服务接口C1并且服务器S1提供服务接口C1,如图2c中所示。
图2d示出其中公司A切换到提供服务接口C1和服务接口C2的服务器版本S2的情景。当服务器S2被升级时,下一个服务器版本S2可能除了服务接口C1之外还提供利用姓名、电话号码和照片列出所有雇员的服务接口C2。服务接口C1仍然被提供,因为它是稳定的服务接口并且不能改变或删除。应用A1将仍然接受服务器S2提供的服务接口C1。应用A2将接受服务器S2现在提供的服务接口C2以及服务器S2仍然提供的服务接口C1。
然而,应用A1和应用A2中的访问指示符必须指向适当的服务接口,以便访问正确的版本以及服务器提供的服务。因此,为了在客户端设备上配置升级的客户端应用,根据实施例,提供服务接口管理系统。
图3示出示例性服务接口管理系统300。根据实施例,服务接口管理系统300被提供用来减少升级应用或服务器时的配置工作。服务接口管理系统300可以包括请求接收模块310、匹配确定模块320和访问指示符模块330。匹配确定模块320还可以包括可接受的服务接口模块340和最佳匹配服务接口模块350。
服务接口管理系统300可以被实现为硬件、软件平台或者云。例如,服务接口管理系统300可以包括云计算的示例。云计算提供计算、软件、数据访问、存储资源等等,而不要求云用户,即,客户端设备,知道计算基础设施的位置及其他细节。因此,云可以包括作为服务的计算的递送,其中共享的资源、软件和信息作为服务通过网络提供给计算机及其他设备。对基于云的应用的访问可以通过客户端设备来进行,所述客户端设备比如网络浏览器或网络入口、或轻量级的台式电脑、或者移动应用。
在客户端应用侧,客户端应用可以包括服务接口管理系统300的访问指示符,而不是将服务接口的访问指示符编码到客户端应用中。例如,公司将公司A的服务接口管理系统的访问指示符编码到客户端应用中,而公司B将公司B的服务接口管理系统的不同的访问指示符编码到客户端应用中。因此,当客户端应用做出请求时,利用访问指示符,比如服务接口管理系统300的URL,将该请求自动发送给服务接口管理系统300。响应于来自客户端设备的请求,服务接口管理系统300可以向客户端设备提供访问指示符。服务接口管理系统300可以提供业务中的每个应用类型的访问指示符以及业务中的一个应用类型的所有版本的访问指示符。
请求接收模块310可以从访问指示符所指示的驻留在客户端设备上的客户端应用接收请求。该请求可以包括来自客户端应用的输入参数,该客户端应用可以被编码有该输入参数。该输入参数可以表示客户端应用可接受的一个或更多个服务接口。
匹配确定模块320可以确定匹配服务接口。如上面所讨论的,匹配确定模块320还可以包括可接受的服务接口模块340和最佳匹配服务接口模块350。为了确定匹配服务接口,可接受的服务接口模块340可以从请求接收模块310从客户端应用接收的请求中确定输入参数的值。该输入参数可以表示客户端应用可接受的一个或更多个服务接口。例如,参考图1,客户端应用107仅可以经由服务接口104a和104b访问服务104。因此,服务接口104a和104b是可接受的服务接口。
可接受的服务接口模块340也可以从数据存储器中检索服务器提供的服务接口。数据存储器可以被耦合到服务器或者可以被耦合到服务接口管理系统300。例如,参考图1,服务器101提供的服务接口可以是服务接口104a-n。
可接受的服务接口模块340然后可以确定一个或更多个可接受的服务接口中的任何一个是否匹配服务器提供的服务接口中的任何一个。如果可接受的服务接口模块340确定了多于一个的匹配服务接口,则最佳匹配服务接口模块350可以从匹配服务接口当中确定最佳匹配服务接口。最佳匹配服务接口可以是基于应用版本的预定次序的最新版本的匹配服务接口。可替换地,最佳匹配服务接口可以是最相关的匹配服务接口。此外,如果确定没有匹配,则服务接口管理系统300向客户端设备上的客户端应用发送错误消息,其指示该应用将不起作用。
一旦确定了匹配服务接口,访问指示符模块330就可以确定该匹配服务接口的访问指示符。匹配服务接口的访问指示符可以是该匹配服务接口的统一资源定位符(URL)。例如,服务接口的URL可以从存储服务接口和它们的相应访问指示符(例如URL)的查找表中确定。访问指示符模块330然后可以将匹配服务接口的访问指示符(例如URL)发送给客户端设备上驻留的客户端应用。客户端设备可以使用该访问指示符经由适当的服务接口连接到服务器。
概括地讲,可以提供一种用于处理来自驻留在客户端设备上的应用的对于连接到服务器的请求的服务接口管理系统,包括:
请求接收模块,其被配置为接收来自驻留在客户端设备上的应用的对于连接到服务器的请求;
匹配确定模块,其被配置为确定匹配服务接口;和
访问指示符模块,其被配置为确定该匹配服务接口的访问指示符并且响应于所述对于连接到服务器的请求将该匹配服务接口的访问指示符发送给驻留在该客户端设备上的应用。匹配确定模块还可以包括:
可接受的服务接口模块,其被配置为:
从所述请求中确定输入参数,所述输入参数表示该应用可接受
的一个或更多个服务接口;并且
确定所述一个或更多个可接受的服务接口中的任何一个是否匹
配服务器提供的服务接口;以及
最佳匹配服务接口模块,其被配置为:
如果确定了多于一个的匹配服务接口,则确定最佳匹配服务接
口。
有利的是,应用所需要的全部是知道一个访问指示符,即,服务接口管理系统300的URL。由于访问该访问指示符,所以不需要其它配置信息,这是因为服务接口管理系统300向客户端应用提供配置,即,URL。该服务接口的访问指示符是该客户端应用应当连接到以便该客户端应用可以被连接到该服务器的服务接口。即使该客户端应用本身被升级,服务接口管理系统300的URL也可以被硬编码(hardcode)到客户端应用代码中。因此,升级的客户端应用将仍然指向服务接口管理系统300。此外,该客户端应用将自动地切换到服务器提供的服务接口中的服务接口的最佳版本。
上述计算机系统可以操作以执行如以下结合图4和图5描述的方法。
图4根据实施例示出示例性方法400。方法400根据实施例示出在对来自驻留在客户端设备上的应用的对于连接到服务器的请求做出响应时涉及的步骤。
在步骤410,服务接口管理系统接收来自驻留在客户端设备上的应用的对于连接到服务器的请求。该请求可以是直接来自驻留在客户端设备上的应用的或者可以是通过另一个服务(比如,注册服务)传送的。换句话说,在服务接口管理系统接收来自驻留在客户端设备上的应用的对于连接到服务器的请求还可以包括:从注册服务中确定服务接口管理系统的访问标识符。
在步骤420,服务接口管理系统确定匹配服务接口。在下面参考图5更详细地描述这个步骤。
在步骤430,服务接口管理系统确定匹配服务接口的访问指示符。匹配服务接口的访问指示符可以是该匹配服务接口的统一资源定位符(URL)。
在步骤440,服务接口管理系统响应于该对于连接到服务器的请求将匹配服务接口的访问指示符发送给驻留在客户端设备上的客户端应用。
图5根据实施例示出描述图4的方法400的步骤420的示例性方法500。方法500根据实施例示出在确定匹配服务接口时涉及的步骤。
在步骤510,服务接口管理系统从所述请求中确定输入参数。该输入参数表示该应用可接受的一个或更多个服务接口。
在步骤520,服务接口管理系统确定一个或更多个可接受的服务接口中的任何一个是否匹配服务器提供的任何服务接口,即,确定一个或更多个匹配服务接口。如果在步骤520确定了多于一个的匹配服务接口,则该方法前进到步骤530。如果确定了仅仅一个匹配服务接口,则该方法500结束并且返回到方法400的步骤430。
在步骤530,服务接口管理系统从多于一个的匹配服务接口中确定最佳匹配服务接口。最佳匹配服务接口可以是基于应用版本的预定次序的最新版本的匹配服务接口。可替换地,最佳匹配服务接口可以是最相关的匹配服务接口。
在确定最佳匹配服务接口之后,该方法500结束并且返回到方法400的步骤430,其中最佳匹配服务接口是该匹配服务接口。
鉴于上述方法,可以提供计算机可读介质。该计算机可读介质可操作用于处理来自客户端设备的对于连接到服务器的请求。该计算机可读介质可以包括计算机可执行指令,当运行这些指令,这些指令执行以下步骤:
接收来自驻留在客户端设备上的应用的对于连接到服务器的请求;
确定匹配服务接口;
确定匹配服务接口的访问指示符;以及
响应于所述对于连接到服务器的请求将该匹配服务接口的访问指示符发送给驻留在客户端设备上的应用。
此外,可以提供客户端侧应用。客户端侧应用可以驻留在客户端设备上用于连接到服务器,所述客户端侧应用被配置为:
向服务接口管理系统发送所述对于连接到服务器的请求;
从服务接口管理系统接收响应于所述对于连接到服务器的请求的匹配服务接口的访问指示符;以及
基于接收到的访问指示符连接到服务器。
而且,可以提供服务器。该服务器可以处理来自驻留在客户端设备上的应用的对于连接到服务接口的请求,其包括:
多个服务接口,其使得能够访问驻留在计算机上的服务,其中每个服务接口可由驻留在客户端设备上的应用使用访问标识符来寻址。
基于云的注册服务
图6示出与以上在图3中描述的服务接口管理系统联合使用的注册服务600。根据实施例,注册服务600可以包括硬件、软件或者基于云的服务。注册服务600使得公司能够注册它们的公司特定的服务接口管理系统的它们的公司特定的访问指示符。例如,公司A可以向注册服务600注册它们的服务接口管理系统300的访问指示符。类似地,公司B可以向同一个注册服务600注册它们的服务接口管理系统300的访问指示符。一旦进行了注册,公司A和公司B两者的客户端应用107就都可以被硬编码为具有访问指示符,即,注册服务600的URL。
注册服务600可以向请求的公司提供适当的访问指示符。例如,如果公司A向注册服务600请求访问指示符,那么公司A将接收到他们自己的服务接口管理系统300的访问指示符。如果公司B向注册服务600请求访问指示符,那么公司B将接收到他们自己的服务接口管理系统300的访问指示符。
因此,在客户端侧,公司可以简单地在客户端应用107中维护注册服务600的访问指示符,而不是在客户端应用107中维护他们自己的服务接口管理系统300的访问指示符。有利的是,注册服务600的访问指示符对于所有客户端应用107都是一样的,并且可以被硬编码到客户端应用107中。
此外,响应于向注册服务600的注册,注册服务600可以向公司A提供易于打字和记忆的启动代码(startup code)。响应于公司B向注册服务600的注册,注册服务600也可以向公司B提供与提供给公司A的启动代码不同的启动代码。当公司A和公司B的雇员可以下载他们的客户端应用107时,他们简单地将用于他们各自公司的启动代码输入到客户端应用107,其中配置信息通常被输入到客户端应用107。
当客户端应用107被公司A的雇员启动时,对于读取公司A的服务接口管理系统300的访问指示符(例如公司A的服务接口管理系统300的URL)的请求被发送给注册服务600。类似地,当客户端应用107被公司B的雇员启动时,对于读取公司B的服务接口管理系统300的访问指示符(例如公司B的服务接口管理系统300的URL)的请求被发送给注册服务600。因此,注册服务600向请求的公司返回适当的访问指示符,以换取启动代码。可替换地,如果客户端应用被绑定到具有唯一标识符的特定设备,例如,具有IMEI号码的移动设备,那么公司可以向注册服务600注册具有唯一标识符的多个设备。例如,应用编程接口(API)可以读取设备的IMEI号码,并且将该IMEI号码提供给注册服务600。注册服务600可以注册属于具有特定访问标识符(比如,公司的服务接口管理系统300的URL)的组的每个设备的IMEI号码。因此,属于组或者公司的所有设备都可以被注册到注册服务600。当客户端应用在已注册的设备上启动时,IMEI号码被自动地提供给注册服务600,并且该注册服务可以用与该IMEI号码相关联的访问标识符做出响应。有利的是,客户端应用可以因此使用诸如IMEI号码的唯一标识符而不是启动代码来向注册服务600请求服务接口管理系统300的访问标识符。
图7示出用于实现该方法的示例性系统,其包括采用传统计算环境920的通用计算设备(例如,服务器)。传统计算环境包括处理单元922、系统存储器924和系统总线926。该系统总线将包括系统存储器924的各种系统组件耦合到处理单元922。处理单元922可以通过访问系统存储器924来执行算术运算、逻辑运算和/或控制操作。系统存储器924可以存储信息和/或指令以便与处理单元922组合使用。系统存储器924可以包括易失性和非易失性存储器,比如,随机存取存储器(RAM)928和只读存储器(ROM)930。包含帮助在服务器920内的元件之间传递信息(比如,在启动期间)的基本例程的基本输入/输出系统(BIOS)可以存储在ROM930中。系统总线926可以是总线结构的若干类型中的任何一个,包括:存储器总线或存储器控制器、外围总线以及使用各种各样的总线架构的任何一种的局域总线。
服务器920还可以包括:硬盘驱动器932,用于对硬盘(未示出)进行读写;以及外部盘驱动器934,用于对可移动盘936进行读写。可移动盘可以是用于磁盘驱动器的磁盘或者用于光盘驱动器的光盘,比如,CD ROM。硬盘驱动器932和外部盘驱动器934分别通过硬盘驱动器接口938和外部盘驱动接口940连接到系统总线926。驱动器和它们关联的计算机可读介质为服务器920提供计算机可读指令、数据结构,程序模块及其他数据的非易失性存储。所述数据结构可以包括如上所述的方法的实施方案的相关数据。所述相关数据可以被组织在数据库中,所述数据库例如关系数据库管理系统或面向对象的数据库管理系统。
尽管在这里描述的示例性环境采用硬盘(未示出)和外部盘936,但是本领域技术人员应当理解,在示例性操作环境中也可以使用可以存储计算机可访问的数据的其它类型的计算机可读介质,比如,磁带、闪存卡、数字视频盘、随机访问存储器、只读存储器等等。
大量程序模块可以存储在硬盘、外部盘936、ROM930或RAM928上,并且包括操作系统(未示出)、一个或更多个应用程序944、其它程序模块(未示出)、以及程序946。该应用程序可以包括在图1到3中绘出的功能的至少一部分。
如下面讨论的,用户可以通过输入设备,比如键盘948和鼠标950,将命令和信息输入到服务器920中。其它输入设备(未示出)可以包括麦克风(或其它感测器)、操纵杆(joystick)、游戏板(game pad)、扫描仪等等。这些及其他输入设备可以通过耦合到系统总线926的串行端口接口952连接到处理单元922,或者可以通过其它接口,比如,并行端口接口954、游戏端口(game port)或通用串行总线(USB)来连接。此外,信息可以使用打印机956来打印。打印机956及其它并行输入-输出设备可以通过并行端口接口954连接到处理单元922。监视器958或其它类型的显示设备也经由接口,比如视频输入/输出960,连接到系统总线926。除了监视器之外,计算环境920还可以包括其它外围输出设备(未示出),比如扬声器或其它音频输出(audibleoutput)。
计算环境920可以与其它电子设备,比如计算机、电话(有线或无线)、个人数字助理、电视等等,通信。为了通信,计算环境920可以使用到一个或更多个电子设备的连接在网络环境中操作。图2描绘与远程计算机962,即,移动设备102,联网的计算环境。远程计算机962可以是另一个计算环境,比如移动设备、比如智能电话或平板电脑,并且可以包括以上相对于计算环境920描述的许多元件。图8中描绘的逻辑连接包括局域网(LAN)964和广域网(WAN)966。这样的网络环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的,并且具体来说可以被加密。
当被用在LAN网络环境中时,计算环境920可以通过网络I/O968连接到LAN964。当用在WAN网络环境中时,计算环境920可以包括调制解调器970或用于通过WAN966建立通信的其它装置。调制解调器970可以在计算环境920的内部或外部,并且经由串行端口接口952连接到系统总线926。在联网环境中,相对于计算环境920描绘的程序模块或其部分可以存储在驻留在远程计算机962上或者远程计算机962可访问的远程存储器存储设备中。此外,与该方法相关的其它数据可以驻留在远程计算机962上或者可经由远程计算机962访问。要理解,示出的网络连接是示例性的,并且可以使用用于在电子设备之间建立通信链路的其它装置。
上述计算系统仅是可以在上面描述的方法中使用的这类计算系统的一个示例。
Claims (15)
1.一种用于处理来自驻留在客户端设备上的应用的对于连接到服务器的请求的计算机实现的方法,包括:
在服务接口管理系统接收来自驻留在客户端设备上的应用的对于连接到服务器的请求;
在该服务接口管理系统确定匹配服务接口;
在该服务接口管理系统确定匹配服务接口的访问指示符;以及
响应于所述对于连接到服务器的请求将该匹配服务接口的访问指示符从该服务接口管理系统发送给驻留在客户端设备上的应用。
2.如权利要求1所述的方法,其中确定匹配服务接口包括:
从所述请求中确定输入参数,所述输入参数表示该应用可接受的一个或更多个服务接口;以及
确定所述一个或更多个可接受的服务接口中的任何一个是否匹配服务器提供的服务接口。
3.如权利要求2所述的方法,其中,如果确定了多于一个的匹配服务接口,则确定最佳匹配服务接口,以及
其中该最佳匹配服务接口优选为最新版本的匹配服务接口。
4.如权利要求1到3中的任何一项所述的方法,其中匹配服务接口的访问指示符是该服务接口的统一资源定位符(URL)。
5.如权利要求1到4中的任何一项所述的方法,其中在服务接口管理系统接收来自驻留在客户端设备上的应用的对于连接到服务器的请求还包括:从注册服务中确定该服务接口管理系统的访问标识符。
6.一种用于处理来自驻留在客户端设备上的应用的对于连接到服务器的请求的服务接口管理系统,包括:
请求接收模块,其被配置为接收来自驻留在客户端设备上的应用的对于连接到服务器的请求;
匹配确定模块,其被配置为确定匹配服务接口;和
访问指示符模块,其被配置为确定该匹配服务接口的访问指示符并且响应于所述对于连接到服务器的请求将该匹配服务接口的访问指示符发送给驻留在该客户端设备上的应用。
7.如权利要求6所述的服务接口管理系统,其中该匹配确定模块还包括:
可接受的服务接口模块,其被配置为:
从所述请求中确定输入参数,所述输入参数表示该应用可接受的一个或更多个服务接口;并且
确定所述一个或更多个可接受的服务接口中的任何一个是否匹配服务器提供的服务接口。
8.如权利要求7所述的服务接口管理系统,其中该匹配确定模块还包括最佳匹配服务接口模块,其被配置为:如果确定了多于一个的匹配服务接口,则确定最佳匹配服务接口,以及
其中该最佳匹配服务接口优选为最新版本的匹配服务接口。
9.如权利要求6到8中的任何一项所述的服务接口管理系统,其中匹配服务接口的访问指示符是该服务接口的统一资源定位符(URL)。
10.一种用于处理来自驻留在客户端设备上的应用的对于连接到服务器的请求的计算机可读介质,包括计算机可执行指令,当该计算机可执行指令被运行时执行以下步骤:
在服务接口管理系统接收来自驻留在客户端设备上的应用的对于连接到服务器的请求;
确定匹配服务接口;
确定匹配服务接口的访问指示符;以及
响应于所述对于连接到服务器的请求将该匹配服务接口的访问指示符发送给驻留在客户端设备上的应用。
11.如权利要求10所述的计算机可读介质,其中确定匹配服务接口包括:
从所述请求中确定输入参数,所述输入参数表示该应用可接受的一个或更多个服务接口;以及
确定所述一个或更多个可接受的服务接口中的任何一个是否匹配服务器提供的服务接口。
12.如权利要求11所述的计算机可读介质,其中如果确定了多于一个的匹配服务接口,则确定最佳匹配服务接口,以及
其中该最佳匹配服务接口优选为最新版本的匹配服务接口。
13.如权利要求10到12中的任何一项所述的计算机可读介质,其中匹配服务接口的访问指示符是该服务接口的统一资源定位符(URL)。
14.一种驻留在客户端设备上的用于连接到服务器的客户端侧应用,所述客户端侧应用被配置为:
向服务接口管理系统发送所述对于连接到服务器的请求;
从服务接口管理系统接收响应于所述对于连接到服务器的请求的匹配服务接口的访问指示符;以及
基于接收到的访问指示符连接到服务器。
15.一种用于处理来自驻留在客户端设备上的应用的对于连接到服务接口的请求的服务器,包括:
多个服务接口,其使得能够访问驻留在计算机上的服务,其中每个服务接口可由驻留在客户端设备上的应用使用访问标识符来寻址。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/406,991 | 2012-02-28 | ||
US13/406,991 US8856365B2 (en) | 2012-02-28 | 2012-02-28 | Computer-implemented method, computer system and computer readable medium |
EP12001357.8 | 2012-02-29 | ||
EP12001357.8A EP2634695A1 (en) | 2012-02-29 | 2012-02-29 | Computer-implemented method, computer system and computer readable medium |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103297497A true CN103297497A (zh) | 2013-09-11 |
CN103297497B CN103297497B (zh) | 2018-03-16 |
Family
ID=49097800
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310062937.7A Active CN103297497B (zh) | 2012-02-28 | 2013-02-28 | 计算机实现的方法、计算机系统以及计算机可读介质 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2013218670A (zh) |
CN (1) | CN103297497B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102075571A (zh) * | 2010-12-31 | 2011-05-25 | 成都市华为赛门铁克科技有限公司 | 应用程序的执行方法、设备及系统 |
WO2012019653A1 (en) * | 2010-08-13 | 2012-02-16 | Nokia Siemens Networks Oy | Web-telco convergence comprising downloading script commands to user terminals |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6078943A (en) * | 1997-02-07 | 2000-06-20 | International Business Machines Corporation | Method and apparatus for dynamic interval-based load balancing |
JP2002334012A (ja) * | 2001-05-10 | 2002-11-22 | Nippon Telegr & Teleph Corp <Ntt> | サービス要求処理方法及びその実施システム並びにその処理プログラムと記録媒体 |
US20020178254A1 (en) * | 2001-05-23 | 2002-11-28 | International Business Machines Corporation | Dynamic deployment of services in a computing network |
JP3888093B2 (ja) * | 2001-07-23 | 2007-02-28 | 日本電気株式会社 | Webシステム、ノード装置、ロケータ装置及びプログラム |
-
2013
- 2013-02-28 CN CN201310062937.7A patent/CN103297497B/zh active Active
- 2013-02-28 JP JP2013038591A patent/JP2013218670A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012019653A1 (en) * | 2010-08-13 | 2012-02-16 | Nokia Siemens Networks Oy | Web-telco convergence comprising downloading script commands to user terminals |
CN102075571A (zh) * | 2010-12-31 | 2011-05-25 | 成都市华为赛门铁克科技有限公司 | 应用程序的执行方法、设备及系统 |
Also Published As
Publication number | Publication date |
---|---|
JP2013218670A (ja) | 2013-10-24 |
CN103297497B (zh) | 2018-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101297286B (zh) | 添加设备驱动程序的方法 | |
CN101410800B (zh) | 用于软件发布服务的系统和方法 | |
CN1777867B (zh) | 使用增量压缩打补丁更新文件的系统和方法 | |
KR101376916B1 (ko) | 소프트웨어 애플리케이션을 신규 버전의 소프트웨어 애플리케이션으로 점진적으로 업그레이드하기 위한 방법, 기계 판독가능 저장 매체를 포함하는 제품 및 장치 | |
US8458658B2 (en) | Methods and systems for dynamically building a software appliance | |
CN100416465C (zh) | 管理和传递软件更新的系统和方法 | |
US8856365B2 (en) | Computer-implemented method, computer system and computer readable medium | |
US20090282403A1 (en) | Computing system for providing software components on demand to a mobile device | |
US20060253548A1 (en) | Method and system for hosting and executing a component application | |
US20110167114A1 (en) | Automatically synchronizing new contacts across multiple social networking sites | |
CN110825479A (zh) | 页面处理方法、装置、终端设备、服务器和存储介质 | |
CN101385017A (zh) | 部分项改变跟踪和同步 | |
CN1499395A (zh) | 服务设备聚集 | |
WO2013063333A1 (en) | File fetch from a remote client device | |
CN101206694A (zh) | 许可证管理系统、图像处理设备、及其控制方法 | |
CN107844488B (zh) | 数据查询方法和装置 | |
CA2845932C (en) | Method and system for registering software systems in data-sharing sessions | |
US20110208761A1 (en) | Coordinating content from multiple data sources | |
US20070261045A1 (en) | Method and system of configuring a directory service for installing software applications | |
KR101638689B1 (ko) | 클라이언트 단말에 대한 사용자 맞춤형 동기화 서비스 제공 방법 및 시스템 | |
CN103297497A (zh) | 计算机实现的方法、计算机系统以及计算机可读介质 | |
US9313272B2 (en) | Information processor and information processing method | |
US20080163238A1 (en) | Dynamic load balancing architecture | |
CN103164410A (zh) | 一种文件存储及操作的方法,存储设备和系统 | |
CN112083945A (zh) | Npm安装包的更新提示方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C53 | Correction of patent of invention or patent application | ||
CB02 | Change of applicant information |
Address after: German Waldo Applicant after: SAP AG Address before: German Waldo Applicant before: SAP AG |
|
COR | Change of bibliographic data |
Free format text: CORRECT: APPLICANT; FROM: SAP AG TO: SAP EUROPE AG |
|
GR01 | Patent grant | ||
GR01 | Patent grant |