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