摘要:基于組件的應(yīng)用服務(wù)平臺(tái)通過(guò)混合語(yǔ)言編程及松散數(shù)據(jù)耦合機(jī)制,能充分發(fā)揮數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)處理及數(shù)據(jù)展示的特性,具有良好的開(kāi)放性能,也是Web應(yīng)用服務(wù)平臺(tái)構(gòu)建發(fā)展的主流方向。本文結(jié)合項(xiàng)目開(kāi)發(fā)實(shí)際,對(duì)基于Fortran核心計(jì)算組件的Web應(yīng)用服務(wù)平臺(tái)的體系結(jié)構(gòu)、組件設(shè)計(jì)、數(shù)據(jù)耦合等方面設(shè)計(jì)思想進(jìn)行了系統(tǒng)介紹,并對(duì)組件編譯與數(shù)據(jù)耦合等關(guān)鍵技術(shù)實(shí)現(xiàn)思路進(jìn)行詳細(xì)論述,具有良好的實(shí)際應(yīng)用價(jià)值,以期對(duì)同類開(kāi)發(fā)具有一定的借鑒作用。
關(guān)鍵詞: Web計(jì)算; 應(yīng)用平臺(tái); 組件; 動(dòng)態(tài)鏈接庫(kù)
中圖分類號(hào): TP391
文獻(xiàn)標(biāo)志碼: A
文章編號(hào): 2095-2163(2016)06-0065-03
0引言
作為一種新興的網(wǎng)絡(luò)計(jì)算方式,基于網(wǎng)絡(luò)瀏覽器的Web計(jì)算(Web Computing)是對(duì)分布式計(jì)算的一種延伸與拓展,而正因其劃時(shí)代性的出現(xiàn)才使得分布式計(jì)算最終延展到Internet之上,由此則成為現(xiàn)代Web計(jì)算的發(fā)生與演變基礎(chǔ)。成千上萬(wàn)的個(gè)人計(jì)算機(jī)通過(guò)該款技術(shù)模式達(dá)到互通互訪,以提供高效且廉價(jià)的計(jì)算。然而,在大型軟件的生命過(guò)程中,新需求必將不斷涌現(xiàn),甚至某些需求還會(huì)對(duì)原系統(tǒng)造成重大沖擊。如何解決這些大型軟件設(shè)計(jì)和開(kāi)發(fā)過(guò)程的通用難題,長(zhǎng)期以來(lái)就始終作為系統(tǒng)設(shè)計(jì)的重點(diǎn)與焦點(diǎn)而倍受各方矚目。針對(duì)這些問(wèn)題,在系統(tǒng)的設(shè)計(jì)中,研究表明可以采用軟件分層設(shè)計(jì)策略,并且逐步實(shí)現(xiàn)從組件化過(guò)渡到服務(wù)化。具體地,組件服務(wù)就是軟組件對(duì)象模型(COM)和事務(wù)服務(wù)器(MTS)的智能升級(jí)新進(jìn)展。組件服務(wù)能夠開(kāi)發(fā)執(zhí)行許多原來(lái)必須由開(kāi)發(fā)人員通過(guò)編程處理的資源管理任務(wù),例如,線程安全和分配,通過(guò)提供線程池、對(duì)象池和運(yùn)行時(shí)對(duì)象激活,就可以自動(dòng)地使應(yīng)用程序具有更好的可伸縮性。COM+還通過(guò)提供對(duì)事務(wù)的支持,甚至是跨越網(wǎng)絡(luò)中多個(gè)數(shù)據(jù)庫(kù)的事務(wù),來(lái)成功保證數(shù)據(jù)的完整性。
Fortran在由IBM公司設(shè)計(jì)規(guī)劃之初,即是以科學(xué)計(jì)算為目的,同時(shí)也全面考慮到了針對(duì)科學(xué)計(jì)算而進(jìn)行優(yōu)化,也就是只要對(duì)于一個(gè)具體問(wèn)題的數(shù)學(xué)求解過(guò)程構(gòu)建形成了明晰的概念,再將其交由Fortran語(yǔ)言調(diào)制運(yùn)行就已具備了高度現(xiàn)實(shí)可行性。大量的經(jīng)驗(yàn)證明了,無(wú)論是運(yùn)用經(jīng)典的串行機(jī)還是并行矢量機(jī),在執(zhí)行同一個(gè)科學(xué)計(jì)算任務(wù)時(shí),F(xiàn)ortran代碼都表現(xiàn)出了最高的運(yùn)行速度和運(yùn)行效率,基于此,本文結(jié)合項(xiàng)目實(shí)際,研究擬將Fortran計(jì)算優(yōu)勢(shì)與現(xiàn)行Web服務(wù)平臺(tái)結(jié)合,以提供更加廣泛而快捷的Web計(jì)算,并在計(jì)算最優(yōu)化與應(yīng)用最大化間尋找最佳平衡,其研究成果必將具備可觀應(yīng)用價(jià)值與一定借鑒意義。
[JP3][BT4]1基于Fortran組件的Web計(jì)算服務(wù)體系構(gòu)建流程[JP]
基于Fortran組件的Web計(jì)算服務(wù)應(yīng)用體系結(jié)構(gòu)采用了“三層兩接口模式”,主要包括:計(jì)算數(shù)據(jù)層、計(jì)算組件層和Web計(jì)算應(yīng)用層及數(shù)據(jù)訪問(wèn)接口、組件訪問(wèn)接口。整體結(jié)構(gòu)設(shè)計(jì)如圖1所示。
由圖1可見(jiàn),Web計(jì)算服務(wù)體系結(jié)構(gòu)由下至上3個(gè)層級(jí)的對(duì)應(yīng)實(shí)現(xiàn)功能可做如下闡釋分析:
1)計(jì)算數(shù)據(jù)層。數(shù)據(jù)是計(jì)算服務(wù)的基礎(chǔ)。通過(guò)引進(jìn)數(shù)據(jù)庫(kù)及文件方式進(jìn)行數(shù)據(jù)的存儲(chǔ),一般在服務(wù)器上采用集中或群集模式設(shè)計(jì)存儲(chǔ);
2)計(jì)算組件層。采用組件技術(shù),協(xié)同數(shù)據(jù)計(jì)算與處理功能進(jìn)行封裝,并形成組件庫(kù);
3)Web計(jì)算應(yīng)用層。獲取計(jì)算組件層的數(shù)據(jù)計(jì)算與處理結(jié)果,通過(guò)合適的方式進(jìn)行描述表示,并提供用戶與計(jì)算機(jī)間的交互,將用戶的信息反饋給計(jì)算組件層實(shí)現(xiàn)交互處理。
在此基礎(chǔ)上,探討可得平臺(tái)數(shù)據(jù)計(jì)算處理流程分述如下:
1)用戶通過(guò)B/S模式向Web計(jì)算應(yīng)用層的應(yīng)用程序提交計(jì)算申請(qǐng);
2)Web計(jì)算應(yīng)用層將數(shù)據(jù)規(guī)范化,并通過(guò)組件訪問(wèn)接口傳入到計(jì)算控件庫(kù);
3)計(jì)算組件層中的功能函數(shù)根據(jù)數(shù)據(jù)計(jì)算或處理的功能需求,通過(guò)數(shù)據(jù)訪問(wèn)接口,從計(jì)算數(shù)據(jù)層中提取數(shù)據(jù),再利用本身的數(shù)據(jù)處理功能完成數(shù)據(jù)的計(jì)算與處理;
4)計(jì)算組件層再將計(jì)算的結(jié)果反饋給Web計(jì)算應(yīng)用層,通過(guò)適合的方式展現(xiàn)給用戶。
[BT4]2體系結(jié)構(gòu)技術(shù)實(shí)現(xiàn)
[BT5]2.1模塊流程設(shè)計(jì)
根據(jù)Web計(jì)算服務(wù)體系框架設(shè)計(jì),將計(jì)算功能模塊化,由Fortran計(jì)算模塊在后臺(tái)專業(yè)執(zhí)行實(shí)現(xiàn)各個(gè)模塊的數(shù)據(jù)計(jì)算與處理功能,并通過(guò)輸入/輸出接口與前臺(tái)用戶提供實(shí)時(shí)交互。模塊化流程設(shè)計(jì)如圖2所示。
[PS李建2.EPS;S*2;X*2,BP#]
[HT6H][ST6HZ][WT6HZ][JZ]圖2預(yù)測(cè)模塊的Web計(jì)算模型
[JZ]Fig. 2Web computing model of prediction module
[HT5”SS][ST5”BZ][WT5”BZ]
[BT5]2.2接口設(shè)計(jì)
在項(xiàng)目研發(fā)實(shí)踐中,重點(diǎn)是通過(guò)接口函數(shù)來(lái)保證模塊間的數(shù)據(jù)交互實(shí)現(xiàn)的。接口函數(shù)定義則依據(jù)Fortran2003的ISO_C_BANGDING 特性而定制編寫。Fortran子過(guò)程的接口參數(shù)中,應(yīng)將字符串聲明為單個(gè)字符的數(shù)組,與C保持兼容,并傳遞字符數(shù)組長(zhǎng)度(即字符串的長(zhǎng)度)。設(shè)計(jì)中,關(guān)鍵代碼如下:
FUNCTION mult(srcPath,srcLen, descPath,descLen,remark) BIND(C, name=foomult)
INTEGER,VALUE :: srcLen,descLen
character,dimension(srcLen):: srcPath
character,dimension(descLen)::descPath
integer::mult
mult = a * b
END FUNCTION
函數(shù)中,對(duì)接口參數(shù)的功能定義解析可分別作出如下論述:
1)接口為5個(gè)參數(shù);
2)接口的第1、2個(gè)參數(shù)解決輸入文件的問(wèn)題。具體地,第1個(gè)參數(shù)傳遞的是一個(gè)含路徑的文件名,如:/路徑/in.txt;第2個(gè)參數(shù)為第1個(gè)參數(shù)的長(zhǎng)度,在第1個(gè)參數(shù)文件/路徑/in.txt中的內(nèi)容組織如下:
/路徑/參數(shù)文件1.txt
/路徑/參數(shù)文件2.txt
.。。。。。(根據(jù)各自的需要自行定義)
輸入數(shù)據(jù)的路徑1
輸入數(shù)據(jù)的路徑2
.。。。。。(根據(jù)各自的需要自行定義)
輸出數(shù)據(jù)的路徑
3)第3、4個(gè)參數(shù)為輸出數(shù)據(jù)的文件。相應(yīng)地,第3個(gè)參數(shù)傳遞的是一個(gè)含路徑的文件名,文件的命名規(guī)則為:用戶名日期時(shí)間.txt,第4個(gè)參數(shù)則為第3個(gè)參數(shù)的長(zhǎng)度。例如:第3個(gè)參數(shù)為: /路徑/zhangsan20101020121120.txt,所在的文件為空文件,不寫入具體內(nèi)容,對(duì)模塊編程者寫入要輸出的數(shù)據(jù)文件路徑和名字。調(diào)用時(shí)設(shè)定寫入的輸出數(shù)據(jù)文件名的方法為:從第1個(gè)參數(shù)文件in.txt中取出輸出數(shù)據(jù)的路徑,從第3個(gè)參數(shù)取出文件名zhangsan20101020121120,再根據(jù)各自的文件性質(zhì)添加后綴,構(gòu)成含路徑的輸出文件。此時(shí),在前例基礎(chǔ)上可得(以輸出數(shù)據(jù)的后綴是.grd為例):
/輸出數(shù)據(jù)的路徑/ zhangsan20101020121120.grd
算法中如果有數(shù)據(jù)輸出,則寫入該文件“/輸出數(shù)據(jù)的路徑/ zhangsan20101020121120.grd”,同時(shí)將“/輸出數(shù)據(jù)的路徑/ zhangsan20101020121120.grd”字符串信息內(nèi)容寫入第3個(gè)參數(shù)的文件中。如果在輸出數(shù)據(jù)的結(jié)果中有多個(gè)文件生成,則采用的文件命名方法是:
/輸出數(shù)據(jù)的路徑/ zhangsan20101020121120_001.grd
/輸出數(shù)據(jù)的路徑/ zhangsan20101020121120_002.grd
……(根據(jù)各自的需要依次往下定義)
將生成的數(shù)據(jù)依次寫入以上文件,同時(shí)將以上字符串寫入第3個(gè)參數(shù)對(duì)應(yīng)的文件中。
4)接口返回參數(shù)類型為integer;
5)BIND(C, name=foomult) 是其他語(yǔ)言調(diào)用動(dòng)態(tài)鏈接庫(kù)的算法名稱(只改變foomult 這個(gè)算法名稱,其他不變)。
[BT5]2.3計(jì)算模塊調(diào)用
在java/c中,通過(guò)接口程序?qū)崿F(xiàn)對(duì)Fortran計(jì)算模塊dll的調(diào)用。
#include
#include
int main(int argc,char **argv)
{
char infile\[200\]=" fszhq_parameter.txt";//輸入?yún)?shù)文件
intinlen,outlen,remark;
char outfile\[200\]=" guest20110324.txt";//輸出參數(shù)文件
remark=0;
fszhqpredict(infile,strlen(infile),outfile,strlen(outfile),remark); //調(diào)用的計(jì)算模塊
return 0;
}
[BT5]2.4體系實(shí)現(xiàn)及展望
數(shù)據(jù)的分布性、開(kāi)發(fā)平臺(tái)的異構(gòu)性、Web后臺(tái)技術(shù)的多樣性及業(yè)務(wù)邏輯定義和數(shù)據(jù)屬性描述的不一致性阻礙了電子商務(wù)的效果規(guī)模的優(yōu)化完善。電子商務(wù)不僅僅是解決在線支付eCommerce的理想策略,對(duì)企業(yè)而言則更是實(shí)現(xiàn)企業(yè)在線采購(gòu)、計(jì)劃、生產(chǎn)、儲(chǔ)運(yùn)、分銷和客戶服務(wù)為主的eBusiness有效技術(shù)手段及首選方案。隨著企業(yè)越來(lái)越多的應(yīng)用向網(wǎng)上轉(zhuǎn)移,服務(wù)整合將革新下一代電子商務(wù)的模式。而面向服務(wù)體系結(jié)構(gòu)已然設(shè)計(jì)規(guī)劃了建立基于服務(wù)的動(dòng)態(tài)綁定、松散耦合系統(tǒng)的基本準(zhǔn)則。
隨著Internet和Web 技術(shù)的不斷發(fā)展,不同組織之間數(shù)據(jù)的交互越來(lái)越多,業(yè)務(wù)互聯(lián)互通的需求也越來(lái)越多。但是目前各個(gè)組織所使用的系統(tǒng)往往是采用不同的平臺(tái)和技術(shù)構(gòu)建的,在這些異構(gòu)的系統(tǒng)之間很難實(shí)現(xiàn)資源的共享。
通過(guò)模塊化,分層結(jié)構(gòu)體系構(gòu)建,該平臺(tái)可以實(shí)現(xiàn)異構(gòu)系統(tǒng)之間的資源共享。該平臺(tái)由一個(gè)資源共享中心和若干個(gè)資源共享代理組成。其中的資源共享中心負(fù)責(zé)資源的集中管理。
3結(jié)束語(yǔ)
Fortran作為一種功能強(qiáng)大的計(jì)算語(yǔ)言在科學(xué)計(jì)算領(lǐng)域具有廣泛的應(yīng)用,但該語(yǔ)言在數(shù)據(jù)接口方面的欠缺不足卻嚴(yán)重制約了其在更大范圍內(nèi)的研究實(shí)現(xiàn)。通過(guò)基于分層組件設(shè)計(jì)的方法,可以充分利用Fortran本身的優(yōu)勢(shì),并通過(guò)松散耦合方式較好地處理了與其它語(yǔ)言間的關(guān)系。本文作為Fortran組件式多語(yǔ)言混合應(yīng)用編程的階段性成果,對(duì)基于Fortran的Web計(jì)算應(yīng)用平臺(tái)的構(gòu)建體系及流程給出了設(shè)計(jì)描述,并對(duì)此組件平臺(tái)中的動(dòng)態(tài)鏈接庫(kù)生成機(jī)制、CGI接口處理機(jī)制、分層接口處理等方面進(jìn)行了闡述分析 ,重在支持解決Fortran多語(yǔ)言編程中需處理的關(guān)鍵問(wèn)題,以期對(duì)同類開(kāi)發(fā)能夠提供有益的借鑒作用。
參考文獻(xiàn):畢蘇萍,張軍,周振紅. CVF對(duì)創(chuàng)建Fortran COM組件的支持[J]. 鄭州大學(xué)學(xué)報(bào)(工學(xué)版), 2009,30(2):88-90,94.
[2] 顧有林,易維寧,喬延利. 基于組件的VC與Fortran混合編程[J]. 微計(jì)算機(jī)信息, 2008(15):217-218.
[3] 周振紅,任慧,杜麗平. Fortran DLL組件集成到.NET平臺(tái)(一)[J]. 武漢大學(xué)學(xué)報(bào)(工學(xué)版), 2005,38(4):100-103.
[4] 周振紅,周洞汝,楊國(guó)錄. 基于COM的軟件組件[J]. 計(jì)算機(jī)應(yīng)用, 2001,21(3):6-8.
[5] 劉翔. 面向移動(dòng)計(jì)算的WEB中間件關(guān)鍵技術(shù)研究[D]. 成都:電子科技大學(xué), 2013.
[6] 姜峰,李忠獻(xiàn). 基于Web計(jì)算的密碼破解系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[C]//2012年全國(guó)網(wǎng)絡(luò)與數(shù)字內(nèi)容安全學(xué)術(shù)年會(huì)論文集. 北京:人工智能學(xué)會(huì)智能數(shù)字內(nèi)容安全專業(yè)委員會(huì), 2012:62-66.
[7] 王會(huì)嫻,康大偉,王曉飛. FORTRAN語(yǔ)言和Origin軟件與計(jì)算物理教學(xué)[J]. 新鄉(xiāng)學(xué)院學(xué)報(bào)(自然科學(xué)版), 2012,29(1):87-89.
[8] 李興田. 基于Fortran語(yǔ)言的工程計(jì)算及可視化研究[J]. 蘭州交通大學(xué)學(xué)報(bào), 2011,30(1):97-100.
[9] 倪紅軍,曾平. 面向移動(dòng)計(jì)算的WEB中間件關(guān)鍵技術(shù)研究[J]. 信息系統(tǒng)工程, 2014(7):17.[ZK)]