欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種面向最終用戶搭建Ajax應用的自適應方法

文檔序號:8257975閱讀:329來源:國知局
一種面向最終用戶搭建Ajax應用的自適應方法
【技術領域】
[0001]本發(fā)明涉及Web服務技術領域,具體來說,涉及一種基于語義的Ajax API封裝方法,以及根據(jù)不同情況進行自適應的切換框架。
【背景技術】
[0002]Ajax 即 “Asynchronous JavascriptAnd XML”(異步 JavaScript 和 XML),是指一種創(chuàng)建交互式網頁應用的網頁開發(fā)技術,用于創(chuàng)建快速動態(tài)網頁的技術,通過在后臺與服務器進行少量數(shù)據(jù)交換,并且AJAX可以使網頁實現(xiàn)異步更新,這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。Ajax的核心是JavaScript對象XmlHttpRequest。該對象在Internet Explorer 5中首次引入,它是一種支持異步請求的技術。簡而言之,XmlHttpRequest可以使用JavaScript向服務器提出請求并處理響應,而不阻塞用戶。自web2.0以來,Ajax得到了快速的發(fā)展,并且越來越多的web應用都采用Ajax技術。同時,由于web服務的快速發(fā)展,人們將Ajax技術與web服務進行結合,使得Ajax應用可以利用異步的服務調用來獲取需要的數(shù)據(jù),并進行局部頁面刷新數(shù)據(jù)。故此,Ajax應用也被認為是web服務在瀏覽器上的客戶端。
[0003]此外,自web2.0以來,越來越多的網站開放出自己的OpenAPI,在這種環(huán)境下,一些高交互性的Ajax應用同樣也開放出了自身的Ajax API,這些Ajax API從本質是講是構建Ajax應用的編程接口,屬于web服務的客戶端編程接口。由于Ajax API是以JS語言進行描述的,用戶需要通過閱讀API手冊來了解API的結構,并且需要熟練掌握JS的編程技巧才能很好的利用已有的Ajax API開發(fā)出較好的Ajax應用。因此用戶使用Ajax API是非常不便的,并且學習周期、開發(fā)周期都較使用REST API長很多。
[0004]由于存在較多功能相似或相同的Ajax API,用戶不可能將全部的信息都了解后決定使用哪個API,故在用戶選擇API時會一定的困難;同時,如果某Ajax API提供商暫停開放,那么使用此API的用戶不得不進行代碼的再編寫以更換其他功能相同的API,但不同提供商提供的API結構都不相同,這使得用戶不得以重復學習其他API文檔。然而面對這些問題,如今并沒有一種很好的對于Ajax API使用的解決方案。
[0005]針對以上問題,有必要提出一種面向最終用戶搭建Ajax應用的自適應框架,方便用戶克服在設計以及運行時,使用Ajax API搭建Ajax應用的不便。提高Ajax應用的開發(fā)效率,縮短開發(fā)周期和流程。

【發(fā)明內容】

[0006]為了克服上述現(xiàn)有技術存在的問題,本發(fā)明提出了一種面向最終用戶搭建Ajax應用的自適應方法,克服Ajax應用開發(fā)過程中Ajax API的選擇,調用以及更換難的問題,使得用戶可以使用Ajax API “零編程”搭建出滿足自身需求的Ajax應用,并且在運行時可以根據(jù)Ajax API的QoS的不同,進行等功能Ajax API的替換。
[0007]本發(fā)明所采用的技術方案如下:
[0008]本發(fā)明提出了一種面向最終用戶搭建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、根據(jù)構成Ajax API的JS庫的語法關系網,以及對于funct1n所屬的調用形式,構建出不同形式的具體組件;
[0012]13、利用DBpedia本體標注具體組件的功能語義,包括根據(jù)不同類型的具體組件的語義表達部分的抽取,利用DBpedia Spotlight應用將具體組件的語義表達部分分別關聯(lián)到一個合適的DBpedia實例數(shù)據(jù)或本體概念上;并將屬于相同功能語義,且屬于不同Ajax API的具體組件映射到一個抽象組件上,從而每一個抽象組件對應一組功能語義相同的具體組件;
[0013]14、對具體組件里面的參數(shù)進行參數(shù)精化和清洗,利用DBpedia Spotlight應用將具體組件的每個清洗后的參數(shù)關聯(lián)到一個合適的DBpedia實例數(shù)據(jù)或本體概念上,并將其保存到具體組件的參數(shù)標簽中;
[0014]步驟二、利用封裝特性在運行時進行Ajax API的自切換,該步驟具體包括以下操作:
[0015]21、解析Http請求,獲取其中的抽象應用ID,根據(jù)用戶地理位置、QoS信息,做出決策給出最佳的Ajax API ;
[0016]22、根據(jù)抽象應用ID,獲取抽象應用中的抽象組件ID,并從數(shù)據(jù)庫中查詢出與之相對應的全部具體組件信息;
[0017]23、將具體組件屬性code、parameters進行代碼拼接;
[0018]24、對全部需要代碼拼接的具體組件逐一進行code屬性的提取,并且將code拼裝到具體應用的code中;
[0019]25、每向具體應用code中拼入一段具體組件代碼,便根據(jù)具體組件中的parameters的語義標注信息,從參數(shù)庫中將對應的具體組件的參數(shù)值,然后根據(jù)參數(shù)名稱將參數(shù)值替換到具體應用code中,如果出現(xiàn)具體組件所需的參數(shù)語義標注與參數(shù)庫中不同,則進行步驟26,若全部參數(shù)均替換完成則進入步驟29 ;
[0020]26、將對應的參數(shù)表中的參數(shù)的語義標注及參數(shù)值,以及待替換的參數(shù)的名稱及語義標注提供給SPAQL查詢,將待替換參數(shù)標注的本體概念從賓語轉換成謂語,主語為參數(shù)庫中對應的參數(shù)值,然后按照SPARQL語法規(guī)則,生成SPARQL語句;
[0021]27、利用http客戶端發(fā)送SPAQL查詢語句到DBpedia SPARQL協(xié)議終端;
[0022]28、獲取服務返回的Json結果,并進行分析,將其中獲取到的參數(shù)值替換相應的參數(shù)名稱;
[0023]29、將具體應用的code放入html模板中,生成對于用戶來說體驗最好的Ajax應用,并返回給用戶;同時將具體應用code存儲到具體應用的數(shù)據(jù)庫表。
[0024]與現(xiàn)有技術相比,本發(fā)明具有以下積極的實施效果:
[0025]本發(fā)明通過對不同Ajax API的語法及語義封裝,使得Ajax API即可以在語義上去匹配用戶需求,又可以以組件拼接的方式進行Ajax應用的開發(fā),達到用戶“零編程”搭建到滿足自身需求的Ajax應用的目的;并且利用運行時的Ajax API自切換框架,可以達到在運行時進行Ajax API的替換,大大提高用戶開發(fā)Ajax應用效率,提升用戶體驗。
【附圖說明】
[0026]圖1為本發(fā)明的整體流程圖;
[0027]圖2為本發(fā)明的封裝Ajax API的流程圖;
[0028]圖3為本發(fā)明自適應切換Ajax API的操作示意圖;
[0029]圖4為本發(fā)明自適應切換Ajax API的數(shù)據(jù)流圖。
【具體實施方式】
[0030]為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖對本發(fā)明實施方式作進一步地詳細描述。
[0031]本發(fā)明有兩個步驟,一是對Ajax API進行一系列封裝,形成具體組件、抽象組件;二是利用封裝特性在運行時進行Ajax API的自切換。在本發(fā)明中提出了 4個概念,為具體組件,抽象組件,具體應用,抽象應用。其中:
[0032]抽象應用:由抽象組件組成,從語義匹配表達用戶需求的語義層面的Ajax應用;具體應用:由具體組件組成,由具體某個Ajax API搭建成的語法層面的Ajax應用,實質上是可執(zhí)行的JS代碼;具體組件:由Ajax API的類及函數(shù)組成的可完成特定的功能的組件,是對Ajax API的一種小粒度封裝;抽象組件:是多個具有相同功能語義的具體組件的抽象,表達出這些具體組件的語義功能。
[0033]一個Ajax API被分封成很多具體組件,一個抽象組件對應多個功能相似且屬于不同Ajax API的具體組件。
[0034]步驟一、封裝,具體包括以下操作:
[0035](I)解析Ajax API提供的API文檔,利用正則表達式將其中的funct1n以及Object全部信息獲取出來,包括funct1n的返回值、參數(shù)、所依賴的Object等,存入MySQL,然后利用SQL語句來分析獲取相應的funct1n及Object的關系;
[0036](2)使用java設計了一個封裝模塊,實現(xiàn)具體組件的封裝:選擇需要封裝的funct1n,根據(jù)JS庫中的funct1n與Object的語法關系網,給出funct1n相關的Object以及funct1n中的參數(shù),返回值等屬性。根據(jù)funct1n所需的形式及功能語義的表達,從5種封裝形式中選擇其中一種;根據(jù)語法關系網,自動填入一些所具體組件所需要的信息,其他部分如code等經填入,并提交存儲到MongoDB中;具體組件庫中每增加一個具體組件,便執(zhí)行(3),對具體組件進行功能語義的抽象以及參數(shù)的語義概念的標注;
[0037](3)利用DBpedia本體標注具體組件的功能語義,包括根據(jù)不同類型的具體組件的語義表達部分的抽取,利用java設-H個REST服務調用器,調用DBpedia Spotlight服務,將具體組件的語義表達部分分別關聯(lián)到一個合適的DBpedia實例數(shù)據(jù)或本體概念上。并將屬于相同功能語義,且屬于不同Ajax API的具體組件映射到一個抽象組件上,從而每一個抽象組件對應一組功能語義相同的具體組件。并將抽象組件存儲到MySQL中。
[0038](4)同時對具體組件里面的參數(shù)進行參數(shù)精化和清洗,利用DBpedia Spotlight應用將具體組件的每個清洗后的參數(shù)關聯(lián)到一個合適的DBpedia實例數(shù)據(jù)或本體概念上,并將其保存到具體組件的參數(shù)標簽中。
[0039]步驟二、利用封裝特性在運行時進行Ajax API的自切換,如圖2所示,具體包括以下操作:
[0040](I)使用node, js作為整體自適應框架的控制器,解析Http請求,獲取其中的抽象應用ID,將其發(fā)送到決策器,決策器使用java編寫,并利用wink搭建REST服務,返回給node 所需的 Ajax API id;
[0041](2)數(shù)據(jù)處理器根據(jù)抽象應用ID獲取抽象應用中的抽象組件ID,并從MongoDB的具體組件表中查詢出與之相對應的全部具體組件信息,包括參數(shù),code等等;
[0042](3)數(shù)據(jù)處理器將具體組件屬性code、parameters等發(fā)送到代碼拼接器;
[0043](4)代碼拼接器對全部需要代碼拼接的具體組件逐一進行code屬性的提取,并且將code拼裝到具體應用的code中;
[0044](5)每向具體應用code中拼入一段具體組件代碼,便根據(jù)具體組件中的parameters的語義標注信息anno,從參數(shù)庫中取出對應的具體組件的參數(shù)
當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
龙南县| 贡嘎县| 封丘县| 无棣县| 福清市| 阿坝| 盐亭县| 监利县| 大名县| 顺平县| 靖江市| 涟水县| 滦南县| 门源| 昭苏县| 自贡市| 洞头县| 米林县| 恩施市| 廉江市| 哈巴河县| 化州市| 日喀则市| 湟源县| 股票| 桦甸市| 工布江达县| 嫩江县| 辉县市| 洞头县| 军事| 仙游县| 东乡| 陆河县| 新和县| 武安市| 航空| 绍兴市| 巩义市| 宿州市| 江都市|