一种面向最终用户搭建Ajax应用的自适应方法

文档序号:8257975阅读:281来源:国知局
一种面向最终用户搭建Ajax应用的自适应方法
【技术领域】
[0001]本发明涉及Web服务技术领域,具体来说,涉及一种基于语义的Ajax API封装方法,以及根据不同情况进行自适应的切换框架。
【背景技术】
[0002]Ajax 即 “Asynchronous JavascriptAnd XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术,用于创建快速动态网页的技术,通过在后台与服务器进行少量数据交换,并且AJAX可以使网页实现异步更新,这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。自web2.0以来,Ajax得到了快速的发展,并且越来越多的web应用都采用Ajax技术。同时,由于web服务的快速发展,人们将Ajax技术与web服务进行结合,使得Ajax应用可以利用异步的服务调用来获取需要的数据,并进行局部页面刷新数据。故此,Ajax应用也被认为是web服务在浏览器上的客户端。
[0003]此外,自web2.0以来,越来越多的网站开放出自己的OpenAPI,在这种环境下,一些高交互性的Ajax应用同样也开放出了自身的Ajax API,这些Ajax API从本质是讲是构建Ajax应用的编程接口,属于web服务的客户端编程接口。由于Ajax API是以JS语言进行描述的,用户需要通过阅读API手册来了解API的结构,并且需要熟练掌握JS的编程技巧才能很好的利用已有的Ajax API开发出较好的Ajax应用。因此用户使用Ajax API是非常不便的,并且学习周期、开发周期都较使用REST API长很多。
[0004]由于存在较多功能相似或相同的Ajax API,用户不可能将全部的信息都了解后决定使用哪个API,故在用户选择API时会一定的困难;同时,如果某Ajax API提供商暂停开放,那么使用此API的用户不得不进行代码的再编写以更换其他功能相同的API,但不同提供商提供的API结构都不相同,这使得用户不得以重复学习其他API文档。然而面对这些问题,如今并没有一种很好的对于Ajax API使用的解决方案。
[0005]针对以上问题,有必要提出一种面向最终用户搭建Ajax应用的自适应框架,方便用户克服在设计以及运行时,使用Ajax API搭建Ajax应用的不便。提高Ajax应用的开发效率,缩短开发周期和流程。

【发明内容】

[0006]为了克服上述现有技术存在的问题,本发明提出了一种面向最终用户搭建Ajax应用的自适应方法,克服Ajax应用开发过程中Ajax API的选择,调用以及更换难的问题,使得用户可以使用Ajax API “零编程”搭建出满足自身需求的Ajax应用,并且在运行时可以根据Ajax API的QoS的不同,进行等功能Ajax API的替换。
[0007]本发明所采用的技术方案如下:
[0008]本发明提出了一种面向最终用户搭建Ajax应用的自适应方法,将用户与原始Ajax API进行解耦和,用户同样的调用,每次以REST方式返回最合适的Ajax API ;该方法包括以下步骤:
[0009]步骤一、对Ajax API进行封装,形成具体组件、抽象组件,该步骤具体包括以下操作:
[0010]11 J^JfAjax API提供的API文档,获取其中的funct1n以及Object之间的关系,包括funct1n与Object之间的包含关系,funct1n与Object之间的输入输出关系,Object与Object之间的继承关系;
[0011]12、根据构成Ajax API的JS库的语法关系网,以及对于funct1n所属的调用形式,构建出不同形式的具体组件;
[0012]13、利用DBpedia本体标注具体组件的功能语义,包括根据不同类型的具体组件的语义表达部分的抽取,利用DBpedia Spotlight应用将具体组件的语义表达部分分别关联到一个合适的DBpedia实例数据或本体概念上;并将属于相同功能语义,且属于不同Ajax API的具体组件映射到一个抽象组件上,从而每一个抽象组件对应一组功能语义相同的具体组件;
[0013]14、对具体组件里面的参数进行参数精化和清洗,利用DBpedia Spotlight应用将具体组件的每个清洗后的参数关联到一个合适的DBpedia实例数据或本体概念上,并将其保存到具体组件的参数标签中;
[0014]步骤二、利用封装特性在运行时进行Ajax API的自切换,该步骤具体包括以下操作:
[0015]21、解析Http请求,获取其中的抽象应用ID,根据用户地理位置、QoS信息,做出决策给出最佳的Ajax API ;
[0016]22、根据抽象应用ID,获取抽象应用中的抽象组件ID,并从数据库中查询出与之相对应的全部具体组件信息;
[0017]23、将具体组件属性code、parameters进行代码拼接;
[0018]24、对全部需要代码拼接的具体组件逐一进行code属性的提取,并且将code拼装到具体应用的code中;
[0019]25、每向具体应用code中拼入一段具体组件代码,便根据具体组件中的parameters的语义标注信息,从参数库中将对应的具体组件的参数值,然后根据参数名称将参数值替换到具体应用code中,如果出现具体组件所需的参数语义标注与参数库中不同,则进行步骤26,若全部参数均替换完成则进入步骤29 ;
[0020]26、将对应的参数表中的参数的语义标注及参数值,以及待替换的参数的名称及语义标注提供给SPAQL查询,将待替换参数标注的本体概念从宾语转换成谓语,主语为参数库中对应的参数值,然后按照SPARQL语法规则,生成SPARQL语句;
[0021]27、利用http客户端发送SPAQL查询语句到DBpedia SPARQL协议终端;
[0022]28、获取服务返回的Json结果,并进行分析,将其中获取到的参数值替换相应的参数名称;
[0023]29、将具体应用的code放入html模板中,生成对于用户来说体验最好的Ajax应用,并返回给用户;同时将具体应用code存储到具体应用的数据库表。
[0024]与现有技术相比,本发明具有以下积极的实施效果:
[0025]本发明通过对不同Ajax API的语法及语义封装,使得Ajax API即可以在语义上去匹配用户需求,又可以以组件拼接的方式进行Ajax应用的开发,达到用户“零编程”搭建到满足自身需求的Ajax应用的目的;并且利用运行时的Ajax API自切换框架,可以达到在运行时进行Ajax API的替换,大大提高用户开发Ajax应用效率,提升用户体验。
【附图说明】
[0026]图1为本发明的整体流程图;
[0027]图2为本发明的封装Ajax API的流程图;
[0028]图3为本发明自适应切换Ajax API的操作示意图;
[0029]图4为本发明自适应切换Ajax API的数据流图。
【具体实施方式】
[0030]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0031]本发明有两个步骤,一是对Ajax API进行一系列封装,形成具体组件、抽象组件;二是利用封装特性在运行时进行Ajax API的自切换。在本发明中提出了 4个概念,为具体组件,抽象组件,具体应用,抽象应用。其中:
[0032]抽象应用:由抽象组件组成,从语义匹配表达用户需求的语义层面的Ajax应用;具体应用:由具体组件组成,由具体某个Ajax API搭建成的语法层面的Ajax应用,实质上是可执行的JS代码;具体组件:由Ajax API的类及函数组成的可完成特定的功能的组件,是对Ajax API的一种小粒度封装;抽象组件:是多个具有相同功能语义的具体组件的抽象,表达出这些具体组件的语义功能。
[0033]一个Ajax API被分封成很多具体组件,一个抽象组件对应多个功能相似且属于不同Ajax API的具体组件。
[0034]步骤一、封装,具体包括以下操作:
[0035](I)解析Ajax API提供的API文档,利用正则表达式将其中的funct1n以及Object全部信息获取出来,包括funct1n的返回值、参数、所依赖的Object等,存入MySQL,然后利用SQL语句来分析获取相应的funct1n及Object的关系;
[0036](2)使用java设计了一个封装模块,实现具体组件的封装:选择需要封装的funct1n,根据JS库中的funct1n与Object的语法关系网,给出funct1n相关的Object以及funct1n中的参数,返回值等属性。根据funct1n所需的形式及功能语义的表达,从5种封装形式中选择其中一种;根据语法关系网,自动填入一些所具体组件所需要的信息,其他部分如code等经填入,并提交存储到MongoDB中;具体组件库中每增加一个具体组件,便执行(3),对具体组件进行功能语义的抽象以及参数的语义概念的标注;
[0037](3)利用DBpedia本体标注具体组件的功能语义,包括根据不同类型的具体组件的语义表达部分的抽取,利用java设-H个REST服务调用器,调用DBpedia Spotlight服务,将具体组件的语义表达部分分别关联到一个合适的DBpedia实例数据或本体概念上。并将属于相同功能语义,且属于不同Ajax API的具体组件映射到一个抽象组件上,从而每一个抽象组件对应一组功能语义相同的具体组件。并将抽象组件存储到MySQL中。
[0038](4)同时对具体组件里面的参数进行参数精化和清洗,利用DBpedia Spotlight应用将具体组件的每个清洗后的参数关联到一个合适的DBpedia实例数据或本体概念上,并将其保存到具体组件的参数标签中。
[0039]步骤二、利用封装特性在运行时进行Ajax API的自切换,如图2所示,具体包括以下操作:
[0040](I)使用node, js作为整体自适应框架的控制器,解析Http请求,获取其中的抽象应用ID,将其发送到决策器,决策器使用java编写,并利用wink搭建REST服务,返回给node 所需的 Ajax API id;
[0041](2)数据处理器根据抽象应用ID获取抽象应用中的抽象组件ID,并从MongoDB的具体组件表中查询出与之相对应的全部具体组件信息,包括参数,code等等;
[0042](3)数据处理器将具体组件属性code、parameters等发送到代码拼接器;
[0043](4)代码拼接器对全部需要代码拼接的具体组件逐一进行code属性的提取,并且将code拼装到具体应用的code中;
[0044](5)每向具体应用code中拼入一段具体组件代码,便根据具体组件中的parameters的语义标注信息anno,从参数库中取出对应的具体组件的参数
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1