馮俊池,安豐亮,董 超,尹黨輝
(后勤科學(xué)與技術(shù)研究所,北京 100071)
在信息化領(lǐng)域,自主國產(chǎn)產(chǎn)品代替國外商用產(chǎn)品已成為國家戰(zhàn)略安全的需要[1]。隨著國產(chǎn)處理器芯片、BIOS等硬件技術(shù)以及國產(chǎn)操作系統(tǒng)、數(shù)據(jù)庫、中間件等軟件技術(shù)的不斷發(fā)展和成熟穩(wěn)定,應(yīng)用系統(tǒng)向國產(chǎn)化平臺遷移已具備了基礎(chǔ)條件。Web應(yīng)用系統(tǒng)是目前廣泛使用的軟件系統(tǒng)類型之一,通過研究Web應(yīng)用系統(tǒng)在現(xiàn)有非國產(chǎn)化商用平臺與國產(chǎn)化平臺之間的遷移適配,探索國產(chǎn)化平臺應(yīng)用遷移方法和模型,可以為Web應(yīng)用的遷移提供指導(dǎo)方法,同時,也為其他類型應(yīng)用的遷移適配提供借鑒和支持。
國內(nèi)自主可控關(guān)鍵軟硬件技術(shù)已取得了重大突破[2],基礎(chǔ)軟硬件產(chǎn)品的可用性已得到很大提升。
在處理器領(lǐng)域,國產(chǎn)自主通用處理器形成了多種指令集架構(gòu)的系列化處理器產(chǎn)品,產(chǎn)品主頻普遍達(dá)到1.0~2.5 GHz。國產(chǎn)處理器主要有飛騰、龍芯和申威三大系列。龍芯處理器采用類MIPS指令集,目前已發(fā)展到龍芯3系列處理器,最新產(chǎn)品為龍芯3A3000/3B3000,4核64位,主頻1.35~1.5 GHz;飛騰處理器包括FT-1000、FT-1000A、FT-1500A等系列處理器,最新產(chǎn)品為FT-2000/64,兼容ARM v8指令集,64核,主要面向高性能服務(wù)器領(lǐng)域,主頻1.5~2.0 GHz;申威處理器已發(fā)展到第三代,其代表產(chǎn)品為申威1610,兼容Alpha指令集,集成16個64位RISC結(jié)構(gòu)的申威處理器核心,最高工作頻率1.6 GHz。
在操作系統(tǒng)領(lǐng)域,形成了面向服務(wù)器、桌面等領(lǐng)域的國產(chǎn)操作系統(tǒng)。國產(chǎn)通用操作系統(tǒng)主要有中標(biāo)麒麟、中科方德等,均支持國產(chǎn)主流處理器,提供簡單易用的圖形化桌面環(huán)境、豐富的應(yīng)用軟件和完善的開發(fā)環(huán)境。其中,中標(biāo)麒麟操作系統(tǒng)基于開源Linux,對其內(nèi)核和核外環(huán)境進(jìn)行了安全、高可用等增強(qiáng)改進(jìn),全面對國際主流x86處理器,以及國產(chǎn)處理器,比如龍芯、飛騰、申威系列等進(jìn)行支持,支持Java、C、C++等多種編程和腳本語言,支持Qt、Eclipse等多種集成開發(fā)環(huán)境。
在數(shù)據(jù)庫領(lǐng)域,形成了以達(dá)夢、人大金倉、神通、南大通用等為代表的國產(chǎn)數(shù)據(jù)庫產(chǎn)品。產(chǎn)品部分性能已經(jīng)與國外主流產(chǎn)品持平,支持SQL通用數(shù)據(jù)庫查詢語言,提供標(biāo)準(zhǔn)的ODBC、JDBC等數(shù)據(jù)訪問接口,支持目前的主流硬件平臺,并穩(wěn)定運(yùn)行于Windows、Linux、中標(biāo)麒麟和Unix等主流操作系統(tǒng)平臺。
國產(chǎn)中間件主要有東方通、中創(chuàng)和金蝶等,完整支持J2EE規(guī)范,支持多層結(jié)構(gòu)應(yīng)用的部署、運(yùn)行。現(xiàn)已開展了與國產(chǎn)操作系統(tǒng)、數(shù)據(jù)庫的兼容性測試,產(chǎn)品達(dá)到實(shí)用化水平,并被大量應(yīng)用于金融、通信、政府等行業(yè)領(lǐng)域。
隨著國產(chǎn)軟硬件單品的不斷發(fā)展,國產(chǎn)整機(jī)產(chǎn)品基本滿足當(dāng)前的使用需求[3],現(xiàn)已形成了涵蓋多種形態(tài)的計算機(jī)整機(jī)產(chǎn)品,綜合性能得到大幅提升,整機(jī)功能、性能與國外同類產(chǎn)品相當(dāng)。國產(chǎn)計算機(jī)經(jīng)優(yōu)化適配后,可用于辦公應(yīng)用和管理信息系統(tǒng)等中低端應(yīng)用。
Web應(yīng)用系統(tǒng)由現(xiàn)有非國產(chǎn)化商用環(huán)境向國產(chǎn)化環(huán)境遷移時,涉及到多種軟硬件平臺、編程語言和實(shí)現(xiàn)模式等多個方面,存在指令集兼容性、插件兼容性、數(shù)據(jù)庫遷移[4]等諸多問題,而且軟硬件各版本之間也需要考慮兼容性[5],因此,需要針對應(yīng)用本身和運(yùn)行環(huán)境的多個方面進(jìn)行具體分析,確定遷移內(nèi)容和方法。
將Web應(yīng)用系統(tǒng)拆解為細(xì)粒度的遷移對象,對遷移對象建立遷移規(guī)則,描述遷移對象遷移前后的環(huán)境以及策略,遷移規(guī)則的集合即Web應(yīng)用系統(tǒng)的遷移模型。
遷移規(guī)則采用五元組的形式表示,即遷移對象、源環(huán)境、目標(biāo)對象、目標(biāo)環(huán)境和遷移策略。相關(guān)概念如下:①遷移對象是遷移前保障應(yīng)用系統(tǒng)能夠正常運(yùn)行的必要部件,包括應(yīng)用系統(tǒng)的內(nèi)部組件、運(yùn)行容器、依賴軟硬件環(huán)境等。②源環(huán)境。遷移對象所依賴的非國產(chǎn)化環(huán)境,是遷移對象的子集。③目標(biāo)對象。在國產(chǎn)化環(huán)境下替代遷移對象,完成相同功能的部件。④目標(biāo)環(huán)境。目標(biāo)對象所依賴的國產(chǎn)化環(huán)境,是目標(biāo)對象的子集。對于CPU等底層基礎(chǔ)環(huán)境,當(dāng)其作為遷移對象時,源環(huán)境和目標(biāo)環(huán)境可以為空。⑤遷移策略。由源環(huán)境中的遷移對象轉(zhuǎn)換到目標(biāo)環(huán)境中的目標(biāo)對象所需采取的策略,包括直接使用、同等替代、適應(yīng)性修改、重新編譯源碼[6]、數(shù)據(jù)遷移等。其中,直接使用的情況,是指在2個環(huán)境下遷移對象均可以正常使用;同等替代,是指目標(biāo)對象可以替代遷移對象在國產(chǎn)環(huán)境中發(fā)揮同樣的作用;適應(yīng)性修改,是指遷移對象需要修改后才能適用于國產(chǎn)環(huán)境;重新編譯源碼,是指遷移對象在源碼級別可移植,針對國產(chǎn)環(huán)境編譯后使用;數(shù)據(jù)遷移,是指需要將數(shù)據(jù)通過手動或自動方式遷移,主要指數(shù)據(jù)庫內(nèi)的數(shù)據(jù)。
遷移模型中的遷移規(guī)則涵蓋了從基礎(chǔ)軟硬件到上層應(yīng)用的所有遷移對象,從遷移對象的層次描述了遷移的方法和策略,同時,以遷移對象為級別的遷移規(guī)則復(fù)用性強(qiáng),在不同應(yīng)用遷移時可直接使用。
在遷移過程中,從硬件到軟件,遷移對象主要包括CPU、操作系統(tǒng)、中間件和應(yīng)用系統(tǒng)等,其中,應(yīng)用系統(tǒng)是分解確定遷移對象的重點(diǎn)。通過對Web應(yīng)用系統(tǒng)的軟件技術(shù)架構(gòu)的分析,從不同類型的結(jié)構(gòu)中進(jìn)行綜合,將Web應(yīng)用系統(tǒng)進(jìn)行層次劃分,用來更清晰地確定應(yīng)用系統(tǒng)層面的遷移對象。在開發(fā)過程中,Web應(yīng)用一般采用三層架構(gòu)實(shí)現(xiàn)[7],分別為數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層和表示層。數(shù)據(jù)訪問層用于與數(shù)據(jù)庫進(jìn)行交互,執(zhí)行數(shù)據(jù)的添加、刪除、修改等操作;業(yè)務(wù)邏輯層主要用來實(shí)現(xiàn)業(yè)務(wù)規(guī)則,針對具體問題進(jìn)行處理;表示層為用戶提供交互式操作界面,顯示數(shù)據(jù)和接收用戶輸入的數(shù)據(jù)。針對國產(chǎn)化遷移,需要進(jìn)一步細(xì)分Web應(yīng)用系統(tǒng)。通過對常見的Web應(yīng)用系統(tǒng)的分析,列舉可能用到的技術(shù)框架以及組件,將Web應(yīng)用主要分為視圖展示層、展示框架層、應(yīng)用邏輯層、應(yīng)用框架層、應(yīng)用容器層、數(shù)據(jù)框架層、數(shù)據(jù)訪問層和數(shù)據(jù)存儲層8個層次。
視圖展示層,負(fù)責(zé)用戶前端視圖的顯示和交互,通常采用 Html、Javascript、CSS、Flash、Java Applet等技術(shù)實(shí)現(xiàn)。展示框架層,包含與前端界面和視圖相關(guān)的框架以及組件等。展示框架層和視圖展示層主要考慮與瀏覽器的兼容性。應(yīng)用邏輯層是Web應(yīng)用中實(shí)現(xiàn)業(yè)務(wù)邏輯的部分,主要集中在業(yè)務(wù)規(guī)則的制訂、業(yè)務(wù)流程的實(shí)現(xiàn)等與業(yè)務(wù)需求有關(guān)的設(shè)計方面,通常采用Java、Servlet、PHP、ASP等語言或技術(shù)。應(yīng)用框架層應(yīng)用邏輯層所采用的框架和組件,比如Spring、Struts等框架。應(yīng)用容器層是Web應(yīng)用程序的運(yùn)行環(huán)境,主要包括Tomcat、IIS、WebLogic等Web服務(wù)器。數(shù)據(jù)框架層,是在應(yīng)用業(yè)務(wù)邏輯與數(shù)據(jù)存儲之間的數(shù)據(jù)交互中所采用的框架,包括各種ORM框架等。數(shù)據(jù)訪問層,負(fù)責(zé)數(shù)據(jù)的訪問和存儲,實(shí)現(xiàn)對數(shù)據(jù)的增刪改查等操作,包括數(shù)據(jù)庫訪問驅(qū)動以及各種數(shù)據(jù)庫操作語句等。數(shù)據(jù)存儲層是應(yīng)用系統(tǒng)的數(shù)據(jù)存儲位置,包括各種結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)庫、文件系統(tǒng)等。
通過對Web應(yīng)用系統(tǒng)建立遷移模型并進(jìn)行分析化簡,即可得到需要遷移的內(nèi)容和方法。建立遷移規(guī)則庫,可在不同應(yīng)用遷移時復(fù)用。生成應(yīng)用遷移模型的步驟是:①將應(yīng)用系統(tǒng)按層次分解,確定每一層次的遷移對象。②分析每一層次的遷移對象,并添加到遷移對象集合中,從最底層的遷移對象開始遍歷。③如果當(dāng)前遷移對象已遍歷,執(zhí)行步驟⑤;如果未遍歷,標(biāo)記其已遍歷,檢查遷移規(guī)則庫中是否相同的遷移規(guī)則可復(fù)用,如有,執(zhí)行步驟④,否則,分析生成遷移規(guī)則,將其加入遷移規(guī)則庫,執(zhí)行步驟④。④將遷移規(guī)則加入遷移模型。⑤如果源環(huán)境不為空,將其作為當(dāng)前遷移對象,執(zhí)行步驟③;否則,將遷移對象集合的下一遷移對象作為當(dāng)前遷移對象,執(zhí)行步驟③。如果遷移對象集合為空,輸出遷移模型,終止。
輸出的遷移模型包含了所有遷移對象所對應(yīng)的遷移規(guī)則,通過篩選除去遷移策略為直接使用或同等替代的遷移規(guī)則,得到的即是遷移過程中需要改造的內(nèi)容和方法。
以某信息管理系統(tǒng)為例,其遷移前和遷移后的軟硬件運(yùn)行環(huán)境如表1所示。

表1 軟硬件運(yùn)行環(huán)境表
該應(yīng)用所用到的技術(shù)框架如表2所示。

表2 技術(shù)框架
建立遷移模型如下:

通過篩選化簡除去直接使用和同等替代的遷移對象后,得到的遷移規(guī)則如下:


該信息管理系統(tǒng)在遷移過程中的內(nèi)容和方法是:①將Oracle數(shù)據(jù)庫中的數(shù)據(jù)遷移到達(dá)夢數(shù)據(jù)庫;②針對應(yīng)用程序中的特定于Oracle的SQL語句做適應(yīng)性修改;③針對應(yīng)用程序中的特定于IE 8的Javascript代碼做適應(yīng)性修改;④將其他遷移對象直接或?qū)⑻娲鷮ο髴?yīng)用于國產(chǎn)化環(huán)境。
針對Web應(yīng)用系統(tǒng)向國產(chǎn)化軟硬件平臺遷移的問題,提出了應(yīng)用遷移模型和方法;針對Web應(yīng)用系統(tǒng)提出了適用于遷移的層次化結(jié)構(gòu),基于層次化結(jié)構(gòu)分析應(yīng)用的遷移對象并確定遷移規(guī)則,大大提高了遷移工作的效率和準(zhǔn)確度。對于其他類型的應(yīng)用,通過改變遷移對象的層次,遷移模型和方法同樣適用。如果將遷移對象國產(chǎn)化后的效果加入遷移規(guī)則中,比如保持一致、性能損失、友好度降低等非功能效果,則可對遷移產(chǎn)生的影響進(jìn)行自動化分析。
參考文獻(xiàn):
[1]趙斌,楊明華,柳偉,等.基于龍芯處理器的自主可信計算機(jī)研究[J].計算機(jī)技術(shù)與發(fā)展,2015(4):126-130.
[2]萬俊偉,趙輝,鮑忠貴,等.自主可控信息技術(shù)發(fā)展現(xiàn)狀與應(yīng)用分析[J].飛行器測控學(xué)報,2015,34(4):318-324.
[3]紀(jì)靜,屈濤,金達(dá),等.自主可控計算機(jī)設(shè)計與實(shí)現(xiàn)[J].計算機(jī)工程與應(yīng)用,2013,49(15):36-39.
[4]張春瑞,趙成坤,吳川,等.銀行管理信息系統(tǒng)服務(wù)器國產(chǎn)化過程中的ETL應(yīng)用遷移[J].計算機(jī)系統(tǒng)應(yīng)用,2015, 24(10):264-270.
[5]許國鋒,許鵬文,鄒紅霞.國產(chǎn)自主可控技術(shù)在軍隊(duì)院校辦公自動化中的應(yīng)用[J].四川兵工學(xué)報,2014,35(3): 130-132.
[6]劉曉楠,趙榮彩,龐建民.軟件移植、二進(jìn)制翻譯和國產(chǎn)處理器發(fā)展[J].信息工程大學(xué)學(xué)報,2014,15(5):613-616.
[7]Jaewon Oh,Woo Hyun Ahn,Taegong Kim.MVC architecture driven restructuring to achieve client-side web page composition[C]//The 7th IEEE International Conference on Software Engineering&Service Science.Washington:IEEE Computer Society,2017:45-53.