信息埋点方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及信息埋点方法及装置。
背景技术
在应用前端针对应用后端的相关信息进行埋点,是快速定位应用故障源的有效手段。
在现有技术中,上述的埋点以应用前端的页面加载为单位进行,具体包括:每当应用前端的页面加载时,获取应用后端的相关信息(比如,运行时信息等),并写入应用前端,其中,页面加载可以包括应用启动导致的页面加载、运行过程中的页面跳转导致的页面加载等。
但是,上述现有技术只适用于多页面应用,而不适用于单页面应用,进而不利于基于埋点定位单页面应用故障源。原因在于单页面应用仅会在应用启动时进行一次页面加载,后续用户对应用进行操作也不会导致页面跳转,进而应用前端也不会再重新加载页面,而只是根据应用后端的反馈对页面进行局部修改。
发明内容
本申请实施例提供信息埋点方法及装置,用以解决现有技术中对于在应用前端针对应用后端的相关信息进行埋点所采用的方案只适用于多页面应用,而不适用于单页面应用的问题。
本申请实施例采用下述技术方案:
本申请实施例提供的一种信息埋点方法,包括:
发送处理请求给应用后端;
接收所述应用后端针对所述处理请求的返回结果,所述返回结果中包含所述应用后端通过执行后端埋点逻辑所获取的相关信息;
根据所述返回结果执行对应于所述后端埋点逻辑的前端埋点逻辑,以获得所述相关信息并写入应用前端。
本申请实施例提供的另一种信息埋点方法,包括:
接收应用前端的处理请求;
应用后端对所述处理请求进行处理以及执行后端埋点逻辑,得到所述处理请求的返回结果,所述返回结果中包含通过所述执行后端埋点逻辑所获取的相关信息;
返回所述返回结果给所述应用前端,以便于所述应用前端根据所述返回结果执行对应于所述后端埋点逻辑的前端埋点逻辑,以获得所述相关信息并写入所述应用前端。
本申请实施例提供的一种信息埋点装置,所述装置位于应用前端,包括:
发送模块,发送处理请求给应用后端;
接收模块,接收所述应用后端针对所述处理请求的返回结果,所述返回结果中包含所述应用后端通过执行后端埋点逻辑所获取的相关信息;
埋点模块,根据所述返回结果执行对应于所述后端埋点逻辑的前端埋点逻辑,以获得所述相关信息并写入所述应用前端。
本申请实施例提供的另一种信息埋点装置,所述装置位于应用后端,包括:
接收模块,接收应用前端的处理请求;
处理及埋点模块,对所述处理请求进行处理以及执行后端埋点逻辑,得到所述处理请求的返回结果,所述返回结果中包含通过所述执行后端埋点逻辑所获取的相关信息;
返回模块,返回所述返回结果给所述应用前端,以便于所述应用前端根据所述返回结果执行对应于所述后端埋点逻辑的前端埋点逻辑,以获得所述相关信息并写入所述应用前端。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:不同于现有技术中以应用前端的页面加载为单位,而是可以以应用前后端之间的每次交互或每多次交互为单位,对应用后端的相关信息进行埋点,因此,不仅适用于多页面应用,也适用于单页面应用,进而有利于基于埋点定位单页面应用故障源,可以部分或全部地解决现有技术中的问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的一种信息埋点方法的流程示意图;
图2为本申请实施例提供的一种实际应用场景下,单页面应用的前后端交互过程示意图;
图3为本申请实施例提供的另一种信息埋点方法的流程示意图;
图4为本申请实施例提供的在图2的应用场景下,上述信息埋点方法的一种具体实施示意图;
图5a为本申请实施例提供的图4中应用前端的具体动作示意图;
图5b为本申请实施例提供的图4中应用后端的具体动作示意图;
图6为本申请实施例提供的对应于图1的一种信息埋点装置的结构示意图;
图7为本申请实施例提供的对应于图3的一种信息埋点装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
背景技术中对现有技术中的问题进行了简单分析,为了便于理解该问题,在介绍本申请的方案前,先对该问题详细分析以及对相关概念进一步解释。
背景技术提到了多页面应用和单页面应用。所述应用可以是浏览器端形式的应用,则可以称为单页面Web应用,也可以是非浏览器端的客户端形式的应用。以单页面Web应用为例,其也可以简称为SPA(single page application),SPA是一种特殊的Web应用,该应用的应用前端只有一个页面,应用工前端涉及的所有操作被控制在这一个页面中,仅在页面初始化时加载对应的超文本标记语言(HTML)、JavaScript和层叠样式表(CSS)资源。一旦页面完成加载,SPA可以使用异步通信技术与应用后端通信,通过JavaScript动态改变HTML内容实现与用户的交互,而不会进行页面重新加载或页面跳转,从而提供较为流畅的用户体验。而多页面应用的应用前端则包含多个页面,多页面应用的应用前端与用户的很多交互都通过在这多个页面之间进行页面跳转实现,因此,在运行过程中可能进行多次页面加载。由此导致了背景技术中提到的问题。
本申请的方案可以部分或全部地解决该问题,本申请的发明的核心思想是:以应用前端与应用后端的每次交互或每多次交互为单位,对应用后端的相关信息进行埋点,其中,所述交互可以是基于任意业务的,则埋点成为随着所述任意业务的处理而顺带进行的动作,如此,不仅可以部分或全部地解决上述问题,还有利于提高通过埋点获取的相关信息的实时性。下面对本申请的方案进行详细说明。
本申请的方案可以涉及应用前端、应用后端这两端的动作,为了便于理解,分别从每端的角度进行说明。
图1为本申请实施例提供的一种信息埋点方法的流程示意图,该流程主要对应于应用前端。从设备角度而言,该流程的执行主体可以包括但不限于以下设备:手机、平板电脑、智能手表、车机、个人计算机、大中型计算机、计算机集群等。从程序角度而言,该流程的执行主体可以是搭载于所述设备上的应用前端或者该应用前端以外的其他程序,应用前端包括但不限于以下程序:浏览器端、非浏览器端的客户端等,所述其他程序包括但不限于其他应用前端或操作系统等。
图1中的流程可以包括以下步骤:
S101:发送处理请求给应用后端。
在本申请实施例中,所述处理请求通常是应用前端的处理请求。对于客户端形式的应用,应用前端与应用后端属于同一应用,应用后端通常搭载于该应用的服务器上;对于浏览器端形式的应用,应用前端与应用后端可以属于同一应用(比如,内置浏览器的应用等),也可以属于不同应用,应用前端通常属于一浏览器应用,应用后端属于通过该浏览器应用所访问网址的服务器。
所述处理请求可以是用于请求处理任意业务的请求。以电子支付应用为例,处理请求可以是支付请求、转账请求、网上购物下单请求等;再以即时通讯应用为例,处理请求可以是即时通讯消息发送请求、好友添加请求、共享文件传输请求、软件升级请求等。应用前端的一次处理请求通常会导致应用前端与应用后端的一次或多次交互(可以简称为:一次或多次应用前后端交互)。
当然,在具体实施时,也可以预先指定某些处理请求,使得只有被指定的处理请求才能够触发图1中的流程开始执行,且触发频率也可以预先设定,使得每个处理请求或每多个处理请求触发一次。
为了便于理解,对单页面应用的前后端交互进行图示说明,参见图2。图2为本申请实施例提供的一种实际应用场景下,单页面应用的前后端交互过程示意图。在该应用场景下,应用前端包括浏览器端,应用后端位于一服务器,主要有两类交互过程。
第一类交互过程为页面初始加载过程,如图2中的1~3步,浏览器端接收输入网址并发送给服务器,服务器返回该网址对应的HTML、JavaScript和CSS等资源,浏览器端根据这些资源展示该应用的页面。
第二类交互过程为页面局部修改过程,如图2中的4~6步,在页面初始加载以后,可以通过浏览器端向服务器发送基于AJAX(Asynchronous Javascript And XML)的处理请求以提交用户后续操作相关的数据,服务器对该处理请求进行处理并返回处理结果,则应用前端可以根据该返回结果对页面进行修改以展示处理结果。
S102:接收所述应用后端针对所述处理请求的返回结果,所述返回结果中包含所述应用后端通过执行后端埋点逻辑所获取的相关信息。
在本申请实施例中,如前所述,埋点可以成为随着任意业务的处理而顺带进行的动作。相应地,在现有技术中,应用后端针对处理请求的返回结果中只包含该处理请求的处理结果,而在本申请的方案中,返回结果还可以包含通过埋点所获取的相关信息。
所述相关信息是与该处理请求的处理过程相关的信息,比如,在该处理过程中应用后端的运行时信息(如IP地址、日志等)等,在实际应用中,也可以根据实际需求预先设定相关信息具体为哪些类型或哪些内容的信息。
进一步地,处理请求的返回结果可以不止一个,在这种情况下,相关信息与处理结果可以不包含在同一个返回结果。
S103:根据所述返回结果执行对应于所述后端埋点逻辑的前端埋点逻辑,以获得所述相关信息并写入应用前端。
在本申请实施例中,可以通过应用前端执行后端埋点逻辑,以及应用后端执行前端埋点逻辑完成埋点。
图1中的各步骤的执行主体可以是同一设备或同一程序,也可以是不同设备或不同程序。比如,步骤S101~S103的执行主体均为设备1;又比如,步骤S101~S102的执行主体为设备1,步骤S103的执行主体为设备2;等等。
通过图1的方法,不同于现有技术中以应用前端的页面加载为单位,而是可以以应用前后端之间的每次交互或每多次交互为单位,对应用后端的相关信息进行埋点,因此,不仅适用于多页面应用,也适用于单页面应用,可以部分或全部地解决现有技术中的问题。
基于图1的方法,本申请实施例还提供了该方法的一些具体实施方案,以及扩展方案,下面进行说明。
在本申请实施例中,除了背景技术中提到的问题以外,现有技术还存在更多的问题(称为:扩展问题),其中之一是:现有技术中的埋点逻辑是在所要获取的相关信息对应的应用功能逻辑内进行修改得到的,与应用功能逻辑耦合紧密,不仅可能影响应用功能逻辑的功能和/或性能,而且对两者任意一者进行的修改都容易导致另一者无法正常执行。
在本申请实施例中,可以在图1中方法的基础上,通过对面向切面编程(AOP,Aspect Oriented Programming)技术的运用,部分或全部解决该扩展问题。AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。
具体地,运用AOP技术,可以将用于埋点的相关逻辑以切面逻辑实现,在这种情况下,上述的后端埋点逻辑和/或前端埋点逻辑为切面逻辑,从而可以使得埋点的相关逻辑与应用前后端的至少部分功能逻辑解耦,有利于减少埋点对于应用所提供业务的处理过程的影响。
进一步地,如前所述,对于步骤S102,返回结果中还可以包含处理请求的处理结果。处理结果由应用后端通过执行相应的功能逻辑对处理请求进行处理得到。在现有技术中,该功能逻辑往往与用于埋点的相关逻辑耦合,而在本申请的方案里将反其道而行之,具体地,当所述后端埋点逻辑为切面逻辑时,所述后端埋点逻辑与所述功能逻辑通过所述后端埋点逻辑对应的切面实现解耦。这是应用后端的情况,对于应用前端也可以进行类似的处理,具体地,当所述前端埋点逻辑为切面逻辑时,所述前端埋点逻辑与所述应用前端的其他功能逻辑通过所述前端埋点逻辑对应的切面实现解耦。
需要说明的是,两者实现所述解耦具体可以指两者的耦合性降低从而使得两者部分隔离或全部隔离,进而可以减少两者相互之间的影响。
在本申请实施例中,对于步骤S103,将获得的相关信息写入应用前端,可以指直接写入应用前端的页面,也可以指写入应用前端除页面以外的任意文件中,比如,配置文件、日志中等。
以前一种方式为例,步骤S103中的“所述根据所述返回结果执行对应于所述后端埋点逻辑的前端埋点逻辑,以获得所述相关信息并写入应用前端”具体可以包括:根据所述返回结果执行前端埋点逻辑,以执行以下动作:
从所述返回结果中获得所述相关信息;将所述相关信息写入应用前端的页面的超文本标记语言HTML中,以便于通过写入后的所述页面展示所述相关信息。
上例是以基于HTML的页面展示相关信息的,也可以以文本或图片等方式展示相关信息。
进一步地,应用前端写入相关信息后,可以立刻展示相关信息,也可以是在用户主动执行请求查看该相关信息的操作后,再展示相关信息。
背景技术中对所述相关信息的一种用途进行了说明,即,可以用于快速定位应用故障源。当然,在实际应用中,相关信息也可以具有其他的用途,比如,根据相关信息,监控应用状态或触发应用的指定功能等,本申请对相关信息的具体用途不进行限定。
上面从应用前端的角度对本申请的方案进行了说明,下面从应用后端的角度对本申请的方案进行说明。
图3为本申请实施例提供的另一种信息埋点方法的流程示意图,该流程主要对应于应用后端,该流程与图1中的流程是相互对应的。从设备角度而言,该流程的执行主体可以包括但不限于以下设备:手机、平板电脑、智能手表、车机、个人计算机、大中型计算机、计算机集群等,在这种情况下,这些设备可以作为服务器。从程序角度而言,该流程的执行主体可以是搭载于所述设备上的应用后端或者该应用后端以外的其他程序,应用后端包括但不限于以下程序:服务端、为服务端提供服务的第三方程序等。
图3中的流程可以包括以下步骤:
S301:接收应用前端的处理请求。
S302:应用后端对所述处理请求进行处理以及执行后端埋点逻辑,得到所述处理请求的返回结果,所述返回结果中包含通过所述执行后端埋点逻辑所获取的相关信息。
S303:返回所述返回结果给所述应用前端,以便于所述应用前端根据所述返回结果执行对应于所述后端埋点逻辑的前端埋点逻辑,以获得所述相关信息并写入所述应用前端。
在本申请实施例中,所述应用可以是单页面应用,也可以是多页面应用。所述相关信息可以是在所述处理请求对应的处理过程中,所述应用后端的运行时信息。
图3中的各步骤的执行主体可以是同一设备或同一程序,也可以是不同设备或不同程序,甚至一个步骤中的子步骤也可以是不同设备或不同程序。比如,步骤S301~S303的执行主体均为设备1;又比如,步骤S301、S303的执行主体为设备1,步骤S302的执行主体为设备2;再比如,步骤S302中的子步骤“对所述处理请求进行处理”的执行主体为设备1,子步骤“执行后端埋点逻辑”执行主体为设备2;等等。
通过图3的方法,不同于现有技术中以应用前端的页面加载为单位,而是可以以应用前后端之间的每次交互或每多次交互为单位,对应用后端的相关信息进行埋点,因此,不仅适用于多页面应用,也适用于单页面应用,可以部分或全部地解决现有技术中的问题。
基于图3的方法,本申请实施例还提供了该方法的一些具体实施方案,以及扩展方案,下面进行说明。其中,有部分方案及其技术效果在上面对图1的说明中已经进行了详细分析,对于这部分方案,就不再重复分析,只是简单介绍。
在本申请实施例中,后端埋点逻辑和/或前端埋点逻辑可以为切面逻辑。
在本申请实施例中,对于步骤S302,所述应用后端对所述处理请求进行处理以及执行后端埋点逻辑,得到所述处理请求的返回结果,具体可以包括:应用后端通过执行相应的功能逻辑对所述处理请求进行处理,得到所述处理请求的处理结果;所述应用后端执行后端埋点逻辑,以获取相关信息;得到包含所述处理结果和所述相关信息的所述处理请求的返回结果;其中,当所述后端埋点逻辑为切面逻辑时,所述后端埋点逻辑与所述功能逻辑通过所述后端埋点逻辑对应的切面实现解耦。
需要说明的是,本申请对“执行相应的功能逻辑对所述处理请求进行处理”与“执行后端埋点逻辑,以获取相关信息”的执行顺序并不做限定,只要能得到处理结果和相关信息即可。
在本申请实施例中,当所述前端埋点逻辑为切面逻辑时,所述前端埋点逻辑与所述应用前端的其他功能逻辑通过所述前端埋点逻辑对应的切面实现解耦。
上面分别从应用前端和应用后端的角度对本申请的方案进行了说明。为了更直观地理解,根据上面的说明,本申请实施例还提供了在图2的应用场景下,上述信息埋点方法的一种具体实施示意图,如图4所示。
在图4中的交互即适用于图2中的第一类交互过程,也适用于图2中的第二类交互过程。其中,应用后端可以位于服务器上,也可以位于另一设备上。
进一步地,本申请实施还提供了图4中应用前端和应用后端各自的具体动作示意图,分别如图5a、图5b所示。假定后端埋点逻辑和前端埋点逻辑均为切面逻辑,相关信息为应用后端的运行时信息。
图5a示出了应用前端的动作,主要包括以下:
应用前端根据用户操作,向应用后端以异步方式发起处理请求(异步方式仅是示例,并非对本申请的限定,以同步方式发起处理请求也可以);
异步接收到应用后端针对该处理请求的返回结果;
执行切面逻辑(具体为前端埋点逻辑),以从返回结果中获得后端应用的运行时信息并写入应用前端的页面的HTML中;
处理结果数据(可以是获得的后端应用的运行时信息、处理结果等),修改HTML展示结果数据。
图5b示出了应用后端的动作,主要包括以下:
应用后端接收应用前端的处理请求;
执行相应的功能逻辑对处理请求进行处理,得到处理结果;
执行切面逻辑(具体为后端埋点逻辑),以获取后端应用的运行时信息,结合处理结果得到处理请求的返回结果;
返回该返回结果给应用前端。
在实际应用中,图5a、图5b中的切面逻辑通常封装成为独立的功能模块,在图4中,所述切面逻辑可以直接由浏览器和/或服务器执行,也可以由与浏览器和/或服务器连接的其他设备执行,图4、图5a、图5b中的虚线方框即是为了表示这种可选情况以及切面逻辑的独立性。
以上为本申请实施例提供的信息埋点方法,基于同样的思路,本申请实施例还提供对应的信息埋点装置,如图6、图7所示。
图6为本申请实施例提供的对应于图1的一种信息埋点装置的结构示意图,该装置可以位于图1中流程的执行主体上,包括:
发送模块601,发送处理请求给应用后端;
接收模块602,接收所述应用后端针对所述处理请求的返回结果,所述返回结果中包含所述应用后端通过执行后端埋点逻辑所获取的相关信息;
埋点模块603,根据所述返回结果执行对应于所述后端埋点逻辑的前端埋点逻辑,以获得所述相关信息并写入所述应用前端。
可选地,所述后端埋点逻辑和/或所述前端埋点逻辑为切面逻辑。
可选地,所述返回结果中还包含所述处理请求的处理结果,所述处理结果由所述应用后端通过执行相应的功能逻辑对所述处理请求进行处理得到;
当所述后端埋点逻辑为切面逻辑时,所述后端埋点逻辑与所述功能逻辑通过所述后端埋点逻辑对应的切面实现解耦。
可选地,当所述前端埋点逻辑为切面逻辑时,所述前端埋点逻辑与所述应用前端的其他功能逻辑通过所述前端埋点逻辑对应的切面实现解耦。
可选地,所述应用为单页面应用。
可选地,所述相关信息为在所述处理请求对应的处理过程中,所述应用后端的运行时信息。
可选地,所述埋点模块603根据所述返回结果执行对应于所述后端埋点逻辑的前端埋点逻辑,以获得所述相关信息并写入所述应用前端,具体包括:
所述埋点模块603根据所述返回结果执行对应于所述后端埋点逻辑的前端埋点逻辑,以执行以下动作:
从所述返回结果中获得所述相关信息;
将所述相关信息写入所述应用前端的页面的超文本标记语言HTML中,以便于通过写入后的所述页面展示所述相关信息。
图7为本申请实施例提供的对应于图3的一种信息埋点装置的结构示意图,该装置可以位于图3中流程的执行主体(主要指应用后端)上,包括:
接收模块701,接收应用前端的处理请求;
处理及埋点模块702,对所述处理请求进行处理以及执行后端埋点逻辑,得到所述处理请求的返回结果,所述返回结果中包含通过所述执行后端埋点逻辑所获取的相关信息;
返回模块703,返回所述返回结果给所述应用前端,以便于所述应用前端根据所述返回结果执行对应于所述后端埋点逻辑的前端埋点逻辑,以获得所述相关信息并写入所述应用前端。
可选地,所述后端埋点逻辑和/或所述前端埋点逻辑为切面逻辑。
可选地,所述处理及埋点模块702对所述处理请求进行处理以及执行后端埋点逻辑,得到所述处理请求的返回结果,具体包括:
所述处理及埋点模块702通过执行相应的功能逻辑对所述处理请求进行处理,得到所述处理请求的处理结果;执行后端埋点逻辑,以获取相关信息;得到包含所述处理结果和所述相关信息的所述处理请求的返回结果;
其中,当所述后端埋点逻辑为切面逻辑时,所述后端埋点逻辑与所述功能逻辑通过所述后端埋点逻辑对应的切面实现解耦。
可选地,当所述前端埋点逻辑为切面逻辑时,所述前端埋点逻辑与所述应用前端的其他功能逻辑通过所述前端埋点逻辑对应的切面实现解耦。
可选地,所述应用为单页面应用。
可选地,所述相关信息为在所述处理请求对应的处理过程中,所述应用后端的运行时信息。
本申请实施例提供的装置与方法是一一对应的,因此,装置也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述装置的有益技术效果。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。