移动云服务的预先形成的指令转让专利

申请号 : CN201680084167.8

文献号 : CN109074265B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : A·V·默克夫K·范德洛

申请人 : 甲骨文国际公司

摘要 :

公开了用于将预先形成的指令集引入到移动云服务的方法、系统和计算机可读介质。在一些示例中,诸如.zip文件的存档文件可以包括两个文件集:1)用于创建应用编程接口(API)以及将API与公司企业网络的防火墙后面的后端服务连接的逻辑,以及2)定制用户代码。在这样的示例中,API可以通过定义的信道连接到后端服务。在一些示例中,定制用户代码可以在云服务上的安全虚拟机(VM)中执行。在这样的示例中,定制用户代码可以在发送到用户的移动设备或从用户的设备接收之前对数据执行错误检查、重新计算或重新格式化数据、或者以其它方式修改数据。

权利要求 :

1.一种将预先形成的指令集引入到移动云服务的方法,所述方法包括:

在移动云服务内执行的计算系统处接收存档文件包,其中所述移动云服务由一个或多个防火墙保护以免受(a)一个或多个移动客户端设备以及(b)一个或多个后端系统二者的影响;

从所述存档文件包中提取第一文件集和第二文件集,所述第一文件集具有用于创建应用编程接口API和将所述API与所述移动云服务内的连接器连接的逻辑,所述第二文件集具有定制软件代码;

由所述移动云服务内执行的所述计算系统使用所述第一文件集中的所述逻辑创建API;

由所述移动云服务内执行的所述计算系统使用用于将所述API与所述连接器连接的逻辑来将所述API与所述移动云服务中的所述连接器连接,其中所述连接器被配置为提供到在所述移动云服务外执行的一个或多个后端服务的接口;

由所述移动云服务内执行的所述计算系统接收来自移动客户端设备的请求,所述请求包括后端服务的标识符;

响应于来自所述移动客户端设备的所述请求,(a)在所述移动云服务内的隔离执行空间中调用所述第二文件集的所述定制软件代码,并且(b)经由所述连接器发起对在所述移动云服务外执行的一个或多个后端服务的一个或多个请求;

由所述移动云服务内执行的所述计算系统基于以下各项生成对来自所述移动客户端设备的所述请求的响应:(a)来自在所述移动云服务的所述隔离执行空间内调用的所述定制软件代码的输出,以及(b)对于对所述一个或多个后端服务的请求的响应;以及由所述移动云服务内执行的所述计算系统将所生成的响应路由到所述移动客户端设备。

2.如权利要求1所述的方法,还包括:

根据第一虚拟机中的逻辑使用所述API将所述请求分派给所述定制软件代码;以及使用所述定制软件代码生成对所述请求的响应,其中所述定制软件代码在第二虚拟机中。

3.如权利要求2所述的方法,其中,所述请求由所述移动客户端设备上的客户端侧应用发送并且传递通过第一防火墙。

4.如权利要求1所述的方法,其中,所述存档文件包包括至少两个单独的文件包,所述至少两个单独的文件包的内容彼此交叉引用。

5.如权利要求1所述的方法,其中,所述请求是通过第一防火墙从所述移动客户端设备接收的,并且其中,发起对所述一个或多个后端服务的请求包括通过与所述第一防火墙不同的第二防火墙将所述请求从所述连接器发送到所述后端服务。

6.如权利要求1所述的方法,其中,单个防火墙封装所述移动云服务,其中,来自所述移动客户端设备的请求是通过所述单个防火墙接收的,并且其中,连接器通过同一单个防火墙将请求发送到所述一个或多个后端服务。

7.一种将预先形成的指令集引入到移动云服务的系统,所述系统包括:

一个或多个处理器;以及

包含指令的非瞬态计算机可读介质,所述指令在由所述一个或多个处理器执行时,使得所述一个或多个处理器执行包括以下各项的操作:当在移动云服务内执行时,在所述系统处接收存档文件包,其中所述移动云服务由一个或多个防火墙保护以免受(a)一个或多个移动客户端设备以及(b)一个或多个后端系统二者的影响;

从所述存档文件包中提取第一文件集和第二文件集,其中所述第一文件集具有用于创建应用编程接口API和将所述API与所述移动云服务内的连接器连接的逻辑,所述第二文件集具有定制软件代码;

使用所述第一文件集中的所述逻辑创建API;

使用用于将所述API与所述连接器连接的逻辑来将所述API与所述移动云服务中的所述连接器连接,其中所述连接器被配置为提供到在所述移动云服务外执行的一个或多个后端服务的接口;

接收来自移动客户端设备的请求,所述请求包括后端服务的标识符;

响应于来自所述移动客户端设备的所述请求,(a)在所述移动云服务内的隔离执行空间中调用所述第二文件集的所述定制软件代码,并且(b)经由所述连接器发起对在所述移动云服务外执行的一个或多个后端服务的一个或多个请求;

基于以下各项生成对来自所述移动客户端设备的所述请求的响应:(a)来自在所述移动云服务的所述隔离执行空间内调用的所述定制软件代码的输出,以及(b)对于对所述一个或多个后端服务的请求的响应;以及将所生成的响应路由到所述移动客户端设备。

8.如权利要求7所述的系统,还包括当由所述一个或多个处理器执行时使得所述一个或多个处理器执行包括以下各项的操作的指令:根据第一虚拟机中的逻辑使用所述API将所述请求分派给所述定制软件代码;

使用所述定制软件代码生成对所述请求的响应,其中所述定制软件代码在第二虚拟机中。

9.如权利要求8所述的系统,其中,所述请求由所述移动客户端设备上的客户端侧应用发送并且传递通过第一防火墙。

10.如权利要求8所述的系统,其中,所述存档文件包包括至少两个单独的文件包,所述至少两个单独的文件包的内容彼此交叉引用。

11.如权利要求7所述的系统,其中,所述请求是通过第一防火墙从所述移动客户端设备接收的,并且其中,发起对所述一个或多个后端服务的请求包括通过与所述第一防火墙不同的第二防火墙将所述请求从所述连接器发送到所述后端服务。

12.如权利要求7所述的系统,其中,单个防火墙封装所述移动云服务,其中,来自所述移动客户端设备的请求是通过所述单个防火墙接收的,并且其中,连接器通过同一单个防火墙将请求发送到所述一个或多个后端服务。

13.存储一条或多条指令的一个或多个非暂态计算机可读介质,所述一条或多条指令在由一个或多个处理器执行时,使得所述一个或多个处理器:在移动云服务内执行的计算系统处接收存档文件包,其中所述移动云服务由一个或多个防火墙保护以免受(a)一个或多个移动客户端设备以及(b)一个或多个后端系统二者的影响;

从所述存档文件包中提取第一文件集和第二文件集,所述第一文件集具有用于创建应用编程接口API和将所述API与所述移动云服务内的连接器连接的逻辑,所述第二文件集具有定制软件代码;

使用所述第一文件集中的所述逻辑创建API;

使用用于将所述API与所述连接器连接的逻辑来将所述API与所述移动云服务中的所述连接器连接,其中所述连接器被配置为提供到在所述移动云服务外执行的一个或多个后端服务的接口;

接收来自移动客户端设备的请求,所述请求包括后端服务的标识符;

响应于来自所述移动客户端设备的所述请求,(a)在所述移动云服务内的隔离执行空间中调用所述第二文件集的所述定制软件代码,并且(b)经由所述连接器发起对在所述移动云服务外执行的一个或多个后端服务的一个或多个请求;

基于以下各项生成对来自所述移动客户端设备的所述请求的响应:(a)来自在所述移动云服务的所述隔离执行空间内调用的所述定制软件代码的输出,以及(b)对于对所述一个或多个后端服务的请求的响应;以及将所生成的响应路由到所述移动客户端设备。

14.如权利要求13所述的非暂态计算机可读介质,还存储当由所述一个或多个处理器执行时使得所述一个或多个处理器执行以下操作的一条或多条指令:根据第一虚拟机中的逻辑使用所述API将所述请求分派给所述定制软件代码;以及使用所述定制软件代码生成对所述请求的响应,其中所述定制软件代码在第二虚拟机中。

15.如权利要求14所述的非暂态计算机可读介质,其中,所述请求由所述移动客户端设备上的客户端侧应用发送并且传递通过第一防火墙。

16.如权利要求14所述的非暂态计算机可读介质,其中,所述存档文件包包括至少两个单独的文件包,所述至少两个单独的文件包的内容彼此交叉引用。

17.如权利要求13所述的非暂态计算机可读介质,其中,所述请求是通过第一防火墙从所述移动客户端设备接收的,并且其中,发起对所述一个或多个后端服务的请求包括通过与所述第一防火墙不同的第二防火墙将所述请求从所述连接器发送到所述后端服务。

18.如权利要求13所述的非暂态计算机可读介质,其中,单个防火墙封装所述移动云服务,其中,来自所述移动客户端设备的请求是通过所述单个防火墙接收的,并且其中,连接器通过同一单个防火墙将请求发送到所述一个或多个后端服务。

说明书 :

移动云服务的预先形成的指令

[0001] 相关申请的交叉引用
[0002] 本申请要求于2016年3月28日提交的申请号为62/314,149的标题为“Mobile Cloud Service(MCS)Templates”的美国临时专利申请62/314,149的权益和优先权,该专利申请的全部公开内容出于所有目的通过引用并入本文。
[0003] 版权
[0004] 本专利文档的公开内容的一部分包含受版权保护的素材。版权所有者不反对任何人对专利文档或专利公开内容的传真复制,就像其在专利和商标局的专利文件或记录中所出现的那样,但是除此之外在任何情况下都保留所有版权权利。

背景技术

[0005] 移动应用通常通过与服务器通信进行操作以确定将在移动电话上显示的内容。移动电话和服务器两者都可以包括移动应用的一部分。服务器上的部分(有时被称为服务器侧应用)可以响应来自移动电话上的部分(有时被称为客户端侧应用)的请求。在一些示例中,请求可以使用超文本传输协议(HTTP)。服务器侧应用通常可以存储持久性数据并且不能被移动电话的用户看到。客户端侧应用可以被包括在移动电话上并响应于包括用户输入的一个或多个输入。客户端侧应用可以使用超文本标记语言(HTML)、级联样式表(CSS)或JavaScript。
[0006] 在一些示例中,服务器侧应用可以包括允许客户端侧应用与服务器侧应用通信的编程接口(例如,应用编程接口)。服务器侧应用还可以包括与响应来自客户端侧应用的通信相关联的软件代码以及将服务器侧应用连接到一个或多个后端系统(例如,数据库)的一个或多个连接器中的至少一个或多个。当从后端系统接收到数据时,一个或多个连接器还可以将数据进行格式化和整形以供客户端侧应用在移动电话上查看数据。

发明内容

[0007] 本公开一般而言涉及用于提供移动应用的服务器侧部分的系统、方法和计算机可读介质。具体地,提供了用于导入和导出可以容易地与移动应用连接的服务器侧应用的处理。服务器侧应用可以包括与移动应用相关联的定制代码和用于在服务器侧应用和客户端侧应用之间进行交互的编程接口中的至少一个或多个。服务器侧应用还可以包括一个或多个连接器以在服务器侧应用和后端系统之间进行对接。
[0008] 提供了用于将预先形成的指令集引入到移动云服务的设备、计算机程序产品和方法。例如,方法可以包括提取第一文件集和第二文件集。在一些示例中,可以从存档文件包中提取第一文件集和第二文件集。在一些示例中,第一文件集可以包括用于创建应用编程接口(API)的逻辑。在这样的示例中,第一文件集还可以包括用于将API与后端服务连接的逻辑。在一些示例中,第二文件集可以包括软件代码。在一些示例中,可以从远程设备接收存档文件包。
[0009] 该方法还可以包括使用第一文件集中的逻辑来创建API并且将API与云服务中的后端服务连接。在一些示例中,可以使用用于将API与后端服务连接的逻辑来连接API。该方法还可以包括在云服务的用户空间中执行第二文件集的软件代码。
[0010] 在一些实现中,该方法还可以包括从移动设备接收请求。在一些示例中,可以通过防火墙接收请求。在这样的示例中,请求可以从服务器侧应用查询信息或数据。在这样的示例中,该方法还可以包括根据第一虚拟机中的逻辑使用API将请求分派给软件代码。在这样的示例中,API可以与防火墙外部的后端服务连接。在一些示例中,该方法还可以包括使用软件代码生成对请求的响应。在这样的示例中,软件代码可以在第二虚拟机的用户沙盒(sandbox)区域中执行。该方法还可以包括将来自后端服务的响应路由到移动设备。
[0011] 已经采用的术语和表达被用作描述的术语而非限制,并且无意使用这些术语和表达来排除所示出和描述的特征的任何等同物或其部分。但是,应该认识到的是,在所要求保护的系统和方法的范围内的各种修改是可能的。因此,应该理解的是,虽然本发明的系统和方法已经通过示例和可选特征被具体公开,但是本领域技术人员可以采用本文公开的概念的修改和变化,并且这些修改和变化将被认为是在由所附权利要求限定的系统和方法的范围内。
[0012] 本发明内容不旨在识别所要求保护的主题的关键或必要特征,也不旨在单独使用以确定所要求保护的主题的范围。应该通过参考本专利的整个说明书的适当部分、任何或所有附图以及每项权利要求来理解本主题。
[0013] 下面将在以下说明书、权利要求和附图中更详细地描述前述以及其它特征和示例。

附图说明

[0014] 图1图示了计算环境的框图的示例。
[0015] 图2图示了服务器侧应用的示例。
[0016] 图3是图示用于为服务器侧应用创建包的处理的示例的流程图。
[0017] 图4是图示用于安装服务器侧应用的包的处理的示例的流程图。
[0018] 图5是图示用于响应来自移动设备上的客户端侧应用对服务器侧应用的请求的处理的示例的流程图。
[0019] 图6图示了实体之间的关系的示例。
[0020] 图7描绘了分布式系统的简化图。
[0021] 图8是系统环境的组件的简化框图,通过该环境,由组件提供的服务可以作为云服务供应。
[0022] 图9图示了示例性计算机系统,通过该计算机系统,由一个或多个组件提供的服务可以作为云服务供应。

具体实施方式

[0023] 在以下描述中,出于解释的目的,阐述了具体细节,以便提供对本公开的示例的透彻理解。但是,将显而易见的是,可以在没有这些具体细节的情况下实践各种示例。图和描述不是限制性的。
[0024] 随后的描述仅提供示例,并且不旨在限制本公开的范围、适用性或配置。相反,示例的随后描述将为本领域技术人员提供使能(enabling)描述。应该理解的是,在不脱离如所附权利要求中阐述的描述的精神和范围的情况下,可以对元件的功能和布置进行各种改变。
[0025] 在以下描述中给出了具体细节以提供对示例的透彻理解。但是,本领域普通技术人员将理解的是,可以在没有这些具体细节的情况下实践这些示例。例如,电路、系统、网络、处理和其它组件可以被示为框图形式的组件,以便不以不必要的细节模糊示例。在其它情况下,众所周知的电路、处理、算法、结构和技术可以在没有不必要的细节的情况下示出,以便避免模糊示例。
[0026] 此外,应该注意的是,各个示例可以被描述为处理,该处理被描绘为流程图、流图、数据流图、结构图或框图。虽然流程图可以将操作描述为顺序处理,但是许多操作可以并行或并发执行。此外,操作的次序可以被重新布置。当处理的操作完成时,该处理终止,但是可能具有不被包括在图中的附加步骤。处理可以与方法、函数、过程、子例程,子程序等对应。当处理与函数对应时,该处理的终止可以与函数返回到调用函数或主函数对应。
[0027] 术语“机器可读存储介质”或“计算机可读存储介质”包括但不限于:便携式或非便携式存储设备、光学存储设备,以及能够存储、包含或携带(一条或多条)指令和/或数据的各种其它介质。机器可读存储介质或计算机可读存储介质可以包括非瞬态介质,其中可以存储数据并且不包括载波和/或无线传播或通过有线连接传播的瞬态电子信号。非瞬态介质的示例可以包括但不限于:磁盘或磁带、诸如压缩盘(CD)或数字通用盘(DVD)的光学存储介质、闪存、存储器或存储器设备。计算机程序产品可以包括可以表示过程、函数、子程序、程序、例程、子例程、模块、软件包、类、或者指令、数据结构或程序语句的任何组合的机器可执行指令和/或代码。代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容耦合到另一个代码段或硬件电路。信息、自变量、参数、数据等可以经由任何合适的手段(包括存储器共享、消息传递、令牌传递、网络传送等)被传递、转发或传送。
[0028] 另外,示例可以由硬件、软件、固件、中间件、微代码、硬件描述语言或者其任何组合来实现。当在软件、固件、中间件或微代码中实现时,执行必要任务(例如,计算机程序产品)的程序代码或代码段可以存储在机器可读介质中。(一个或多个)处理器可以执行必要任务。
[0029] 在一些图中描绘的系统可以以各种配置被提供。在一些示例中,系统可以被配置为分布式系统,其中系统的一个或多个组件跨云计算系统中的一个或多个网络分布。
[0030] 在组件被描述为“被配置为”执行某些操作的情况下,这种配置可以例如通过设计执行操作的电子电路或其它硬件、通过编程执行操作的可编程电子电路(例如,微处理器或其它合适的电子电路)或其任何组合来实现。
[0031] 本公开一般而言涉及用于提供移动应用的服务器侧部分的系统、方法和计算机可读介质。特别地,提供了用于导入和导出可以容易地与移动应用连接的服务器侧应用的处理。服务器侧应用可以包括与移动应用相关联的定制代码和用于在服务器侧应用和客户端应用之间进行交互的编程接口中的至少一个或多个。服务器侧应用还可以包括一个或多个连接器以在服务器侧应用和后端系统之间进行对接。
[0032] 图1图示了用于促进移动计算设备102与一个或多个企业计算机系统(诸如云计算系统140和场所内(on-premise)企业计算机系统150)之间的通信的计算环境100的框图的示例。这种通信可以是交换或传输企业数据、请求由企业计算机系统提供的服务、传送消息或其组合。
[0033] 企业计算机系统可以包括被配置为针对实体或企业进行操作的各种计算系统。例如,企业计算机系统可以包括一个或多个计算机系统,诸如企业服务器计算机(例如,后端服务器计算机)以处理对服务的请求。企业计算机系统可以包括可以使用企业数据进行处理和/或操作的应用和/或服务。例如,企业计算机系统150可以提供用于管理或操作企业的一个或多个服务和/或应用。服务可以包括但不限于:客户关系管理(CRM)、人力资本管理(HCM)、人力资源(HR)管理、供应链管理、企业通信、电子邮件通信、商业服务、其它企业管理服务或应用,或其组合。企业计算机系统150可以包括专用于提供一个或多个服务的一个或多个计算机系统。在一些示例中,提供服务的每个不同的计算机系统可以位于企业的场所内或者可以位于远离企业。在一些示例中,支持不同服务的多个不同计算机系统可以坐落于单个地理位置中,诸如企业的场所内。在图1所示的示例中,场所内企业计算机系统150可以包括HR系统154和CRM系统156,两者都可以位于企业的场所内。在一些示例中,企业计算机系统140可以包括或实现代理系统152以促进或处理云计算机系统110与一个或多个企业系统154、156之间的通信。下面更详细地描述企业计算机系统,诸如云企业计算机系统140和场所内企业计算机系统150。
[0034] 计算机环境100可以包括移动云服务(“MCS”)112,该移动云服务被实现为作为可以促进计算设备102与一个或多个企业计算机系统之间的通信的安全中间计算环境进行操作,因为计算设备102可以不被配置为与这些企业计算机系统通信。例如,一些企业计算机系统可能由传统的或后端计算机系统支持。这些系统可以被配置为使用不同的通信和/或安全协议进行操作。这些企业计算机系统支持的协议可以与由移动计算设备支持的协议不同。MCS 112可以支持与不同类型的移动计算设备的通信。因此,MCS 112可以实现促进企业计算机系统与移动计算设备之间的通信的技术,以使得它们尽管在通信方面不兼容(诸如,格式或通信协议之间不同)的情况下也能够彼此通信。例如,MCS 112可以转换移动计算设备和企业计算机系统之间的通信协议。
[0035] 云计算机系统110可以支持MCS 112。云计算机系统110可以使用硬件、软件、固件或其组合来实现。例如,云计算机系统110可以包括一个或多个计算设备,诸如服务器计算机。云计算机系统110可以包括一个或多个存储器存储设备和一个或多个处理器。存储器存储设备可以由(一个或多个)处理器访问并且可以包括存储在其上的指令,该指令在由(一个或多个)处理器执行时,使得(一个或多个)处理器实现本文公开的一个或多个操作。在一些示例中,存储器存储设备可以作为本地存储装置(例如,高速缓存)进行操作。云计算机系统110可以包括不同种类的操作系统。存储器存储设备可以由(一个或多个)处理器访问并且可以包括存储在其上的指令,该指令在由(一个或多个)处理器执行时,使得(一个或多个)处理器实现本文公开的一个或多个操作、方法或处理。存储器存储装置可以作为本地存储装置进行操作。本地存储装置可以使用任何类型的持久性存储设备(诸如存储器存储设备或其它计算机可读存储介质)来实现。在一些示例中,本地存储装置可以包括或实现一个或多个数据库(例如,文档数据库、关系数据库或其它类型的数据库)、一个或多个文件存储库、一个或多个文件系统或其组合。本地存储装置可以存储企业数据。
[0036] 在某些示例中,云计算机系统110可以包括一个或多个数据存储库,诸如元数据储存库124、诊断存储库126和分析存储库128。数据存储库124、126、128可以由云计算机系统110中的任何组件访问。
[0037] 元数据储存库124可以存储与MCS 112相关联的所有元数据。该信息可以由运行时和设计时数据两者组成,每种数据都对可用性和性能有其自己的要求。MCS 112的租户或订户可以具有任何数量的应用(有时在本文中被称为服务器侧应用)。每个应用可以进行版本化并且可以具有相关联的零个或多个版本化资源API以及这些资源应用编程接口(API)合约(contract)的零个或多个版本化服务实现。这些实体是运行时用于将虚拟请求(mAPI)映射到具体服务实现(服务)的实体。该映射为移动开发人员提供了在她设计和构建她的应用时无需知道实际实现服务的优势。以及不要求她必须对每个服务错误修复重新发布新应用。元数据储存库124可以存储可以由计算设备(例如,计算设备102)调用的一个或多个可调用接口。可调用接口可以由应用的用户(例如,开发人员)定制以促进与MCS 112的通信。元数据储存库124可以存储与可调用接口的一个或多个配置对应的元数据。元数据储存库
124可以被配置为存储用于实现可调用接口的元数据。可调用接口可以被实现为在用于通信的一种格式、协议或体系架构风格与用于通信的另一种格式、协议或体系架构风格之间进行转换。元数据储存库124可以由已认证用户经由外部网络进行修改。
[0038] 服务器侧应用可以用于远程执行与移动应用相关联的操作。例如,服务器侧应用可以响应移动应用对数据的请求、存储与移动应用相关联的信息、并将内容发送到移动应用。在一些示例中,服务器侧应用可以对移动应用进行服务。
[0039] 在一些示例中,MCS 112还可以包括后端系统。后端系统可以辅助服务器侧应用执行操作。例如,后端系统可以是存储信息、执行计算或执行任何其它动作以补充服务器侧应用的地方。在其它示例中,后端系统可以远离MCS 112。在这样的示例中,服务器侧应用可以使用网络(例如,互联网)与后端系统通信。
[0040] 诊断存储库126可以存储关于在MCS 112中发生的处理的诊断信息。诊断存储库126可以存储经由MCS 112传送的消息和日志信息。分析存储库128可以存储在系统中处理期间捕获的日志记录和分析数据。
[0041] 代表MCS 112,云计算机系统110可以利用其计算资源来使得能够执行定制代码116(例如,操作、应用、方法、函数、例程等)。在一些示例中,可以在用户沙盒区域中执行定制代码。用户沙盒区域可以是隔离在用户沙盒区域中执行的代码的环境。在一些示例中,用户沙盒可以是在其自身内参数化和封装代码执行的环境。计算资源可以被分配用于针对作为MCS 112的订户或租户相关联的特定用户使用。可以针对用户、设备、应用或与订户相关的其它准则来分配资源。取决于寻求与企业计算机系统通信的移动计算设备的需求,可以缩小或放大MCS 112。MCS 112可以被配置为使得它具有弹性以处理移动计算设备和企业计算机之间的高于正常流量的临时时段和浪涌(surge)。在一些示例中,MCS 112可以包括支持可伸缩性的元件,使得可以添加或替换组件以满足通信中的需求。
[0042] 计算设备102可以与MCS 112通信(例如,发送请求消息)以请求由企业计算机系统提供的服务。计算设备102(例如,移动计算设备)可以使用硬件、固件、软件或其组合来实现。计算设备102可以经由MCS 112与企业计算机系统140、150通信。计算设备102可以包括或者可以被实现为端点设备、个人数字助理(PDA)、平板计算机、膝上型计算机、移动计算设备、台式计算机、可穿戴计算机、寻呼机等。计算设备102可以包括一个或多个存储器存储设备和一个或多个处理器。计算设备102可以包括不同种类的操作系统。存储器存储设备可以由(一个或多个)处理器访问并且可以包括存储在其上的指令,该指令在由(一个或多个)处理器执行时,使得(一个或多个)处理器实现本文公开的一个或多个操作、方法或处理。存储器存储装置可以作为本地存储装置进行操作。本地存储装置可以使用任何类型的持久性存储设备(诸如存储器存储设备或其它计算机可读存储介质)来实现。在一些示例中,本地存储装置可以包括或实现一个或多个数据库(例如,文档数据库、关系数据库或其它类型的数据库)、一个或多个文件存储库、一个或多个文件系统或其组合。本地存储装置可以存储企业数据。
[0043] 在各种示例中,计算设备102可以被配置为执行和操作一个或多个应用,诸如web浏览器、客户端应用、专有客户端应用等(例如,服务器侧应用)。应用可以包括为企业数据和/或由企业计算机系统提供的服务配置的特定应用。可以经由(一个或多个)网络访问或操作客户端应用。应用可以包括用于对应用进行操作的图形用户界面(GUI)。
[0044] 计算设备102可以使用无线通信经由一个或多个通信网络与MCS 112通信。通信网络的示例可以包括移动网络、无线网络、蜂窝网络、局域网(LAN)、广域网(WAN)、其它无线通信网络或其组合。在某些示例中,计算设备102可以使用定制通信协议(例如,定制协议)与MCS 112建立通信连接114。可以通过云计算机系统110与MCS 112建立连接114。定制协议可以是基于HTTP的协议。通过利用定制通信协议,计算设备102可以在与云计算机系统110通信的任何计算设备平台上进行操作。
[0045] 计算设备102可以通过一个或多个可调用接口(例如,应用编程接口(API))与云计算机系统110通信。可调用接口可以在计算设备102上实现。可调用接口可以被实现用于使得这些应用能够与MCS 112通信的定制应用。在一些示例中,可以为MCS 112开发可调用接口。可调用接口可以使得应用能够与MCS 112通信,而不必适应协议(例如,通信协议或开发协议)和/或体系架构风格或格式中的差异。
[0046] MCS 112可以被一个或多个防火墙104、130保护,以提供处理请求和执行定制代码116的安全环境。计算设备102和MCS 112之间的通信可以由外部通信防火墙104分开。防火墙104可以与云计算机系统110连接以促进对MCS 112的安全访问。防火墙104可以允许云计算机系统110和计算设备(例如,计算设备102)之间的消息通信。这样的消息(例如,HTTP消息或REST消息)可以符合可以由可调用接口支持的通信协议(例如,HTTP或REST)。在另一个示例中,云计算机系统110和计算设备102之间的消息可以符合诸如Speedy(SPDY)的通信协议。MCS 112可以管理防火墙130以保卫云计算机系统110和企业计算机系统140、150之间的通信。防火墙130可以允许计算机系统110和计算设备(例如,计算设备102)之间的消息通信。这样的消息(例如,SPDY消息、HTTP消息或REST消息)可以符合通信协议(例如,SPDY、HTTP或REST)。计算设备102和企业计算机系统140、150之间的通信可以是经由MCS 112的双向通信。
[0047] 由于与计算设备102和企业计算机系统140、150的通信可能经由不安全的公共网络发生,因此防火墙104、130为来自和去往MCS 112的通信提供添加的保护层。防火墙104、130可以使得MCS 112能够将其内部网络与将计算设备102和企业计算机系统140、150连接的外部网络区分开。在一些示例中,虽然防火墙104、130被示为两个不同的防火墙,但是它们可以被实现为封装MCS 112的单个防火墙。
[0048] 云计算机系统110还可以通过与企业计算机系统通信而作为中间计算环境进行操作,其中一些企业计算机系统可能具有不同的通信协议。这些通信协议可以是定制的或特定于与云计算机系统110通信的应用或服务。进一步地,云计算机系统110可以与企业计算机系统通信以提供企业服务和/或根据由企业计算机系统支持的格式来交换企业数据。云计算机系统110可以维护企业数据的本地存储装置(例如,本地高速缓存)并且可以使用本地存储装置来管理移动计算设备和企业计算机系统140、150之间的企业数据的同步。
[0049] 计算设备102可以与MCS 112通信(例如,发送请求消息)以请求由企业计算机系统提供的服务。通过防火墙104接收到的请求可以首先由安全服务132处理。安全服务132可以管理对与请求相关联的用户的安全认证。因此,云计算机系统可以提供技术优势,包括提供本文描述的可以保护客户通信和企业数据的完整性的安全机制。云计算机系统的技术优势可以包括防止或减少受危害的通信和/或数据受到危害,认证可以最初发生,从而将访问限制为仅具有所需凭证。云计算机系统的技术优势可以包括服务和服务调用流被结构化使得在请求到来时它们只能够访问它们被授权的服务。通过将授权与系统的其余部分解耦,处理可以包括授权“谁可以做什么”的任务被委托给专门供给的安全子系统(例如,身份管理系统),该安全子系统可以被扩展以支持特定公司客户要求的任何附加的定制安全措施。在一些示例中,可以针对请求、会话、用户、设备、与用户相关的其它准则或其组合来确定安全认证。可以对接收到的每个请求执行安全认证。在一些示例中,安全服务132可以基于先前的请求验证来确定认证。可以针对用户或设备确定安全认证,使得对不同企业计算机系统140、150的请求可以基于单个安全验证被认证。
[0050] 在一些示例中,安全服务132可以确定用于所请求的企业计算机系统的安全协议,并相应地根据这种安全协议生成安全令牌。安全令牌可以与对企业计算机系统的请求一起传递以使得企业计算机系统能够基于生成的安全令牌来验证认证。企业计算机系统可以支持不同的安全协议。安全协议可以是通过其确定安全性的标准。可以基于由安全服务132生成的安全令牌来验证安全性。安全服务132可以确定针对为请求识别出的企业计算机系统的安全协议。在一些示例中,企业计算机系统150可以具有代理系统152,代理系统152可以根据由MCS 112支持的定制或特定安全协议进行配置或实现。因此,MCS 112可以根据这样的定制安全协议来生成安全令牌。
[0051] 云计算机系统110可以包括、实现一个或多个负载平衡器系统106、108和/或与一个或多个负载平衡器系统106、108进行通信。在确定安全认证后,云计算机系统110可以请求负载平衡器系统106、108中的任何一个来检查它接收到的请求并检测该请求被引导到哪个服务。MCS 112可以被配置有负载平衡器106、108并且用启动的资源进行更新,使得当请求到来时,负载平衡器106、108可以跨不同资源来平衡所请求的负载。
[0052] 云计算机系统110可以包括可以处理请求并将它们分派给适当的服务的分派器(dispatcher)118。可以在分派后将请求路由到适当的服务。在一些示例中,服务本身可以将内部请求路由到MCS 112或企业计算机系统中的另一个内部服务。在一些示例中,分派器118可以基于在请求的统一资源标识符(URI)和/或统一资源定位符(URL)中识别出的目的地的位置(例如,地址)来解析请求以确定请求的目的地。分派器118可以解析请求及其头部以提取以下信息中的一个或多个:租户标识符、服务标识符、应用名称、应用版本、请求资源、操作和参数等。分派器118可以使用解析的信息在元数据储存库124中执行查找。分派器
118可以检索对应的应用元数据。分派器118可以基于所请求的资源和元数据中的映射来确定目标服务。虽然元数据最初是非常基本的映射,但是元数据可以被增强以提供更复杂的、基于规则的分派。分派器118可以执行任何特定于分派器的日志记录、度量收集等。然后,分派器118可以根据应用元数据执行初始授权。分派器118可以格式化入站请求和任何其它必要信息,并将消息放置在路由总线120上以供进一步处理。分派器118可以将请求放置在队列上并等待对应的响应。分派器118可以处理从路由总线120接收到的响应并将响应返回到计算设备102。
[0053] 除了处理对外部请求的分派之外,分派器118还可以在分派内部请求中起作用。这样的内部请求可以以组合服务或对服务的定制代码调用的形式出现。在这两种情况下,调用者都可以使用如在应用内定义的逻辑服务名称。分派器118可以使用当前的执行上下文来确定应用并使用该逻辑名称来确定要调用的适当服务。
[0054] 云计算机系统110可以包括管理向路由总线120注册的目的地递送消息的路由总线120。路由总线120可以作为用于管理云服务112中的通信的中央系统进行操作。通过路由总线120传送的数据可以被处理以捕获和存储数据。路由总线120可以提供框架,使得可以根据需要容易地插入附加的中央化服务(附加授权、调试等)。由路由总线120捕获的数据可以存储在诊断存储库126和/或分析存储库128中。
[0055] 路由总线120可以将消息路由到一个或多个目的地。在一些示例中,消息可以包括执行定制代码116的请求。在这样的示例中,路由总线120可以请求134调用定制代码116。在一些示例中,路由总线120可以将请求传递给由请求中的信息识别出的目的地企业计算机系统。如果需要,路由总线120可以请求136适配器接口122来执行转换,以将请求传递给企业计算机系统,例如,企业计算机系统140或企业计算机系统150。
[0056] 在某些示例中,云计算机系统110可以包括或实现将消息转换或转变为由接收企业计算机系统支持的协议的适配器接口122。适配器接口122可以与企业计算机系统140、150中的每一个建立单独的通信连接。云计算机系统110可以被配置为经由一个或多个网络(未示出)与企业计算机系统140、150通信。通信网络的示例可以包括互联网、移动网络、公共网络、无线网络、蜂窝网络、局域网(LAN)、广域网(WAN)、其它通信网络或其组合。在某些示例中,通信连接可以是使用高速通信干线(trunk)促进的高速通信连接。与企业计算机系统140、150的通信可以通过防火墙130,防火墙130确保与外部网络的通信是安全的,以防止经由这样的通信对MCS 112的未授权访问。
[0057] 在一些示例中,云计算机系统110可以促进对计算设备102的用户的通知。云计算机系统110可以包括支持与用户的状态交互的提醒管理服务,例如以基于用户偏好通过一个或多个信道来递送提醒、等待响应,以及基于响应采取行动。对在一个信道上发送的提醒的响应可以通过服务需要能够被处理的另一个信道接收。平台可能带有用于流行交互模式的内置状态模型并且可以用新的状态模型进行扩展。一些提醒信道可以包括单向或者双向的已知的通信资源。示例包括SMS、 推送通知和谷歌云消息传送(Google Cloud )。
[0058] 在一些示例中,云计算机系统110可以使得计算设备能够访问和/或请求一个或多个服务,诸如对象存储库服务、数据库服务、访问web服务、社交服务、资源服务或其组合。
[0059] 云计算机系统110可以提供对象存储库服务,对象存储库服务可以为BLOB提供存储设施。存储的基本单元可以是具有读和写操作的文本。还可以供应用于JSON对象的基本查询设施。
[0060] 云计算机系统110可以提供数据库服务以允许连接到托管数据库以执行查询或写入。所需的参数化可能需要数据库的完整连接串、要执行的SQL串或存储过程、任何参数以及可能的凭证。可以在运行时提供或者在应用元数据中预先配置必要信息。
[0061] 云计算机系统110可以提供对web服务(诸如简单访问对象协议(SOAP)web服务)的访问。云计算机系统110可以提供对REST服务(诸如与任意REST资源的连接)的访问。
[0062] 云计算机系统110可以提供对社交服务的访问,这些社交服务可以提供与诸如等许多流行社交站点的基本集成。这些服务可以允许使用来自这些站点的用户凭证进行第三方认证以及访问它们的服务。示例包括发送推文或更新你的状态。
[0063] 云计算机系统110可以提供公共云服务以使得用户能够简化和优化通信。例如,服务开发人员可以使用MCS 112的通用web服务来与使用云计算机系统110的云服务托管的资源进行对话。
[0064] 在一些示例中,计算设备102可以包括移动应用。移动应用可以使用移动应用包含的代码执行一个或多个操作。在一些示例中,移动应用的操作可以包括以下中的至少一个或多个:向计算设备102的用户显示内容、从用户接收输入、响应来自用户的输入以及从远程系统接收内容。
[0065] 图2图示了服务器侧应用210的示例。服务器侧应用可以被包括在MCS(例如,MCS 112)中。服务器侧应用210可以包括编程接口(例如,应用编程接口(API)212)、定制代码214和连接器216中的至少一个或多个。API 212可以用于向移动应用提供到服务器侧应用210的接口。在一些示例中,服务器侧应用可以包括多个API。
[0066] 定制代码214(有时被称为软件代码或用户代码)可以是可由计算机系统执行的一条或多条指令,以执行与服务器侧应用210相关联的操作。可以在虚拟机上执行(例如,安装)定制代码214。在一些示例中,虚拟机可以是计算机系统的仿真。在这样的示例中,虚拟机可以运行虚拟操作系统或涉及虚拟化的其它计算体系架构。可以虚拟化一个或多个灵活的逻辑存储设备池以维护用于虚拟机的虚拟存储设备。虚拟网络可以由服务器使用软件定义网络进行控制。在一些示例中,定制代码214可以包括与移动应用相关联的逻辑的第一部分。在这样的示例中,移动应用上的代码可以包括与移动应用相关联的逻辑的第二部分;并且后端系统上的代码可以包括与移动应用相关联的逻辑的第三部分。本领域普通技术人员将认识到的是,在更多或更少的系统上可能存在逻辑的更多或更少的部分。
[0067] 连接器216可以将服务器侧应用210与后端系统连接。在一些示例中,连接器216可以为服务器侧应用210提供到后端系统的接口。在一些示例中,连接器216还可以格式化从后端系统接收到的信息。在一些示例中,服务器侧应用210可以包括多个连接器。
[0068] 元数据218可以包括由服务器侧应用210或移动云服务环境在设计时或运行时利用的数据。例如,元数据218可以包括(a)管理服务器侧或移动应用的执行的策略;(b)API实现和连接器之间的运行时依赖性;(c)访问控制信息;(d)定制代码实现绑定的API;(e)连接器绑定;(f)以及其它。策略的示例可以包括日志记录级别策略和生产数据库URI策略。在一些示例中,日志记录级别策略可以在移动后端、API或环境的范围中定义所需的日志级别。在一些示例中,生产数据库URI策略可以指向由服务器侧应用使用的一个或多个数据库。在一些示例中,运行时依赖性信息可以指定API实现消耗一个或多个连接器(例如,具有对一个或多个连接器的依赖性)。在这样的示例中,运行时依赖性信息可以用于在部署、导入和/或导出期间保证服务器侧应用的完整性。在一些示例中,访问控制信息可以指定被允许调用API的一个或多个用户角色的列表。在这样的示例中,该列表可以存储在元数据中并且可以用于设计时和/或运行时操作。在一些示例中,API绑定可以描述API如何与定制代码交互(例如,定制代码的哪些部分被特定API调用)。在一些示例中,连接器绑定可以描述在连接器执行期间使用连接器的哪个特定实现。
[0069] 在一些示例中,API 212和定制代码214可以被组合到一个实体中。在其它示例中,连接器216也可以被组合到一个实体中,使得服务器侧应用的三个组件可以被打包在一起。
[0070] 图3是图示用于为服务器侧应用创建包的处理300的示例的流程图。在一些方面,处理300可以由移动云服务执行。处理300被示为逻辑流图,其操作表示可以用硬件、计算机指令或其组合实现的一系列操作。在计算机指令的上下文中,操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,该指令在由一个或多个处理器执行时,执行所述操作。通常,计算机可执行指令包括执行特定函数或实现特定数据类型的例程、程序、对象、组件、数据结构等。操作被描述的次序不旨在被解释为限制,并且任何数量的所描述的操作可以以任何次序和/或并行地组合以实现处理。
[0071] 此外,处理300可以在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以被实现为在一个或多个处理器上集体执行、由硬件或其组合集体执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)。如上所述,代码可以例如以包括可由一个或多个处理器执行的多条指令的计算机程序的形式存储在机器可读存储介质上。机器可读存储介质可以是非瞬态的。
[0072] 在步骤310处,处理300包括选择一个或多个实体。一个或多个实体可以由用户选择。实体可以是移动后端。移动后端可以是用于对连接器、API、API实现和存储集合进行分组的对象。移动后端也可以包括针对移动后端的安全和访问凭证。实体也可以是API、API实现、存储集合或连接器中的一个或多个。在一些示例中,一个或多个实体在组合时可以是用于在移动云服务环境中执行一个或多个操作的服务器侧应用。
[0073] 在步骤320处,处理300包括分析一个或多个实体的依赖性。例如,实体可以依赖于另一个实体。此外,识别执行所选择的一个或多个实体所需的项目。
[0074] 在步骤330处,处理300包括打包依赖性和一个或多个实体的逻辑分组。逻辑分组可以为每次调用提供上下文。可以向用户发送、存储或共享包。在一些示例中,可以将包导入到远程服务器中,使得在远程服务器中创建一个或多个实体和依赖性,使得服务器侧应用可以在远程服务器上运行。在一些示例中,包可以被组合。
[0075] 在一些示例中,包可以包括一个或多个实体的描述用于标识。描述可以包括包名称、包版本、一个或多个实体的列表,以及描述包的用途的包的目的。在一些示例中,包还可以包括指示用户定义的代码的入口点的绑定。入口点可以用于一个或多个API。如上所述,绑定可以是元数据。
[0076] 图4是图示用于安装服务器侧应用的包的处理400的示例的流程图。在一些方面,处理400可以由移动云服务执行。处理400被示为逻辑流图,其操作表示可以用硬件、计算机指令或其组合实现的一系列操作。在计算机指令的上下文中,操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,该指令在由一个或多个处理器执行时,执行所述操作。通常,计算机可执行指令包括执行特定函数或实现特定数据类型的例程、程序、对象、组件、数据结构等。操作被描述的次序不旨在被解释为限制,并且任何数量的所描述的操作可以以任何次序和/或并行地组合以实现处理。
[0077] 另外,处理400可以在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以被实现为在一个或多个处理器上集体执行、由硬件或其组合集体执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)。如上所述,代码可以例如以包括可由一个或多个处理器执行的多条指令的计算机程序的形式存储在机器可读存储介质上。机器可读存储介质可以是非瞬态的。
[0078] 在步骤410处,处理400包括接收包。包可以包括一个或多个实体的逻辑分组。实体可以是移动后端、API、API实现、存储集合和/或连接器。在一些示例中,包可以包括第一文件集和第二文件集。第一文件集可以具有用于创建API的逻辑(例如,API定义)和将API与后端服务连接的逻辑(例如,连接器)。第二文件集可以具有软件代码。软件代码可以是用户定义的代码(用高级编程语言编写)。API可以定义到用户定义代码的入口点。在一些示例中,包也可以包括指示API如何与软件代码对应的绑定。例如,绑定可以指示来自API的调用导致执行软件代码的特定部分。绑定可以是元数据。
[0079] 在步骤420处,处理400包括从包中提取第一文件集和第二文件集。在一些示例中,包可以包括至少两个存档文件包。两个存档文件包的内容彼此交叉引用。每个存档文件包可以与不同的实体集相关联。在一些示例中,不同的实体集可以是不同的类型。
[0080] 在步骤430处,处理400包括使用第一文件集中的逻辑来创建API。可以在移动云服务环境中创建API。在步骤440处,处理400包括使用用于将API与后端系统连接的逻辑将API与云服务中的后端服务连接。
[0081] 在步骤450处,处理400包括在云服务的用户空间中执行第二文件集的软件代码。云服务的用户空间可以是目标移动云服务环境。
[0082] 图5是图示用于响应来自移动设备上的客户端侧应用对服务器侧应用的请求的处理500的示例的流程图。在一些方面,处理500可以由移动云服务执行。处理500被示为逻辑流图,其操作表示可以用硬件、计算机指令或其组合实现的一系列操作。在计算机指令的上下文中,操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,该指令在由一个或多个处理器执行时,执行所述操作。通常,计算机可执行指令包括执行特定函数或实现特定数据类型的例程、程序、对象、组件、数据结构等。操作被描述的次序不旨在被解释为限制,并且任何数量的所描述的操作可以以任何次序和/或并行地组合以实现处理。
[0083] 此外,处理500可以在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以被实现为在一个或多个处理器上集体执行、由硬件或其组合集体执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)。如上所述,代码可以例如以包括可由一个或多个处理器执行的多条指令的计算机程序的形式存储在机器可读存储介质上。机器可读存储介质可以是非瞬态的。
[0084] 在步骤510处,处理500包括通过防火墙接收来自移动设备的请求。防火墙可以与移动云服务相关联。在一些示例中,该请求可以由移动设备上的客户端侧应用发送。请求可以包括应该处理该请求的后端系统(或服务器侧应用)的标识符。请求可以针对内容、处理或可以从移动设备卸载到远程服务器的一些其它操作。
[0085] 在步骤520处,处理500包括根据第一虚拟机中的逻辑使用API将请求分派给软件代码。在一些示例中,API可以与防火墙外部的后端服务连接。在一些示例中,第一虚拟机中的逻辑可以处理请求的初始解析以找出分派请求的地方。例如,第一虚拟机中的逻辑可以识别与请求相关联的移动后端。第一虚拟机中的逻辑也可以识别API。在一些示例中,可以将请求分派给第二虚拟机。第二虚拟机可以是软件代码正在执行的地方。在一些示例中,软件代码可以在用户沙盒区域中执行,与移动云服务的其它部分隔离。
[0086] 在步骤530处,处理500包括使用软件代码生成对请求的响应。响应可以基于软件代码中的逻辑。在一些示例中,软件代码可以使用后端系统来生成响应。例如,软件代码可以使用数据库来接收用于响应请求的信息。
[0087] 在步骤540处,处理500包括将来自后端服务的响应路由到移动设备。在一些示例中,响应从第二虚拟机路由到第一虚拟机。然后,第一虚拟机可以将响应路由到移动设备上的客户端侧应用。
[0088] 图6图示了实体之间的关系的示例。在一些示例中,包(如上所述)可以创建移动云服务环境中的实体之间的关系,使得可以将一个或多个实体导出并导入到不同的移动云服务环境中。
[0089] 图6的示例包括策略620。策略620可以是特定于环境的配置。策略620可以包括一个或多个特性(例如,名称和值)。可以在元数据中通过给定工件(artifact)来引用名称,以添加特定于环境的配置。策略的示例包括会话属性和环境属性。在一些示例中,可以自动选择策略620以对应于一个或多个所选择的实体。
[0090] 策略620可以保持在环境620中。环境620可以与客户可以具有的不同类型的环境相关联。例如,环境620可以是测试、开发、生产或其它类型的环境。在一些示例中,环境可以与其它环境隔离。在一些示例中,环境可以是自包含的(例如,环境可以包括其在环境的数据库中的所有数据)。在一些示例中,环境620不是实体,并且不能被选择也不能被包括在包中。在这样的示例中,包被安装到环境中,这导致环境620被定义。
[0091] 策略620可以与移动后端630相关联。移动后端630可以是由用户选择的实体或者通过上面讨论的依赖性分析确定的实体。移动后端630可以包括一个或多个特性(例如,名称和移动后端(MBE)令牌)。
[0092] 移动后端620可以与一个或多个存储集合(例如,移动对象存储库(MOS)集合632和用户集合634)相关联。在一些示例中,移动后端620可以使用MOS集合632。MOS集合632可以为移动后端620提供存储容器。MOS集合632可以包括框架版本号以确保跨移动云服务补丁的兼容性。MOS集合632可以提供可经由MOS API访问的一组用户定义命名的和版本化的集合。
[0093] 一个或多个存储集合可以是实例数据的示例。实例数据可以是特定于环境的运行时数据。实例数据通常由客户或框架代码在运行时创建。在一些示例中,可以通过使用脚本或特别支持的操作在配置时创建实例数据。一个或多个存储集合内部的数据可以或可以不与包一起导出。一个或多个存储集合可以由用户选择或者通过上面讨论的依赖性分析来确定。
[0094] 在一些示例中,MOS集合623中的用户数据可以通过角色与用户集合634中的用户数据相关。这种用户数据通常在导出MOS集合623时不被传输。
[0095] 移动后端620可以包括API 638。在一些示例中,API 638可以由驻留在元数据储存库中的RESTful API建模语言(RAML)文档来定义。API 638可以将RAML文档存储在工件644中。工件644可以是内部地存储数据的系统。如上所述,软件代码也可以存储在工件644中。API 638可以由用户选择或者通过上面讨论的依赖性分析来确定。
[0096] API可以包括对API实现640的绑定642。绑定642可以指示用户定义的代码的入口点。入口点可以用于一个或多个API。绑定可以是元数据。绑定642可以被包括在包中的元数据中。
[0097] API实现640可以实现API 638。例如,API实现642可以提供API 638的版本的实际实现。在一些示例中,API实现642可以经由策略610与API 638相关联,从而导致环境级别关联。由于环境可以部署多个移动后端,因此可以在环境中部署同一API的多个版本,从而导致可以在任何时间(经由策略)部署和映射的多个实现版本。API实现可以由用户选择或者通过上面讨论的依赖性分析来确定。
[0098] 连接器646可以产生API 638和/或API实现640。连接器646可以是API、配置和相关联的服务/定制代码实现的混合。连接器646可以由用户选择或者通过上面讨论的依赖性分析来确定。
[0099] 图7描绘了分布式系统700的简化图。分布式系统700包括一个或多个客户端计算设备702、704、706和708,这些客户端计算设备被配置为通过一个或多个网络710执行和操作客户端应用,诸如web浏览器、专有客户端(例如,Oracle Forms)等。服务器712可以经由网络710与远程客户端计算设备702、704、706和708通信地耦合。
[0100] 在各种示例中,服务器712可以适于运行由系统的一个或多个组件提供的一个或多个服务或软件应用。服务或软件应用可以包括非虚拟环境和虚拟环境。虚拟环境可以包括用于虚拟事件、商业展览、模拟器、教室、购物交换和企业的虚拟环境,无论是二维或三维(3D)表示、基于页面的逻辑环境还是其它。在一些示例中,这些服务可以作为基于web的服务或云服务或者在软件即服务(SaaS)模型下被供应给客户端计算设备702、704、706和/或708的用户。操作客户端计算设备702、704、706和/或708的用户进而可以利用一个或多个客户端应用来与服务器712进行交互以利用由这些组件提供的服务。
[0101] 在图中绘出的配置中,系统700的软件组件718、720和722被示出为在服务器712上实现。在其它示例中,系统700的一个或多个组件和/或由这些组件提供的服务也可以由客户端计算设备702、704、706和/或708中的一个或多个来实现。然后,操作客户端计算设备的用户可以利用一个或多个客户端应用来使用由这些组件提供的服务。这些组件可以用硬件、固件、软件或其组合来实现。应该认识到的是,各种不同的系统配置是可能的,这些配置可能与分布式系统800不同。图中所示的示例因此是用于实现示例系统的分布式系统的一个示例,而不旨在是限制性的。
[0102] 客户端计算设备702、704、706和/或708可以是便携式手持设备(例如,蜂窝电话、 计算平板电脑、个人数字助理(PDA))或可穿戴设备(例如,谷歌眼镜(Google )头戴式显示器),运行诸如Microsoft Windows
和/或各种移动操作系统(诸如iOS、Windows Phone、Android、BlackBerry 10、Palm OS等)的软件,并且启用互联网、电子邮件、短消息服务(SMS)、 或其它通信协议。
客户端计算设备可以是通用个人计算机,作为示例,包括运行各种版本的MicrosoftApple 和/或Linux操作系统的个人计算机和/或膝上型计
算机。客户端计算设备可以是运行各种可商业获得的 或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统,诸如例如Google Chrome OS)中的任何操作系统的工作站计算机。替代地或附加地,客户端计算设备702、704、706和708可以是能够通过(一个或多个)网络710进行通信的任何其它电子设备,诸如瘦客户端计算机、启用互联网的游戏系统(例如,具有或不具有 手势输入设备的Microsoft Xbox游戏控制台)和/或个人消息传送设备。
[0103] 虽然示出了具有四个客户端计算设备的示例性分布式系统700,但是可以支持任何数量的客户端计算设备。其它设备(诸如具有传感器等的设备等)可以与服务器712进行交互。
[0104] 分布式系统700中的(一个或多个)网络710可以是本领域技术人员熟悉的、可以使用各种可商业获得的协议中的任何协议来支持数据通信的任何类型的网络,其中协议包括但不限于TCP/IP(传输控制协议/互联网协议)、SNA(系统网络体系架构)、IPX(互联网分组交换)、AppleTalk等。仅仅作为示例,(一个或多个)网络710可以是局域网(LAN),诸如基于以太网、令牌环等的LAN。(一个或多个)网络710可以是广域网和互联网。它可以包括虚拟网络,包括但不限于虚拟专用网络(VPN)、内联网、外联网、公共交换电话网(PSTN)、红外网络、无线网络(例如,依据电气和电子协会(IEEE)802.11协议套件、 和/或任何其它无线协议中的任何协议而操作的网络);和/或这些网络和/或其它网络的任何组合。
[0105] 服务器712可以由一个或多个通用计算机、专用服务器计算机(作为示例,包括PC(个人计算机)服务器、 服务器、中档服务器、大型计算机、机架安装的服务器等)、服务器场、服务器集群或任何其它适当的布置和/或组合组成。服务器712可以包括运行虚拟操作系统的一个或多个虚拟机,或涉及虚拟化的其它计算体系架构。可以虚拟化一个或多个灵活的逻辑存储设备池以维护用于服务器的虚拟存储设备。虚拟网络可以由服务器712使用软件定义的网络来控制。在各种示例中,服务器712可以适于运行在前述公开中描述的一个或多个服务或软件应用。例如,服务器712可以与用于执行以上根据本公开的示例描述的处理的服务器对应。
[0106] 服务器712可以运行包括以上讨论的任何操作系统的操作系统,以及任何可商业获得的服务器操作系统。服务器712还可以运行各种附加的服务器应用和/或中间层应用中的任何应用,包括HTTP(超文本传输协议)服务器、FTP(文件传输协议)服务器、CGI(公共网关接口)服务器、 服务器、数据库服务器等。示例性数据库服务器包括但不限于可从Oracle、Microsoft、Sybase、IBM(国际商业机器)等商业获得的那些数据库服务器。
[0107] 在一些实现中,服务器712可以包括一个或多个应用,以分析和整合从客户端计算设备702、704、706和708的用户接收到的数据馈送和/或事件更新。作为示例,数据馈送和/或事件更新可以包括但不限于, 馈送、 更新或者从一个或多个第三方信息源和连续数据流接收到的实时更新,实时更新可以包括与传感器数据应用、金融价格收报机(financial ticker)、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车流量监视等相关的实时事件。服务器712还可以包括一个或多个应用,以经由客户端计算设备702、704、706和708的一个或多个显示设备来显示数据馈送和/或实时事件。
[0108] 分布式系统700还可以包括一个或多个数据库714和716。数据库714和716可以驻留在各种位置。作为示例,数据库714和716中的一个或多个可以驻留在服务器712本地(和/或驻留在服务器712中)的非瞬态存储介质上。可替代地,数据库714和716可以远离服务器712并且经由基于网络的连接或专用的连接与服务器712进行通信。在一组示例中,数据库
714和716可以驻留在存储区域网络(SAN)中。类似地,用于执行服务器712所具有的功能的任何必要文件都可以适当地本地存储在服务器712上和/或远程存储。在一组示例中,数据库714和716可以包括适于响应SQL格式化命令而存储、更新和检索数据的关系数据库,诸如由Oracle提供的数据库。
[0109] 图8是系统环境800的一个或多个组件的简化框图,通过该环境,由一个或多个组件提供的服务可以作为云服务被供应。在所示示例中,系统环境800包括可以由用户使用以与提供云服务的云基础设施系统802进行交互的一个或多个客户端计算设备804、806和808。客户端计算设备可以被配置为操作客户端应用,诸如web浏览器、专有客户端应用(例如,Oracle Forms)或某种其它应用,这些应用可以由客户端计算设备的用户用来与云基础设施系统802进行交互以使用由云基础设施系统802提供的服务。
[0110] 应该认识到的是,图中描绘的云基础设施系统802可以具有除了所描绘的那些组件之外的其它组件。另外,图中所示的示例仅是可以结合本公开的示例的云基础设施系统的一个示例。在一些其它示例中,云基础设施系统802可以具有比图中所示更多或更少的组件、可以组合两个或更多个组件、或者可以具有不同的组件配置或布置。
[0111] 客户端计算设备804、806和808可以是与上面针对702、704、706和708所描述的设备类似的设备。虽然示例性系统环境800被示出具有三个客户端计算设备,但是可以支持任何数量的客户端计算设备。其它设备(诸如具有传感器的设备等)可以与云基础设施系统802进行交互。
[0112] (一个或多个)网络810可以促进客户端804、806和808与云基础设施系统802之间的通信和数据交换。每个网络可以是本领域技术人员熟悉的、可以使用各种可商业获得的协议(包括上面针对(一个或多个)网络710所描述的那些协议)中的任何协议支持数据通信的任何类型的网络。
[0113] 云基础设施系统802可以包括一个或多个计算机和/或服务器,服务器可以包括上面针对服务器712描述的那些服务器。
[0114] 在某些示例中,由云基础设施系统提供的服务可以包括按需对云基础设施系统的用户可用的许多服务,诸如在线数据存储和备份解决方案、基于Web的电子邮件服务、被托管的办公室套件(office suite)和文档协作服务、数据库处理、受管理的技术支持服务等。由云基础设施系统提供的服务可以动态扩展以满足云基础设施系统的用户的需要。由云基础设施系统提供的服务的具体实例化在本文中被称为“服务实例”。一般而言,从云服务提供商的系统经由通信网络(诸如互联网)对用户可用的任何服务被称为“云服务”。通常,在公共云环境中,构成云服务提供商的系统的服务器和系统与客户自己的场所内服务器和系统不同。例如,云服务提供商的系统可以托管应用,并且用户可以经由诸如互联网的通信网络按需订购和使用应用。
[0115] 在一些示例中,计算机网络云基础设施中的服务可以包括对存储装置、被托管的数据库、被托管的web服务器、软件应用或由云供应商向用户提供的其它服务的受保护的计算机网络访问,或者如本领域中另外已知的。例如,服务可以包括通过互联网对云上的远程存储装置进行密码保护的访问。作为另一个示例,服务可以包括基于web服务的被托管的关系数据库和脚本语言中间件引擎,以供联网的开发人员私有使用。作为另一个示例,服务可以包括对在云供应商的网站上托管的电子邮件软件应用的访问。
[0116] 在某些示例中,云基础设施系统802可以包括以自助服务、基于订阅、弹性可扩展、可靠、高度可用和安全的方式被递送给客户的中间件、数据库服务供应和应用的套件。这种云基础设施系统的示例是由本受让人提供的Oracle公共云。
[0117] 基础设施系统可以在许多级别上和以不同规模托管和/或操纵大量数据(有时被称为大数据)。这样的数据可以包括如此之大且复杂的数据集,该数据集可能难以使用典型的数据库管理工具或传统的数据处理应用进行处理。例如,数据太字节(terabytes)的数据可能难以使用个人计算机或其基于机架的对应物进行存储、检索和处理。这样大小的数据可能难以使用大多数当前的关系数据库管理系统和桌面统计以及可视化软件包一起工作。它们可能要求运行数千台服务器计算机的大规模并行处理软件,这超出常用软件工具的结构来在可容忍的时间内捕获、驾驭(curate)、管理和处理数据。
[0118] 分析人员和研究人员可以存储和操纵极大的数据集以可视化大量数据、检测趋势和/或以其它方式与数据进行交互。并行链接的数十、数百或数千个处理器可以对这些数据起作用,以便呈现数据或模拟数据上的外力或数据表示的内容。这些数据集可以涉及诸如在数据库中或者以其它方式根据结构化模型组织的结构化数据,和/或非结构化数据(例如,电子邮件、图像、数据blob(二进制大对象)、网页、复杂事件处理)。通过利用相对快速地将更多(或更少)计算资源集中在目标上的示例的能力,云基础设施系统可以更好地用于基于来自企业、政府机关、研究组织、私有个人、志同道合的个人团体或组织、或其它实体的需求对大型数据集执行任务。
[0119] 在各种示例中,云基础设施系统802可以适于自动供给、管理和跟踪客户对云基础设施系统802供应的服务的订阅。云基础设施系统802可以经由不同的部署模型来提供云服务。例如,可以依据公共云模型提供服务,其中云基础设施系统802被销售云服务的组织拥有(例如,被Oracle拥有),并且服务对一般公众或不同行业的企业可用。作为另一个示例,可以依据私有云模型来提供服务,其中云基础设施系统802仅针对单个组织进行操作,并且可以为该组织内的一个或多个实体提供服务。还可以依据社区云模型来提供云服务,其中云基础设施系统802和由云基础设施系统802提供的服务由相关社区中的若干组织共享。还可以依据混合云模型提供云服务,该混合云模型是两个或更多个不同模型的组合。
[0120] 在一些示例中,由云基础设施系统802提供的服务可以包括在软件即服务(SaaS)类别、平台即服务(PaaS)类别、基础设施即服务(IaaS)类别或包括混合服务的其它服务类别下提供的一个或多个服务。客户经由订阅订单可以订购由云基础设施系统802提供的一个或多个服务。云基础设施系统802然后执行处理以提供客户的订阅订单中的服务。
[0121] 在一些示例中,由云基础设施系统802提供的服务可以包括但不限于应用服务、平台服务和基础设施服务。在一些示例中,应用服务可以由云基础设施系统经由SaaS平台提供。SaaS平台可以被配置为提供落入SaaS类别的云服务。例如,SaaS平台可以提供在集成开发和部署平台上构建和递送按需应用套件的能力。SaaS平台可以管理和控制用于提供SaaS服务的底层软件和基础设施。通过利用由SaaS平台提供的服务,客户可以利用在云基础设施系统上执行的应用。客户可以获取应用服务,而无需客户购买单独许可证和支持。可以提供各种不同的SaaS服务。示例包括但不限于为大型组织提供销售绩效管理、企业集成和商务灵活性的解决方案的服务。
[0122] 在一些示例中,平台服务可以由云基础设施系统经由PaaS平台提供。PaaS平台可以被配置为提供落入PaaS类别的云服务。平台服务的示例可以包括但不限于使组织(诸如Oracle)能够在共享的公共体系架构上整合现有应用以及充分利用平台提供的共享服务来构建新应用的能力的服务。PaaS平台可以管理和控制用于提供PaaS服务的底层软件和基础设施。客户可以获取由云基础架构系统提供的PaaS服务,而无需客户购买单独的许可证和支持。平台服务的示例包括但不限于Oracle Java云服务(JCS)、Oracle数据库云服务(DBCS)等。
[0123] 通过利用由PaaS平台提供的服务,客户可以采用由云基础设施系统支持的编程语言和工具,并且还控制所部署的服务。在一些示例中,由云基础设施系统提供的平台服务可以包括数据库云服务、中间件云服务(例如,Oracle融合中间件服务)和Java云服务。在一个示例中,数据库云服务可以支持共享服务部署模型,该模型使得组织能够汇集数据库资源并且以数据库云的形式向客户供应数据库即服务。中间件云服务可以为客户提供开发和部署各种商务应用的平台,并且Java云服务可以为客户提供在云基础设施系统中部署Java应用的平台。
[0124] 各种不同的基础设施服务可以由云基础设施系统中的IaaS平台提供。基础设施服务促进底层计算资源(诸如存储装置、网络和其它基础计算资源)的管理和控制,以供客户利用由SaaS平台和PaaS平台提供的服务。
[0125] 在某些示例中,云基础设施系统802还可以包括基础设施资源830,用于向云基础设施系统的客户提供用于提供各种服务的资源。在一个示例中,基础设施资源830可以包括预先集成和优化的硬件(诸如服务器、存储装置和联网资源)的组合,以执行由PaaS平台和SaaS平台提供的服务。
[0126] 在一些示例中,云基础设施系统802中的资源可以由多个用户共享并且根据需要被动态重新分配。此外,可以将资源分配给在不同时区中的用户。例如,云基础设施系统930可以使在第一时区中的第一用户集能够在指定的小时数内利用云基础设施系统的资源,并且然后使相同资源能够被重新分配给位于不同时区中的另一个用户集,从而使资源的利用率最大化。
[0127] 在某些示例中,可以提供由云基础设施系统802的不同组件或模块以及由云基础设施系统802提供的服务共享的多个内部共享服务832。这些内部共享服务可以包括但不限于:安全和身份服务、集成服务、企业储存库服务、企业管理器服务、病毒扫描和白名单服务、高可用性、备份和恢复服务、启用云支持的服务、电子邮件服务、通知服务、文件传输服务等。
[0128] 在某些示例中,云基础设施系统802可以提供云基础设施系统中的云服务(例如,SaaS服务、PaaS服务和IaaS服务)的综合管理。在一个示例中,云管理功能可以包括用于供给、管理和跟踪由云基础设施系统802接收到的客户订阅等的能力。
[0129] 在一个示例中,如图中所绘出的,云管理功能可以由一个或多个模块(诸如订单管理模块820、订单编排(orchestration)模块822、订单供给模块824、订单管理和监视模块826,以及身份管理模块828)提供。这些模块可以包括一个或多个计算机和/或服务器或者使用一个或多个计算机和/或服务器被提供,这些计算机和/或服务器可以是通用计算机、专用服务器计算机、服务器场、服务器集群或任何其它适当的布置/或组合。
[0130] 在示例性操作834中,使用客户端设备(诸如客户端设备804、806或808)的客户可以通过请求由云基础设施系统802提供的一个或多个服务并且下订阅由云基础设施系统802供应的一个或多个服务来的订单来与云基础设施系统802进行交互。在某些示例中,客户可以访问云用户界面(UI)、云UI 812、云UI 814和/或云UI 816并经由这些UI下订阅订单。云基础设施系统802响应于客户下订单而接收到的订单信息可以包括识别客户以及客户想要订阅的由云基础设施系统802供应的一个或多个服务的信息。
[0131] 在客户已经下订单之后,经由云UI 812、814和/或816接收订单信息。
[0132] 在操作836处,订单存储在订单数据库818中。订单数据库818可以是由云基础设施系统818操作和与其它系统元件一起操作的若干数据库中的一个数据库。
[0133] 在操作838处,订单信息被转发到订单管理模块820。在一些情况下,订单管理模块820可以被配置为执行与订单相关的计费和记账功能,诸如验证订单,并且在验证后,预订订单。
[0134] 在操作840处,将关于订单的信息传送到订单编排模块822。订单编排模块822可以利用订单信息为客户下的订单编排服务和资源的供给。在一些情况下,订单编排模块822可以使用订单供给模块824的服务来编排资源的供给以支持所订阅的服务。
[0135] 在某些示例中,订单编排模块822使得能够管理与每个订单相关联的业务流程并应用业务逻辑来确定订单是否应该进行到供给。在操作842处,在接收到新订阅的订单时,订单编排模块822向订单供给模块824发送请求以分配资源并配置履行订阅订单所需的那些资源。订单供给模块824使得能够为客户订购的服务分配资源。订单供给模块824提供由云基础设施系统800提供的云服务和用于供给用于提供所请求的服务的资源的物理实现层之间的抽象层。因此,订单编排模块822可以与实现细节隔离,诸如服务和资源是否实际上即时供给或预先供给并仅在请求后才分配/指派。
[0136] 在操作844处,一旦供给了服务和资源,就可以通过云基础设施系统802的订单供给模块824向客户端设备804、806和/或808上的客户发送所提供服务的通知。
[0137] 在操作846处,订单管理和监视模块826可以管理和跟踪客户的订阅订单。在一些情况下,订单管理和监视模块826可以被配置为收集订阅订单中的服务的使用统计,诸如,所使用的存储量、传输的数据量、用户的数量,以及系统运行时间量和系统停机时间量。
[0138] 在某些示例中,云基础设施系统800可以包括身份管理模块828。身份管理模块828可以被配置为提供身份服务,诸如云基础设施系统800中的访问管理和授权服务。在一些示例中,身份管理模块828可以控制关于希望利用由云基础设施系统802提供的服务的客户的信息。这样的信息可以包括认证这些客户的身份的信息以及描述这些客户被授权相对于各种系统资源(例如,文件、目录、应用、通信端口、存储器段等)执行哪些动作的信息。身份管理模块828还可以包括对关于每个客户的描述性信息以及关于如何和由谁来访问和修改该描述性信息的管理。
[0139] 图9图示了示例性计算机系统900,其中可以实现本发明的各种示例。系统900可以用于实现上述计算机系统中的任何计算机系统。如图所示,计算机系统900包括经由总线子系统902与多个外围子系统进行通信的处理单元904。这些外围子系统可以包括处理加速单元906、I/O子系统908、存储子系统918和通信子系统924。存储子系统918包括有形计算机可读存储介质922和系统存储器910。
[0140] 总线子系统902提供用于让计算机系统900的各种组件和子系统按意图彼此进行通信的机制。虽然总线子系统902被示意性地示出为单条总线,但是总线子系统的替代示例可以利用多条总线。总线子系统902可以是若干种类型的总线结构中的任何类型,这些总线类型包括存储器总线或存储器控制器、外围总线、以及使用各种总线体系架构中的任何体系架构的局部总线。例如,这种体系架构可以包括工业标准体系架构(ISA)总线、微通道体系架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和外围组件互连(PCI)总线,这些总线可以被实现为按IEEE P1386.1标准制造的Mezzanine总线。
[0141] 可以被实现为一个或多个集成电路(例如,常规微处理器或微控制器)的处理单元904控制计算机系统900的操作。一个或多个处理器可以被包括在处理单元904中。这些处理器可以包括单核处理器或多核处理器。在某些示例中,处理单元904可以被实现为一个或多个独立的处理单元932和/或934,其中在每个处理单元中包括单核处理器或多核处理器。在其它示例中,处理单元904也可以被实现为通过将两个双核处理器集成到单个芯片中形成的四核处理单元。
[0142] 在各种示例中,处理单元904可以响应于程序代码执行各种程序并且可以维护多个并发执行的程序或进程。在任何给定的时间,将被执行的程序代码中的一些或全部代码可以驻留在(一个或多个)处理器904中和/或存储子系统918中。通过适当的编程,(一个或多个)处理器904可以提供上述各种功能。计算机系统900可以附加地包括处理加速单元906,该处理加速单元906可以包括数字信号处理器(DSP)、专用处理器等。
[0143] I/O子系统908可以包括用户接口输入设备和用户接口输出设备。用户接口输入设备可以包括键盘、诸如鼠标或轨迹球的指向设备、结合到显示器中的触摸板或触摸屏、滚动轮、点击轮、拨盘、按钮、开关、小键盘、具有语音命令辨识系统的音频输入设备、麦克风以及其它类型的输入设备。用户接口输入设备可以包括,例如,运动感测和/或手势辨识设备,诸如Microsoft 运动传感器,该运动传感器使得用户能够通过使用手势和语音命令的自然用户接口来控制诸如Microsoft 360游戏控制器的输入设备并与该输入设备交互。用户接口输入设备也可以包括眼睛姿势辨识设备,诸如从用户检测眼睛活动(例如,当拍摄照片和/或进行菜单选择时的“眨眼”)并且将眼睛姿势变换为进入输入设备(例如,谷歌眼镜)中的输入的谷歌眼镜眨眼检测器。此外,用户接口输入设备可以包括使用户能够通过语音命令与语音辨识系统(例如, 导航器)进行交互的语音辨识感测设备。
[0144] 用户接口输入设备也可以包括但不限于:三维(3D)鼠标、操纵杆或指向棒(pointing stick)、游戏面板和绘图板,以及音频/视觉设备,诸如扬声器、数码相机、数码摄录机、便携式媒体播放器、网络摄像头、图像扫描仪、指纹扫描仪、条形码阅读器3D扫描仪、3D打印机、激光测距仪和视线跟踪设备。此外,用户接口输入设备可以包括,例如,医学成像输入设备,诸如计算断层显像、磁共振成像、正电子发射断层显像、医疗超声设备。用户接口输入设备也可以包括,例如,诸如MIDI键盘、数字乐器等的音频输入设备。
[0145] 用户接口输出设备可以包括显示子系统、指示灯,或者诸如音频输出设备的非可视显示器等。显示子系统可以是阴极射线管(CRT)、诸如使用液晶显示器(LCD)或等离子显示器的平板设备、投影设备、触摸屏等。一般而言,术语“输出设备”的使用旨在包括用于从计算机系统900向用户或其它计算机输出信息的所有可能类型的设备和机制。例如,用户接口输出设备可以包括但不限于:可视地传达文本、图形和音频/视频信息的各种显示设备,诸如监视器、打印机、扬声器、耳机、汽车导航系统、绘图仪、语音输出设备以及调制解调器。
[0146] 计算机系统900可以包括包含软件元件的被示出为当前位于系统存储器910内的存储子系统918。系统存储器910可以存储在处理单元904上可执行以及可加载的程序指令,以及在这些程序的执行期间所生成的数据。
[0147] 取决于计算机系统900的配置和类型,系统存储器910可以是易失性的(诸如随机存取存储器(RAM))和/或非易失性的(诸如只读存储器(ROM)、闪存存储器等)。RAM通常包含可被处理单元904立即访问和/或目前正在被处理单元904操作和执行的数据和/或程序模块。在一些实现中,系统存储器910可以包括多种不同类型的存储器,例如静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。在一些实现中,诸如在启动期间,包含有助于在计算机系统900内的元件之间传送信息的基本例程的基本输入/输出系统(BIOS)通常可以被存储在ROM中。作为示例但不是限制,系统存储器910也示出了可以包括客户端应用、Web浏览器、中间层应用、关系数据库管理系统(RDBMS)等的应用程序912、程序数据914、以及操作系统916。作为示例,操作系统916可以包括各种版本的Microsoft Apple和/或Linux操作系统、各种可商业获得的 或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统、Google OS等)和/或诸如iOS、
Phone、 OS、 10OS和 OS操作系统的移
动操作系统
[0148] 存储子系统918也可以提供用于存储提供一些示例的功能的基本编程和数据结构的有形计算机可读存储介质。当被处理器执行时提供上述功能的软件(程序、代码模块、指令)可以被存储在存储子系统918中。这些软件模块或指令可以被处理单元904执行。存储子系统918也可以提供用于存储根据本发明被使用的数据的储存库。
[0149] 存储子系统900也可以包括可被进一步连接到计算机可读存储介质922的计算机可读存储介质读取器920。与系统存储器910一起组合并且可选地与系统存储器910组合,计算机可读存储介质922可以全面地表示用于临时和/或更持久地包含、存储、发送和检索计算机可读信息的远程、本地、固定和/或可移动的存储设备加存储介质。
[0150] 包含代码或代码的一部分的计算机可读存储介质922也可以包括本领域已知或使用的任何适当的介质,包括存储介质和通信介质,诸如但不限于:以用于信息的存储和/或传输的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。这可以包括有形的非瞬态计算机可读存储介质,诸如RAM、ROM、电可擦除可编程ROM(EEPROM)、闪存存储器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学储存装置、磁带盒、磁带、磁盘储存装置或其它磁存储设备、或者其它有形计算机可读介质。当指定时,这也可以包括非有形的瞬态计算机可读介质,诸如数据信号、数据传输,或者可以用于发送期望信息并且可以被计算系统900访问的任何其它介质。
[0151] 作为示例,计算机可读存储介质922可以包括从不可移动的非易失性磁介质读取或写入到不可移动的非易失性磁介质的硬盘驱动器、从可移动的非易失性磁盘读取或写入到可移动的非易失性磁盘的磁盘驱动器、以及从可移动的非易失性光盘(诸如CD ROM、DVD和蓝光 盘或其它光学介质)读取或写入到可移动的非易失性光盘的光盘驱动器。计算机可读存储介质1022可以包括但不限于: 驱动器、闪存卡、通用串行总线(USB)闪存驱动器、安全数字(SD)卡、DVD盘、数字音频带等。计算机可读存储介质1022也可以包括:基于非易失性存储器的固态驱动器(SSD)(诸如基于闪存存储器的SSD、企业闪存驱动器、固态ROM等)、基于易失性存储器的SSD(诸如固态RAM、动态RAM、静态RAM,基于DRAM的SSD、磁阻RAM(MRAM)SSD)、以及使用基于DRAM和闪存存储器的SSD的组合的混合SSD。盘驱动器及其关联的计算机可读介质可以为计算机系统900提供计算机可读指令、数据结构、程序模块以及其它数据的非易失性存储。
[0152] 通信子系统924提供到其它计算机系统和网络的接口。通信子系统924用作用于从其它系统接收数据和从计算机系统900向其它系统发送数据的接口。例如,通信子系统924可以使计算机系统900能够经由互联网连接到一个或多个设备。在一些示例中,通信子系统924可以包括用于访问无线语音和/或数据网络的射频(RF)收发器组件(例如,使用蜂窝电话技术、先进数据网络技术,诸如3G、4G或EDGE(用于全球演进的增强型数据速率)、WiFi(IEEE 802.11系列标准)或其它移动通信技术、或者其任何组合)、全球定位系统(GPS)接收器组件和/或其它组件。在一些示例中,作为无线接口的附加或者替代,通信子系统924可以提供有线网络连接(例如,以太网)。
[0153] 在一些示例中,通信子系统924也可以代表可以使用计算机系统900的一个或多个用户来接收以结构化和/或非结构化数据馈送926、事件流928、事件更新930等形式的输入通信。
[0154] 作为示例,通信子系统924可以被配置为实时地从社交媒体网络和/或其它通信服务的用户接收数据馈送926,诸如 馈送、 更新、诸如丰富站点摘要(RSS)馈送的web馈送和/或来自一个或多个第三方信息源的实时更新。
[0155] 此外,通信子系统924也可以被配置为接收以连续数据流形式的数据,该数据可以包括本质上可以是连续的或无界的没有明确终止的实时事件的事件流928和/或事件更新930。生成连续数据的应用的示例可以包括,例如,传感器数据应用、金融价格收报机、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车流量监视等。
[0156] 通信子系统924也可以被配置为向一个或多个数据库输出结构化和/或非结构化的数据馈送926、事件流928、事件更新930等,这一个或多个数据库可以与耦合到计算机系统900的一个或多个流式数据源计算机进行通信。
[0157] 计算机系统900可以是各种类型中的一种类型,包括手持便携式设备(例如,蜂窝电话、 计算平板电脑、PDA)、可穿戴设备(例如,谷歌眼镜头戴式显示器)、PC、工作站、大型机、信息站(kiosk)、服务器机架、或任何其它数据处理系统。
[0158] 由于计算机和网络的不断变化的本质,在图中绘出的计算机系统900的描述仅旨在作为具体的示例。具有比图中绘出的系统更多或更少组件的许多其它配置是可能的。例如,定制的硬件也可以被使用和/或特定的元件可以在硬件、固件、软件(包括小应用程序(applets))或组合中实现。进一步地,可以采用到诸如网络输入/输出设备的其它计算设备的连接。基于本文提供的公开内容和教导,本领域普通技术人员将认识到实现各种示例的其它方式和/或方法。
[0159] 在前述说明书中,参考各方面的具体示例对各方面进行了描述,但本领域技术人员将认识到的是,本描述不限于此。上述各个特征和方面可以被单独使用或联合使用。另外,在不脱离本说明书的更广泛精神和范围的情况下,示例可以在除本文所述的那些环境和应用之外的任何数目的环境和应用中被使用。对应地,本说明书和附图应当被认为是说明性的而不是限制性的。