專利名稱:一種跨兩個(gè)中間件的系統(tǒng)及其編譯方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種跨兩個(gè)中間件的系統(tǒng)及其編譯方法,為軟件系統(tǒng)各服務(wù)提供統(tǒng)一接口調(diào)用格式,屬于軟件服務(wù)領(lǐng)域。
背景技術(shù):
最初我們的后臺(tái)服務(wù)都是運(yùn)行在TUXEDO上,隨著廣電業(yè)務(wù)的發(fā)展,移植到T0NGEASY上,同時(shí)兼容TUXED0,于是服務(wù)內(nèi)出現(xiàn)了很多為了兼容不得不寫(xiě)的代碼,給開(kāi)發(fā)工作帶來(lái)一定的負(fù)擔(dān),我們需要一種方法來(lái)屏蔽中間件平臺(tái)差異。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是,針對(duì)現(xiàn)有技術(shù)的不足,提供一種可屏蔽平臺(tái)差異的跨兩個(gè)中間件的系統(tǒng)編譯方法。本發(fā)明解決上述技術(shù)問(wèn)題的技術(shù)方案如下一種跨兩個(gè)中間件的系統(tǒng)編譯方法,具體步驟如下步驟1:封裝模塊將文件中存在中間件差異的中間件代碼,封裝在頭文件中;步驟2 :替換模塊調(diào)用封裝模塊發(fā)送至的封裝后的中間件代碼,將存在差異的中間件代碼替換為宏定義變量;步驟3 :編譯模塊開(kāi)始預(yù)編譯,解析從替換模塊發(fā)送至的宏定義變量,轉(zhuǎn)換成可編譯的中間件代碼,完成跨兩個(gè)中間件的系統(tǒng)的編譯。本發(fā)明的有益效果是本發(fā)明所述的方法采用宏定義的方式,將服務(wù)長(zhǎng)/短數(shù)據(jù)庫(kù)連接、服務(wù)聲明、參數(shù)輸入、輸出等采用宏定義的方式包裝,這樣開(kāi)發(fā)人員則不必關(guān)心中間件平臺(tái)差異,只編寫(xiě)和關(guān)注具體的程序邏輯實(shí)現(xiàn)代碼即可;屏蔽平臺(tái)差異,不僅減少了開(kāi)發(fā)人員的工作量,也使程序變得更加穩(wěn)定,給系統(tǒng)提供了一個(gè)穩(wěn)定保障。在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。進(jìn)一步,所述步驟I中封裝模塊用于定義文件中的頭文件,在頭文件中使用預(yù)編譯宏定義的方式,將存在中間件差異的中間件代碼,封裝在頭文件中。進(jìn)一步,所述步驟3中預(yù)編譯中間件的過(guò)程根據(jù)中間件的不同,進(jìn)行預(yù)編譯不同的中間件下的代碼。進(jìn)一步,不同中間件之間差異的代碼,主要體現(xiàn)在數(shù)據(jù)庫(kù)連接方式、服務(wù)的聲明方式、服務(wù)輸入?yún)?shù)獲取方式、服務(wù)輸出參數(shù)打包方式。本發(fā)明所要解決的另一個(gè)技術(shù)問(wèn)題是,針對(duì)現(xiàn)有技術(shù)的不足,提供一種可屏蔽平臺(tái)差異的跨兩個(gè)中間件的系統(tǒng)。本發(fā)明解決上述技術(shù)問(wèn)題的技術(shù)方案如下一種跨兩個(gè)中間件的系統(tǒng),包括封裝模塊、替換模塊和編譯模塊;所述封裝模塊用于將文件中存在中間件差異的中間件代碼,封裝在頭文件中;所述替換模塊調(diào)用封裝模塊發(fā)送至的封裝后的中間件代碼,將存在差異的中間件代碼替換為宏定義變量,并將替換后的服務(wù)程序文件發(fā)送至編譯模塊;所述編譯模塊接收從替換模塊發(fā)送至的服務(wù)程序文件,并解析從替換模塊發(fā)送至的宏定義變量,轉(zhuǎn)換成可編譯的中間件代碼,完成跨兩個(gè)中間件的系統(tǒng)的編譯。本發(fā)明的有益效果是本發(fā)明所述的系統(tǒng)采用宏定義的方式,將服務(wù)長(zhǎng)/短數(shù)據(jù)庫(kù)連接、服務(wù)聲明、參數(shù)輸入、輸出等采用宏定義的方式包裝,這樣開(kāi)發(fā)人員則不必關(guān)心中間件平臺(tái)差異,只編寫(xiě)和關(guān)注具體的程序邏輯實(shí)現(xiàn)代碼即可;屏蔽平臺(tái)差異,不僅減少了開(kāi)發(fā)人員的工作量,也使程序變得更加穩(wěn)定,給系統(tǒng)提供了一個(gè)穩(wěn)定保障。在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。進(jìn)一步,所述封裝模塊用于定義文件中的頭文件,在頭文件中使用預(yù)編譯宏定義的方式,將存在中間件差異的中間件代碼,封裝在頭文件中。 進(jìn)一步,所述編譯模塊根據(jù)中間件的不同,進(jìn)行預(yù)編譯不同的中間件下的代碼。進(jìn)一步,不同中間件之間差異的代碼,主要體現(xiàn)在數(shù)據(jù)庫(kù)連接方式、服務(wù)的聲明方式、服務(wù)輸入?yún)?shù)獲取方式、服務(wù)輸出參數(shù)打包方式。
圖1為本發(fā)明具體實(shí)施例1所述一種跨兩個(gè)中間件的系統(tǒng)編譯方法流程圖;圖2為本發(fā)明具體實(shí)施例2所述一種跨兩個(gè)中間件的系統(tǒng)編譯方法編譯圖;圖3為本發(fā)明具體實(shí)施例3所述的一種跨兩個(gè)中間件的系統(tǒng)的結(jié)構(gòu)圖。附圖中,各標(biāo)號(hào)所代表的部件列表如下1、封裝模塊,2、替換模塊,3、編譯模塊。
具體實(shí)施例方式以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。如圖1所示,本發(fā)明具體實(shí)施例1所述方法一種跨兩個(gè)中間件的系統(tǒng)編譯方法,具體步驟如下步驟1:封裝模塊將文件中存在中間件差異的中間件代碼,封裝在頭文件中;步驟2 :替換模塊調(diào)用封裝模塊發(fā)送至的封裝后的中間件代碼,將存在差異的中間件代碼替換為宏定義變量;步驟3 :編譯模塊開(kāi)始預(yù)編譯,解析從替換模塊發(fā)送至的宏定義變量,轉(zhuǎn)換成可編譯的中間件代碼,完成跨兩個(gè)中間件的系統(tǒng)的編譯。所述步驟I中封裝模塊用于定義文件中的頭文件,在頭文件中使用預(yù)編譯宏定義的方式,將存在中間件差異的中間件代碼,封裝在頭文件中。所述步驟3中預(yù)編譯中間件的過(guò)程根據(jù)中間件的不同,進(jìn)行預(yù)編譯不同的中間件下的代碼。不同中間件之間差異的代碼,主要體現(xiàn)在數(shù)據(jù)庫(kù)連接方式、服務(wù)的聲明方式、月艮務(wù)輸入?yún)?shù)獲取方式、服務(wù)輸出參數(shù)打包方式。如圖2所示,本方法具體實(shí)施例2實(shí)現(xiàn)了不同中間件下服務(wù)程序的兼容,目前在TUXED0/T0NGEASY兩種中間件服務(wù)程序中得到實(shí)施驗(yàn)證。實(shí)施方式
1、定義公共的頭文件pub_server. h,在頭文件使用預(yù)編譯宏定義的方式,將不同中間件差異的代碼,封裝成統(tǒng)一的宏定義變量DBL0NGC0NNECT :數(shù)據(jù)庫(kù)連接方式DECLARE_SERVICE :服務(wù)的聲明BEGIN_SERVICE :服務(wù)輸入?yún)?shù)獲取方式ADD_VALUE32 :服務(wù)輸出參數(shù)打包方式2、編寫(xiě)某一服務(wù) R1052. cpa)在服務(wù)中,定義數(shù)據(jù)庫(kù)連接方式的代碼,使用宏定義DBL0NGC0NNECT。b)服務(wù)的聲明使用宏定義DECLARE_SERVICE:DECLARE_SERVICE(sl052Cfm)c )服務(wù)輸入?yún)?shù)獲取,使用BEGIN_SERVICE();d )服務(wù)輸出參數(shù)打包,使用ADD_VALUE32 (O, sEffDate);ADD_VALUE32(I, sExpDate);3、編譯服務(wù)R1052.Cp,則會(huì)根據(jù)中間件的不同,把程序中使用的預(yù)編譯宏定義變量轉(zhuǎn)換成各自中間件下的代碼,完成程序的兼容。如圖3所示,為本發(fā)明具體實(shí)施例3所述的一種跨兩個(gè)中間件的系統(tǒng),包括封裝模塊1、替換模塊2和編譯模塊3 ;所述封裝模塊I用于將文件中存在中間件差異的中間件代碼,封裝在頭文件中;所述替換模塊2調(diào)用封裝模塊I發(fā)送至的封裝后的中間件代碼,將存在差異的中間件代碼替換為宏定義變量,并將替換后的服務(wù)程序文件發(fā)送至編譯模塊3 ;所述編譯模塊3接收從替換模塊2發(fā)送至的服務(wù)程序文件,并解析從替換模塊發(fā)送至的宏定義變量,轉(zhuǎn)換成可編譯的中間件代碼,完成跨兩個(gè)中間件的系統(tǒng)的編譯。所述封裝模塊I用于定義文件中的頭文件,在頭文件中使用預(yù)編譯宏定義的方式,將存在中間件差異的中間件代碼,封裝在頭文件中。所述編譯模塊3根據(jù)中間件的不同,進(jìn)行預(yù)編譯不同的中間件下的代碼。不同中間件之間差異的代碼,主要體現(xiàn)在數(shù)據(jù)庫(kù)連接方式、服務(wù)的聲明方式、月艮務(wù)輸入?yún)?shù)獲取方式、服務(wù)輸出參數(shù)打包方式。以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種跨兩個(gè)中間件的系統(tǒng)編譯方法,其特征在于,具體步驟如下步驟1:封裝模塊將文件中存在中間件差異的中間件代碼,封裝在頭文件中;步驟2 :替換模塊調(diào)用封裝模塊發(fā)送至的封裝后的中間件代碼,將存在差異的中間件代碼替換為宏定義變量;步驟3 :編譯模塊開(kāi)始預(yù)編譯,解析從替換模塊發(fā)送至的宏定義變量,轉(zhuǎn)換成可編譯的中間件代碼,完成跨兩個(gè)中間件的系統(tǒng)的編譯。
2.根據(jù)權(quán)利要求1所述一種跨兩個(gè)中間件的系統(tǒng)編譯方法,其特征在于,所述步驟I中封裝模塊用于定義文件中的頭文件,在頭文件中使用預(yù)編譯宏定義的方式,將存在中間件差異的中間件代碼,封裝在頭文件中。
3.根據(jù)權(quán)利要求2所述一種跨兩個(gè)中間件的系統(tǒng)編譯方法,其特征在于,所述步驟3中編譯模塊預(yù)編譯中間件的過(guò)程根據(jù)中間件的不同,進(jìn)行預(yù)編譯不同的中間件下的代碼。
4.根據(jù)權(quán)利要求1-3任一項(xiàng)所述一種跨兩個(gè)中間件的系統(tǒng)編譯方法,其特征在于,不同中間件之間差異的代碼,體現(xiàn)在數(shù)據(jù)庫(kù)連接方式、服務(wù)的聲明方式、服務(wù)輸入?yún)?shù)獲取方式、服務(wù)輸出參數(shù)打包方式。
5.一種跨兩個(gè)中間件的系統(tǒng),其特征在于,包括封裝模塊、替換模塊和編譯模塊;所述封裝模塊用于將文件中存在中間件差異的中間件代碼,封裝在頭文件中;所述替換模塊調(diào)用封裝模塊發(fā)送至的封裝后的中間件代碼,將存在差異的中間件代碼替換為宏定義變量,并將替換后的服務(wù)程序文件發(fā)送至編譯模塊;所述編譯模塊接收從替換模塊發(fā)送至的服務(wù)程序文件,并解析從替換模塊發(fā)送至的宏定義變量,轉(zhuǎn)換成可編譯的中間件代碼,完成跨兩個(gè)中間件的系統(tǒng)的編譯。
6.根據(jù)權(quán)利要求5所述一種跨兩個(gè)中間件的系統(tǒng),其特征在于,所述封裝模塊用于定義文件中的頭文件,在頭文件中使用預(yù)編譯宏定義的方式,將存在中間件差異的中間件代碼,封裝在頭文件中。
7.根據(jù)權(quán)利要求6所述一種跨兩個(gè)中間件的系統(tǒng),其特征在于,所述編譯模塊根據(jù)中間件的不同,進(jìn)行預(yù)編譯不同的中間件下的代碼。
8.根據(jù)權(quán)利要求5-7任一項(xiàng)所述一種跨兩個(gè)中間件的系統(tǒng),其特征在于,不同中間件之間差異的代碼,體現(xiàn)在數(shù)據(jù)庫(kù)連接方式、服務(wù)的聲明方式、服務(wù)輸入?yún)?shù)獲取方式、服務(wù)輸出參數(shù)打包方式。
全文摘要
本發(fā)明涉及一種跨兩個(gè)中間件的系統(tǒng)及其編譯方法,其編譯方法,具體步驟如下步驟1封裝模塊將文件中存在中間件差異的中間件代碼,封裝在頭文件中;步驟2替換模塊調(diào)用封裝模塊發(fā)送至的封裝后的中間件代碼,將存在差異的中間件代碼替換為宏定義變量;步驟3編譯模塊開(kāi)始預(yù)編譯,解析從替換模塊發(fā)送至的宏定義變量,轉(zhuǎn)換成可編譯的中間件代碼,完成跨兩個(gè)中間件的系統(tǒng)的編譯。本發(fā)明所述的方法采用宏定義的方式,將服務(wù)長(zhǎng)/短數(shù)據(jù)庫(kù)連接、服務(wù)聲明、參數(shù)輸入、輸出等采用宏定義的方式包裝,這樣開(kāi)發(fā)人員則不必關(guān)心中間件平臺(tái)差異;屏蔽平臺(tái)差異,不僅減少了開(kāi)發(fā)人員的工作量,也使程序變得更加穩(wěn)定,給系統(tǒng)提供了一個(gè)穩(wěn)定保障。
文檔編號(hào)G06F9/44GK103019686SQ20121047366
公開(kāi)日2013年4月3日 申請(qǐng)日期2012年11月20日 優(yōu)先權(quán)日2012年11月20日
發(fā)明者尹永興, 鹿林安, 檀敬庭 申請(qǐng)人:北京思特奇信息技術(shù)股份有限公司