鄧蓉,陸濤,胡建華
(1.中國(guó)藥科大學(xué)理學(xué)院,南京211198;2.中國(guó)藥科大學(xué)天然藥物活性組分與藥效國(guó)家重點(diǎn)實(shí)驗(yàn)室,南京211198)
云環(huán)境下基于jQuery與JSON數(shù)據(jù)傳遞方法設(shè)計(jì)
鄧蓉1,陸濤2,胡建華1
(1.中國(guó)藥科大學(xué)理學(xué)院,南京211198;2.中國(guó)藥科大學(xué)天然藥物活性組分與藥效國(guó)家重點(diǎn)實(shí)驗(yàn)室,南京211198)
隨著云計(jì)算的SaaS(Software as a Service,軟件即服務(wù))概念[1]的推廣,越來(lái)越多的企業(yè)開(kāi)始把各種應(yīng)用軟件的開(kāi)發(fā)、發(fā)布和推廣轉(zhuǎn)向云計(jì)算平臺(tái)下進(jìn)行[2-4]。在SaaS模式下可以節(jié)省用戶(hù)一次購(gòu)買(mǎi)軟件的投資,減少用戶(hù)安裝、升級(jí)軟件的復(fù)雜性,大大減少軟件開(kāi)發(fā)企業(yè)的軟件產(chǎn)品發(fā)布、維護(hù)成本。在這種模式下客戶(hù)端與云平臺(tái)端之間的數(shù)據(jù)傳遞和數(shù)據(jù)解析,減少由于數(shù)據(jù)傳遞帶來(lái)的時(shí)間損失,提高用戶(hù)感受是基于SaaS模式計(jì)算軟件能否被用戶(hù)接受的一個(gè)關(guān)鍵問(wèn)題[5-6]。目前流行的網(wǎng)絡(luò)環(huán)境下系統(tǒng)內(nèi)部或系統(tǒng)之間數(shù)據(jù)傳輸標(biāo)準(zhǔn)格式是XML,陳瑋等指出JSON格式可以降低XML冗余問(wèn)題[7]。孫光明等給出了基于JSON的AJAX數(shù)據(jù)通信的快速算法,可以用JSON代替XML,解決傳統(tǒng)AJAX采用XML而產(chǎn)生的傳輸效率問(wèn)題[8]。李張永等采用JQuery和JSON設(shè)計(jì)了一種跨平臺(tái)的移動(dòng)Web開(kāi)發(fā)框架與數(shù)據(jù)交互方法[9]。
通過(guò)對(duì)他們成果的研究和分析,設(shè)計(jì)了一種面向科學(xué)計(jì)算問(wèn)題的云客戶(hù)端與云端之間的數(shù)據(jù)傳輸與解析的方法,以提高數(shù)據(jù)的傳輸效率,滿(mǎn)足云客戶(hù)端用戶(hù)感受。該方法利用Web Service技術(shù)的跨平臺(tái)性,以jQuery AJAX為網(wǎng)頁(yè)客戶(hù)端設(shè)計(jì)技術(shù),與Web Service創(chuàng)建一個(gè)數(shù)據(jù)交互通道。并用JSON數(shù)據(jù)格式作為載體,完成計(jì)算數(shù)據(jù)到云端,云端計(jì)算結(jié)果數(shù)據(jù)返回云Web客戶(hù)端的數(shù)據(jù)傳遞任務(wù)。
在一些基于計(jì)算問(wèn)題的軟件中,傳統(tǒng)的方法是計(jì)算工作在單機(jī)上進(jìn)行,數(shù)據(jù)的輸入、存儲(chǔ)、計(jì)算都在本機(jī)上??梢园堰@類(lèi)面向計(jì)算問(wèn)題軟件服務(wù)采用云計(jì)算SaaS模式實(shí)現(xiàn)。
SaaS模式把軟件計(jì)算的核心功能以Web服務(wù)方式發(fā)布在云環(huán)境中,構(gòu)建計(jì)算服務(wù)器集群。云平臺(tái)管理器可以根據(jù)用戶(hù)數(shù)和計(jì)算負(fù)荷,及時(shí)增減集群中計(jì)算服務(wù)器數(shù)量。用戶(hù)以租戶(hù)的方式通過(guò)云平臺(tái)門(mén)戶(hù)網(wǎng)站進(jìn)行注冊(cè)、登錄和定制計(jì)算服務(wù)資源項(xiàng)目,用戶(hù)通過(guò)Web頁(yè)面上提交計(jì)算數(shù)據(jù),由云平臺(tái)負(fù)責(zé)調(diào)度,選擇一臺(tái)或多臺(tái)計(jì)算服務(wù)器中的計(jì)算服務(wù)程序完成計(jì)算任務(wù),反饋給用戶(hù)。面向計(jì)算問(wèn)題的云計(jì)算架構(gòu)如圖1所示。
AJAX(Asynchronous JavaScript And XML),即異步JavaScript和XML技術(shù),是一種創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)[10]。AJAX具有異步通信模式、傳送數(shù)據(jù)量少、輕量的服務(wù)器負(fù)載、用戶(hù)體驗(yàn)的連貫性、頁(yè)面無(wú)刷新效果等優(yōu)點(diǎn)。jQuery是一種輕量級(jí)的JavaScript庫(kù),兼容多種主流瀏覽器[11]。jQuery的代碼更加簡(jiǎn)潔、快速且靈活,jQuery為AJAX請(qǐng)求提供了良好的支持,使AJAX應(yīng)用開(kāi)發(fā)過(guò)程簡(jiǎn)單化。
jQuery AJAX的特點(diǎn)符合云客戶(hù)端Web頁(yè)面開(kāi)發(fā)的需要,在云客戶(hù)端能方便收集用戶(hù)數(shù)據(jù)并采用異步的方式向云端處理單元傳送數(shù)據(jù),并接受返回?cái)?shù)據(jù)。
JSON(JavaScript Object Notation,JavaScript對(duì)象表示法),是JavaScript規(guī)范的子集。與XML相比,JSON數(shù)據(jù)表達(dá)更簡(jiǎn)潔,數(shù)據(jù)量更小,獨(dú)立于任何語(yǔ)言和平臺(tái),是一種輕量級(jí)數(shù)據(jù)傳輸格式[12]。
JSON有對(duì)象和數(shù)組兩種形式,對(duì)象是屬性、值對(duì)的集合,一個(gè)對(duì)象開(kāi)始于“{”,結(jié)束于“}”。每個(gè)屬性后跟一個(gè)“:”,每個(gè)屬性、值對(duì)之間用“,”分隔,圖2是JSON對(duì)象的格式。
圖2 JSON對(duì)象格式
圖3 JSON數(shù)組格式
數(shù)組是有順序的值的集合,一個(gè)數(shù)組開(kāi)始于“[”,結(jié)束于“]”,值之間用“,”分隔,圖3是JSON創(chuàng)建數(shù)組的格式:
JSON數(shù)組表示法效率高,數(shù)據(jù)量小,很適合在處理數(shù)據(jù)量大的面向計(jì)算任務(wù)的云計(jì)算環(huán)境下使用。
Web Service是一種通過(guò)Web部署提供對(duì)業(yè)務(wù)功能訪問(wèn)的技術(shù),它具有跨平臺(tái)、簡(jiǎn)單和高度集成性等特點(diǎn),實(shí)現(xiàn)不同應(yīng)用程序之間的互操作性[13]。在SaaS云計(jì)算模式下,Web Service可以完成數(shù)據(jù)的接收與解析,計(jì)算程序的封裝與調(diào)用。
網(wǎng)絡(luò)頁(yè)面數(shù)據(jù)向云平臺(tái)傳遞的基本過(guò)程如圖4所示:首先整合云Web客戶(hù)端用戶(hù)提交的計(jì)算數(shù)據(jù),并將其轉(zhuǎn)化成JSON格式的數(shù)據(jù),再通過(guò)AJAX引擎將數(shù)據(jù)提交給服務(wù)器,服務(wù)器端采用Web Service接收并處理這些數(shù)據(jù),然后進(jìn)行服務(wù)引用,從而將數(shù)據(jù)傳遞給云平臺(tái)進(jìn)行存儲(chǔ)和計(jì)算處理,若是有要返回的數(shù)據(jù),則同樣經(jīng)過(guò)兩層Web Service,由服務(wù)器端的Web Service將返回的數(shù)據(jù)轉(zhuǎn)換成JSON格式回傳給云Web客戶(hù)端。
圖4 數(shù)據(jù)傳遞的基本過(guò)程
一個(gè)計(jì)算問(wèn)題,初始數(shù)據(jù)往往需要由用戶(hù)輸入。輸入的數(shù)據(jù)一般包括基本數(shù)據(jù),計(jì)算參數(shù),數(shù)據(jù)單位等等。在用戶(hù)云Web客戶(hù)端中,用戶(hù)的提交處理計(jì)算的數(shù)據(jù)采用數(shù)據(jù)表格方式輸入,表格形式根據(jù)計(jì)算數(shù)據(jù)格式進(jìn)行設(shè)計(jì)。提交數(shù)據(jù)時(shí),用jQuery將網(wǎng)頁(yè)上的對(duì)計(jì)算有意義的數(shù)據(jù)以JSON數(shù)據(jù)格式進(jìn)行組裝。將針對(duì)不同數(shù)據(jù)部分,數(shù)據(jù)拼寫(xiě)成{“key”:“value”}嵌套形式的JSON對(duì)象或{[“data”:{“key”:“value”}]}形式的JSON數(shù)組,例如:
上面格式的JSON數(shù)據(jù)描述的是與計(jì)算任務(wù)相關(guān)的三個(gè)部分?jǐn)?shù)據(jù),userID是用戶(hù)編號(hào),calcData部分是初始輸入數(shù)據(jù),doseUnit描述的是其他參數(shù)和計(jì)算單位。
Web Service是云Web客戶(hù)端與云平臺(tái)端能夠完成數(shù)據(jù)交互的橋梁,是實(shí)現(xiàn)跨平臺(tái)操作的一個(gè)重要的組件。由云Web客戶(hù)端提交的數(shù)據(jù)是JSON格式的數(shù)據(jù),首先經(jīng)過(guò)服務(wù)器端的Web Service處理,將接收到的JSON數(shù)據(jù)流反序列化成實(shí)際計(jì)算程序需要的對(duì)象,然后提取對(duì)象的信息,針對(duì)不同的計(jì)算請(qǐng)求,引用不同的云計(jì)算Web服務(wù)。對(duì)于有要求返回圖像結(jié)果、運(yùn)算評(píng)價(jià)的請(qǐng)求也可以由服務(wù)器端的Web Service調(diào)用云端相應(yīng)的Web服務(wù)完成。對(duì)于云端返回給服務(wù)器端Web Service的數(shù)據(jù)要進(jìn)行JSON流的序列化處理才能被jQuery AJAX所接收,最終在用戶(hù)的云Web客戶(hù)端中顯示。
目前關(guān)于藥代動(dòng)力學(xué)計(jì)算軟件基本采用單機(jī)運(yùn)行模式,如WinNonlin、3P97、DAS等。為了驗(yàn)證本文設(shè)計(jì)的可行性和實(shí)際效果。本文以藥學(xué)研究中藥物代謝動(dòng)力學(xué)模型的二房室靜脈注射模型計(jì)算為例進(jìn)行了實(shí)際應(yīng)用驗(yàn)證。
二房室靜脈注射模型分析是在已知定量注射的藥物含量和各時(shí)間點(diǎn)血藥濃度數(shù)據(jù)的情況下求解表觀分布容積(V)、分布半衰期t(1/2)α、消除半衰期t(1/2)β、清除率(CL)、藥物濃度-時(shí)間曲線下面積(AUC)等藥物動(dòng)力學(xué)參數(shù)的過(guò)程。二房室中藥物變化的動(dòng)力學(xué)模型如下:
轉(zhuǎn)為血藥濃度的方程解為:
以規(guī)劃求解法進(jìn)行最小二乘法回歸,可以得出A、α、B、β,再根據(jù)這些參數(shù)求得模型中的其他參數(shù),進(jìn)而求解藥物動(dòng)力學(xué)參數(shù)[14]。計(jì)算程序以Web服務(wù)應(yīng)用程序的形式在云平臺(tái)端部署和調(diào)用。
用戶(hù)在選擇二房室靜脈注射模型計(jì)算的服務(wù)頁(yè)面后,在云Web客戶(hù)端顯示的如圖5所示的數(shù)據(jù)輸入界面。用戶(hù)在輸入數(shù)據(jù)的表格中按對(duì)應(yīng)列標(biāo)題分別輸入時(shí)間點(diǎn)和血藥濃度數(shù)據(jù),在右側(cè)劑量及數(shù)據(jù)單位部分輸入單次注射劑量數(shù)據(jù)和相關(guān)參數(shù),點(diǎn)擊“計(jì)算”按鈕后,由通過(guò)jQuery編寫(xiě)的程序?qū)斎虢缑娴臄?shù)據(jù)進(jìn)行計(jì)算數(shù)據(jù)整合,包裝為JSON格式數(shù)據(jù)。然后再用jQuery AJAX向服務(wù)器端Web Service提交計(jì)算請(qǐng)求。服務(wù)器端接收到數(shù)據(jù)后,以調(diào)用云平臺(tái)端Web服務(wù)的方式將已經(jīng)處理的數(shù)據(jù)傳遞給云服務(wù)器,云服務(wù)器將參數(shù)估計(jì)、計(jì)算結(jié)果、擬合圖形、結(jié)果評(píng)價(jià)數(shù)據(jù)同樣以JSON格式返回到用戶(hù)的頁(yè)面中,然后客戶(hù)端頁(yè)面中對(duì)反饋的計(jì)算結(jié)果數(shù)據(jù)進(jìn)行解析和顯示。
圖5 二房室靜脈注射模型數(shù)據(jù)輸入界面
整個(gè)數(shù)據(jù)傳遞實(shí)現(xiàn)過(guò)程如圖6所示。
圖6 數(shù)據(jù)傳遞實(shí)現(xiàn)過(guò)程
從云端返回的計(jì)算結(jié)果如圖7所示。采用的文獻(xiàn)[14]所給算法。計(jì)算結(jié)果分析參數(shù)顯示,算法的模型參數(shù)擬合很好,返回的相關(guān)結(jié)果數(shù)據(jù)可以滿(mǎn)足藥代動(dòng)力學(xué)研究的需要。
圖7 二房室靜脈注射模型計(jì)算結(jié)果和圖形輸出
本文設(shè)計(jì)了一種云Web客戶(hù)端與云端之間的數(shù)據(jù)傳遞方法。在云客戶(hù)端Web頁(yè)面上,利用jQuery技術(shù),分離了網(wǎng)頁(yè)的結(jié)構(gòu)定義與行為事件,把用戶(hù)輸入數(shù)據(jù)封裝為JSON數(shù)據(jù)格式。并采用無(wú)刷新的AJAX技術(shù)異步提交和接收數(shù)據(jù),保證了網(wǎng)絡(luò)之間通信效率和客戶(hù)端用戶(hù)的良好體驗(yàn)。在云服務(wù)器端,利用Web Service作為客戶(hù)端與云端之間的數(shù)據(jù)接口,把從客戶(hù)端用戶(hù)提交的數(shù)據(jù)提交給云平臺(tái)中計(jì)算服務(wù)資源處理使用。通過(guò)藥物代謝動(dòng)力學(xué)數(shù)據(jù)分析云平臺(tái)的實(shí)際應(yīng)用,結(jié)果顯示能很好解決云Web客戶(hù)端和云端之間的數(shù)據(jù)傳遞問(wèn)題,給這類(lèi)基于SaaS模式的云計(jì)算應(yīng)用提供了一個(gè)可行的參考。
[1]Michael Cusumano.Cloud Computing and SaaS as New Computing Platforms[J].Communications of the ACM,2010,Vol.53(4):27-29ACM
[2]曹帥,王淑營(yíng),劉述雅.面向產(chǎn)業(yè)鏈協(xié)同SaaS平臺(tái)的業(yè)務(wù)流程定制技術(shù)[J].計(jì)算機(jī)應(yīng)用,2013,05:1450-1455.
[3]王勤,趙新冬.基于云計(jì)算的在線考試系統(tǒng)[J].計(jì)算機(jī)與現(xiàn)代化,2014,12:37-43.
[4]Markku Laine,Denis Shestakov,Petri Vuorimaa.XFormsDB[J].ACM SIGAPP Applied Computing Review,2012,12(3):37-50ACM
[5]涂海龍.數(shù)據(jù)交換技術(shù)及其Web應(yīng)用研究[D].華中科技大學(xué),2011.
[6]羅軍舟,金嘉暉,宋愛(ài)波,東方.云計(jì)算:體系架構(gòu)與關(guān)鍵技術(shù)[J].通信學(xué)報(bào),2011,07:3-21.
[7]陳瑋,賈宗璞.利用JSON降低XML數(shù)據(jù)冗余的研究[J].計(jì)算機(jī)應(yīng)用與軟件,2012,09:188-190+206.
[8]孫光明,王碩.基于JSON的Ajax數(shù)據(jù)通信快速算法[J].計(jì)算機(jī)應(yīng)用與軟件,2015,01:263-266.
[9]李張永,陳和平,顧進(jìn)廣.跨平臺(tái)移動(dòng)Web開(kāi)發(fā)框架與數(shù)據(jù)交互方法[J].計(jì)算機(jī)工程與設(shè)計(jì),2014,05:1827-1832.
[10]熊文,熊淑華,孫旭,張朝陽(yáng).Ajax技術(shù)在Web2.0網(wǎng)站設(shè)計(jì)中的應(yīng)用研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,03:145-148.
[11]潘杰,周傳生.基于jQuery框架的Web研究與實(shí)現(xiàn)[J].沈陽(yáng)師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2015,01:96-99.
[12]高靜.JSON序列化機(jī)制與傳輸效率研究[D].山東師范大學(xué),2011.
[13]Ethan Cerami.WebServices Essentials[M].O'Reilly,2002,2.
[14]王廣基.藥物代謝動(dòng)力學(xué)[M].化學(xué)工業(yè)出版社,2005,4.
Cloud Computing;jQuery AJAX;JSON;Web Service
A Data Transmission Method Based on jQuery and JSON in the Cloud Environment
DENG Rong1,LU Tao2,HU Jian-hua1
(1.School of Sciences,China Pharmaceutical University,Nanjing 211198;2.State Key Laboratory of Natural Medicines,China Pharmaceutical University,Nanjing 211198)
教育部直屬高校特色項(xiàng)目(No.2600005)、國(guó)家自然科學(xué)基金青年基金項(xiàng)目(No.61501522))
1007-1423(2015)36-0080-05
10.3969/j.issn.1007-1423.2015.36.018
鄧蓉(1990-),女,甘肅蘭州人,碩士研究生,研究方向?yàn)樗帉W(xué)信息學(xué)
陸濤(1963-),男,江蘇宿遷人,教授,博士生導(dǎo)師,博士,研究方向?yàn)樗幬锘瘜W(xué)及藥學(xué)信息學(xué)
胡建華(1969-),男,安徽和縣人,副教授,博士,研究方向?yàn)樗帉W(xué)信息學(xué)
2015-11-26
2015-12-10
為了解決在云計(jì)算環(huán)境下,云客戶(hù)端和云平臺(tái)端的數(shù)據(jù)傳遞問(wèn)題,提出利用jQuery把云客戶(hù)端網(wǎng)頁(yè)中輸入的計(jì)算數(shù)據(jù)和相關(guān)計(jì)算參數(shù)封裝為JSON格式的數(shù)據(jù)包,通過(guò)jQuery AJAX提交給Web Service程序。再由Web Service轉(zhuǎn)交給云平臺(tái)進(jìn)行處理,從而實(shí)現(xiàn)基于jQuery與JSON的科學(xué)計(jì)算數(shù)據(jù)的傳遞。通過(guò)在云環(huán)境下藥代動(dòng)力學(xué)的二房室靜脈注射模型的計(jì)算實(shí)例驗(yàn)證該方法的可行性。
云計(jì)算;jQuery AJAX;JSON;Web服務(wù)
In the cloud computing environment,to solve the problem of data transmission between cloud client and cloud platform,proposes a data transmission method.Based on jQuery technology,computational data and related calculation parameters from web pages are packaged as JSON format.Then the data packet is submitted to Web Service using jQuery AJAX and then transferred to the cloud platform for processing by Web Service.Demonstrates the Performances of the proposed method by two-compartment intravenous injection model calculation example in pharmacokinetics.