專利名稱:一種數(shù)據(jù)的兼容方法、板間消息的兼容方法及相應(yīng)系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,尤其涉及一種數(shù)據(jù)的兼容方法、板間消息的兼容方法及相應(yīng)系統(tǒng)。
背景技術(shù):
通常情況下,當(dāng)設(shè)備新增需求或是解決了某重大故障時(shí),需要進(jìn)行軟件版本升級(jí)。 普通的升級(jí)方法是重新啟動(dòng)設(shè)備,然后重新下載新版本的軟件。采用這種方法會(huì)導(dǎo)致在設(shè)備重新啟動(dòng)的這段時(shí)間內(nèi)業(yè)務(wù)斷流。因此,在許多場(chǎng)合需要使用不中斷業(yè)務(wù)的升級(jí)方法?,F(xiàn)有的不中斷業(yè)務(wù)的升級(jí)方法是利用熱備份機(jī)制,將新版本軟件復(fù)制到備用控制板上,模擬主備倒換的方式來(lái)實(shí)現(xiàn)不中斷業(yè)務(wù)的升級(jí)。如圖1所示,具體流程為在正常運(yùn)行舊版本軟件的設(shè)備上重啟備用控制板,備用控制板在啟動(dòng)時(shí)讀取新版本軟件,主用控制板按照熱備份的方式將各種業(yè)務(wù)表項(xiàng)同步到備用控制板上。當(dāng)同步完成后,執(zhí)行主備倒換。 此時(shí)運(yùn)行了新版本軟件的備用控制板作為主用控制板運(yùn)行。通過(guò)這樣的方法,達(dá)到不中斷業(yè)務(wù)來(lái)升級(jí)軟件的目的。而主備板在進(jìn)行交互時(shí)需要保證新舊軟件版本之間的數(shù)據(jù)兼容。由于在軟件版本的開(kāi)發(fā)過(guò)程中,往往會(huì)對(duì)原有的數(shù)據(jù)結(jié)構(gòu)進(jìn)行擴(kuò)展,這就有可能導(dǎo)致新舊版本間的通訊數(shù)據(jù)不兼容。如圖2所示,數(shù)據(jù)擴(kuò)展包括結(jié)構(gòu)體中的數(shù)據(jù)擴(kuò)展(即在結(jié)構(gòu)體中增加新數(shù)據(jù))、 結(jié)構(gòu)體中的子結(jié)構(gòu)體擴(kuò)展(即增加新的結(jié)構(gòu)體)、結(jié)構(gòu)體中包含的子結(jié)構(gòu)體的數(shù)據(jù)擴(kuò)展(即在子結(jié)構(gòu)體中增加新數(shù)據(jù))、結(jié)構(gòu)體中的數(shù)組擴(kuò)展(即增加新的數(shù)組)及結(jié)構(gòu)體中的數(shù)組的數(shù)據(jù)擴(kuò)展(即在數(shù)組中增加新數(shù)據(jù))。解決數(shù)據(jù)兼容的難點(diǎn)在于1、通訊設(shè)備中往往有上千種板間數(shù)據(jù)結(jié)構(gòu),當(dāng)需要對(duì)消息進(jìn)行擴(kuò)展時(shí),無(wú)法一一改造各模塊的發(fā)送和接收處理;2、當(dāng)A模塊中包含了 B模塊的結(jié)構(gòu)體時(shí),如果B模塊的結(jié)構(gòu)體被擴(kuò)展,會(huì)影響到A 模塊。也就是說(shuō),各模塊單獨(dú)改造意義不大。因此,對(duì)于許多不中斷業(yè)務(wù)升級(jí)的設(shè)備,其新版本在數(shù)據(jù)結(jié)構(gòu)的擴(kuò)展方面都受到了很大的限制,很多時(shí)候只能采取不擴(kuò)展或盡量少擴(kuò)展的策略。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種數(shù)據(jù)的兼容方法、板間消息的兼容方法及相應(yīng)系統(tǒng), 用于在不中斷業(yè)務(wù)的升級(jí)過(guò)程中,使新舊版本間的數(shù)據(jù)自動(dòng)轉(zhuǎn)換,以達(dá)到兼容的目的。為解決上述問(wèn)題,本發(fā)明提供了一種數(shù)據(jù)的兼容方法,應(yīng)用于采用主備倒換機(jī)制進(jìn)行軟件版本升級(jí)的過(guò)程中,在備用控制板下載了新版本軟件后,包括所述主用控制板和所述備用控制板分別提取本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體的結(jié)構(gòu)體信息;所述結(jié)構(gòu)體信息中至少包括對(duì)應(yīng)結(jié)構(gòu)體的長(zhǎng)度信息;所述主用控制板將本地各類結(jié)構(gòu)體的結(jié)構(gòu)體信息發(fā)送給所述備用控制板;
對(duì)于接收到的每一結(jié)構(gòu)體信息,所述備用控制板分別與本地相應(yīng)結(jié)構(gòu)體的結(jié)構(gòu)體信息進(jìn)行比對(duì),如不一致,則將所述主用控制板同步到本地的屬于該結(jié)構(gòu)體的數(shù)據(jù)擴(kuò)展為該結(jié)構(gòu)體在本地的長(zhǎng)度后,再保存到該結(jié)構(gòu)體在本地?cái)?shù)據(jù)庫(kù)的相應(yīng)位置。進(jìn)一步地,所述方法還包括所述備用控制板如判斷出接收到的結(jié)構(gòu)體信息與本地相應(yīng)結(jié)構(gòu)體的結(jié)構(gòu)體信息一致,則直接將屬于該結(jié)構(gòu)體的數(shù)據(jù)保存到該結(jié)構(gòu)體在本地?cái)?shù)據(jù)庫(kù)的相應(yīng)位置。進(jìn)一步地,所述主用控制板將本地各類結(jié)構(gòu)體的結(jié)構(gòu)體信息發(fā)送給所述備用控制板,具體包括所述主用控制板將本地各類結(jié)構(gòu)體的結(jié)構(gòu)體信息置于消息頭部,發(fā)送給所述備用控制板。進(jìn)一步地,在進(jìn)行結(jié)構(gòu)體信息提取之前,還包括所述主用控制板和備用控制板分別為本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體分配結(jié)構(gòu)體ID,然后分別在本地注冊(cè)表內(nèi)配置至少部分結(jié)構(gòu)體的名稱及該結(jié)構(gòu)體ID的對(duì)應(yīng)關(guān)系;所述主用控制板和所述備用控制板分別提取本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體的結(jié)構(gòu)體信息,具體包括所述主用控制板和所述備用控制板分別提取本地注冊(cè)表中保存的各結(jié)構(gòu)體ID對(duì)應(yīng)的結(jié)構(gòu)體的結(jié)構(gòu)體信息。進(jìn)一步地,所述主用控制板和所述備用控制板分別提取本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體的結(jié)構(gòu)體信息,具體包括編譯所述注冊(cè)表,形成目標(biāo)(OBJ)文件;其中,所述OBJ文件中包含各結(jié)構(gòu)體的編譯信息;然后用反匯編工具將所述OBJ文件轉(zhuǎn)換為帶有全局符號(hào)表的文本文件;將所述文本文件中相應(yīng)的結(jié)構(gòu)體信息加以整合,將整合后得到的結(jié)構(gòu)體信息參與編譯,得到各類結(jié)構(gòu)體的結(jié)構(gòu)體信息。相應(yīng)地,本發(fā)明還提供了一種板間消息的兼容方法,應(yīng)用于采用主備倒換機(jī)制進(jìn)行軟件版本升級(jí)的過(guò)程中,包括主用控制板和備用控制板分別提取雙方待交互消息的結(jié)構(gòu)體信息;所述主用控制板和所述備用控制板中任意一方在發(fā)送消息時(shí),消息發(fā)送方將所述消息的結(jié)構(gòu)體信息作為消息頭附加在消息實(shí)體之前進(jìn)行發(fā)送;消息接收方在收到所述消息后,根據(jù)接收到的結(jié)構(gòu)體信息,與本地保存的該消息對(duì)應(yīng)的結(jié)構(gòu)體信息進(jìn)行比較,如二者不一致,則對(duì)接收的消息實(shí)體的長(zhǎng)度進(jìn)行擴(kuò)展,形成與本端長(zhǎng)度一致的消息后再進(jìn)行處理。進(jìn)一步地,所述方法還包括所述消息接收方如判斷出接收到的所述消息的結(jié)構(gòu)體信息與本地保存的該消息的結(jié)構(gòu)體信息一致,則直接對(duì)該消息進(jìn)行處理。相應(yīng)地,本發(fā)明還提供了一種數(shù)據(jù)的兼容系統(tǒng),應(yīng)用于采用主備倒換機(jī)制進(jìn)行軟件版本升級(jí)的設(shè)備中,包括主用控制板和備用控制板;所述主用控制板用于提取本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體的結(jié)構(gòu)體信息;所述結(jié)構(gòu)體信息中至少包括對(duì)應(yīng)結(jié)構(gòu)體的長(zhǎng)度信息;還用于將本地各類結(jié)構(gòu)體的結(jié)構(gòu)體信息發(fā)送給所述備用控制板;所述備用控制板用于在下載了新版本軟件后,提取本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體的結(jié)構(gòu)體信息;還用于對(duì)于接收到的每一結(jié)構(gòu)體信息,分別與本地相應(yīng)結(jié)構(gòu)體的結(jié)構(gòu)體信息進(jìn)行比對(duì),如不一致,則將所述主用控制板同步到本地的屬于該結(jié)構(gòu)體的數(shù)據(jù)擴(kuò)展為該結(jié)構(gòu)體在本地的長(zhǎng)度后,再保存到該結(jié)構(gòu)體在本地?cái)?shù)據(jù)庫(kù)的相應(yīng)位置。進(jìn)一步地,所述備用控制板還用于在判斷出接收到的結(jié)構(gòu)體信息與本地相應(yīng)結(jié)構(gòu)體的結(jié)構(gòu)體信息一致時(shí),直接將屬于該結(jié)構(gòu)體的數(shù)據(jù)保存到該結(jié)構(gòu)體在本地?cái)?shù)據(jù)庫(kù)的相應(yīng)位置。進(jìn)一步地,所述主用控制板用于將本地各類結(jié)構(gòu)體的結(jié)構(gòu)體信息發(fā)送給所述備用控制板,具體包括所述主用控制板用于將本地各類結(jié)構(gòu)體的結(jié)構(gòu)體信息置于消息頭部,發(fā)送給所述備用控制板。進(jìn)一步地,所述主用控制板和備用控制板還用于在進(jìn)行結(jié)構(gòu)體信息提取之前,分別為本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體分配結(jié)構(gòu)體ID,然后分別在本地注冊(cè)表內(nèi)配置至少部分結(jié)構(gòu)體的名稱及該結(jié)構(gòu)體ID的對(duì)應(yīng)關(guān)系;所述主用控制板和所述備用控制板分別用于提取本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體的結(jié)構(gòu)體信息,具體包括所述主用控制板和所述備用控制板分別用于提取本地注冊(cè)表中保存的各結(jié)構(gòu)體 ID對(duì)應(yīng)的結(jié)構(gòu)體的結(jié)構(gòu)體信息。進(jìn)一步地,所述主用控制板和所述備用控制板分別用于提取本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體的結(jié)構(gòu)體信息,具體包括編譯所述注冊(cè)表,形成目標(biāo)(OBJ)文件;其中,所述OBJ文件中包含各結(jié)構(gòu)體的編譯信息;然后用反匯編工具將所述OBJ文件轉(zhuǎn)換為帶有全局符號(hào)表的文本文件;將所述文本文件中相應(yīng)的結(jié)構(gòu)體信息加以整合,將整合后得到的結(jié)構(gòu)體信息參與編譯,得到各類結(jié)構(gòu)體的結(jié)構(gòu)體信息。相應(yīng)地,本發(fā)明還提供了一種板間消息的兼容系統(tǒng),應(yīng)用于采用主備倒換機(jī)制進(jìn)行軟件版本升級(jí)的設(shè)備中,包括主用控制板和備用控制板;主用控制板和備用控制板消息分別用于提取雙方待交互消息的結(jié)構(gòu)體信息;還用于任意一方在發(fā)送消息時(shí),消息發(fā)送方將所述消息的結(jié)構(gòu)體信息作為消息頭附加在消息實(shí)體之前進(jìn)行發(fā)送;接收方用于在收到所述消息后,根據(jù)接收到的結(jié)構(gòu)體信息,與本地保存的該消息對(duì)應(yīng)的結(jié)構(gòu)體信息進(jìn)行比較,如二者不一致,則對(duì)接收的消息實(shí)體的長(zhǎng)度進(jìn)行擴(kuò)展,形成與本端長(zhǎng)度一致的消息后再進(jìn)行處理。進(jìn)一步地,所述消息接收方還用于在判斷出接收到的所述消息的結(jié)構(gòu)體信息與本地保存的該消息的結(jié)構(gòu)體信息一致時(shí),直接對(duì)該消息進(jìn)行處理。采用本發(fā)明后,可以達(dá)到以下有益效果從實(shí)際的升級(jí)過(guò)程看,完全滿足不中斷業(yè)務(wù)進(jìn)行數(shù)據(jù)兼容的要求;各個(gè)業(yè)務(wù)模塊只需要進(jìn)行注冊(cè),而不需要改造發(fā)送和接收消息的流程,改造的編碼工作量較??;可以處理復(fù)雜的數(shù)據(jù)兼容問(wèn)題,尤其是各模塊互相調(diào)用結(jié)構(gòu)體這種耦合嚴(yán)重的情況;可以以擴(kuò)展數(shù)據(jù)后的軟件版本為基礎(chǔ)版本,再次擴(kuò)展數(shù)據(jù)并升級(jí)。
圖1為現(xiàn)有技術(shù)中不中斷業(yè)務(wù)的升級(jí)流程圖;圖2為新版本軟件進(jìn)行數(shù)據(jù)擴(kuò)展后的結(jié)構(gòu)示意圖;圖3為本發(fā)明實(shí)施例中數(shù)據(jù)兼容方法的流程圖;圖4為本發(fā)明實(shí)施例中生成結(jié)構(gòu)體信息的流程圖;圖5為本發(fā)明實(shí)施例中擴(kuò)展2個(gè)字段的消息兼容流程示意圖;圖6為本發(fā)明實(shí)施例中數(shù)據(jù)兼容流程示意圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下文中將結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行詳細(xì)說(shuō)明。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互任意組合。本實(shí)施例主要提供了一種軟件版本升級(jí)過(guò)程中的數(shù)據(jù)兼容方法,用以解決在不中斷業(yè)務(wù)的前提下進(jìn)行軟件版本升級(jí)過(guò)程中的數(shù)據(jù)兼容問(wèn)題,其中,數(shù)據(jù)兼容包括數(shù)據(jù)兼容和板間消息兼容。在本實(shí)施例中,一種數(shù)據(jù)兼容方法,應(yīng)用于采用主備倒換機(jī)制進(jìn)行軟件版本升級(jí)的過(guò)程中,在備用控制板下載了新版本軟件后,如圖3所示,包括以下步驟步驟10、主用控制板和備用控制板分別提取本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體的結(jié)構(gòu)體信息;其中,同一類結(jié)構(gòu)體中各節(jié)點(diǎn)具有相同的長(zhǎng)度及相同類型的內(nèi)容;結(jié)構(gòu)體信息用于描述對(duì)應(yīng)結(jié)構(gòu)體,結(jié)構(gòu)體信息中至少包括對(duì)應(yīng)結(jié)構(gòu)體的長(zhǎng)度信息;步驟20、主用控制板將本地各類結(jié)構(gòu)體的結(jié)構(gòu)體信息發(fā)送給備用控制板;其中, 各類結(jié)構(gòu)體的結(jié)構(gòu)體信息可位于主用控制板發(fā)送給備用控制板的消息的頭部;步驟30、對(duì)于接收到的每一結(jié)構(gòu)體信息,備用控制板分別與本地相應(yīng)結(jié)構(gòu)體的結(jié)構(gòu)體信息進(jìn)行比對(duì),如不一致,則認(rèn)為該結(jié)構(gòu)體發(fā)生了數(shù)據(jù)擴(kuò)展,需將主用控制板同步到本地的屬于該結(jié)構(gòu)體的數(shù)據(jù)擴(kuò)展為該結(jié)構(gòu)體在本地的長(zhǎng)度后,再保存到該結(jié)構(gòu)體在本地?cái)?shù)據(jù)庫(kù)的相應(yīng)位置。如果一致,則直接將屬于該結(jié)構(gòu)體的數(shù)據(jù)保存到該結(jié)構(gòu)體在本地?cái)?shù)據(jù)庫(kù)的相應(yīng)位置。
由于在實(shí)際應(yīng)用過(guò)程中,可能只有某些結(jié)構(gòu)體的數(shù)據(jù)有后續(xù)進(jìn)行擴(kuò)展的可能,因此,為了進(jìn)一步簡(jiǎn)化主備板間處理流程,可在進(jìn)行結(jié)構(gòu)體信息提取之前,分別為主用控制板數(shù)據(jù)庫(kù)中和備用控制板數(shù)據(jù)庫(kù)中各類結(jié)構(gòu)體分配結(jié)構(gòu)體ID,然后分別在本地注冊(cè)表內(nèi)配置部分結(jié)構(gòu)體的名稱及該結(jié)構(gòu)體ID的對(duì)應(yīng)關(guān)系。其中,該部分結(jié)構(gòu)體為有可能進(jìn)行數(shù)據(jù)擴(kuò)展的結(jié)構(gòu)體。需要注意的是,為主備板間相同結(jié)構(gòu)體分配的結(jié)構(gòu)體ID應(yīng)保持一致。這樣,主用控制板和備用控制板在進(jìn)行結(jié)構(gòu)體信息的提取時(shí),可以根據(jù)注冊(cè)表中保存的對(duì)應(yīng)關(guān)系, 僅提取注冊(cè)表內(nèi)各ID對(duì)應(yīng)的結(jié)構(gòu)體的結(jié)構(gòu)體信息。如上述說(shuō)明可知,本實(shí)施例采取了字典轉(zhuǎn)換的方式,即提供一張注冊(cè)表,各模塊只需要將需要有可能進(jìn)行數(shù)據(jù)擴(kuò)展的結(jié)構(gòu)體加以注冊(cè)即可實(shí)現(xiàn)結(jié)構(gòu)體的轉(zhuǎn)換,而不需要修改原有的發(fā)送接收消息的代碼流程。而且,對(duì)擴(kuò)展過(guò)數(shù)據(jù)的軟件版本進(jìn)行再次升級(jí)開(kāi)發(fā)時(shí),即再次擴(kuò)展時(shí),對(duì)注冊(cè)過(guò)的結(jié)構(gòu)體不需要重新注冊(cè),可以直接擴(kuò)展結(jié)構(gòu)體使用。其中,步驟10中對(duì)提取各類結(jié)構(gòu)體的結(jié)構(gòu)體信息,如圖4所示,具體包括編譯注冊(cè)表文件,形成0BJ(目標(biāo))文件;其中,該OBJ文件中包含有各類結(jié)構(gòu)體的編譯信息;然后用反匯編工具將OBJ文件轉(zhuǎn)換為帶有全局符號(hào)表的文本文件;將文本文件中相應(yīng)的結(jié)構(gòu)體信息加以整合,然后將整合后到的結(jié)構(gòu)體信息參與編譯,得到各類結(jié)構(gòu)體的結(jié)構(gòu)體信息。通過(guò)這樣的方式,對(duì)用戶是完全透明的,用戶根本感知不到新舊版本間有一個(gè)數(shù)據(jù)轉(zhuǎn)換的過(guò)程。在本實(shí)施例中,板間消息的兼容方法,應(yīng)用于采用主備倒換機(jī)制進(jìn)行軟件版本升級(jí)的過(guò)程中,如圖5所示,包括1、主用控制板和備用控制板分別提取雙方待交互消息的結(jié)構(gòu)體信息;2、主備板中任意一方在發(fā)送消息時(shí),消息發(fā)送方將該消息的結(jié)構(gòu)體信息作為消息頭附加在消息實(shí)體之前進(jìn)行發(fā)送;3、消息接收方在收到該消息后,根據(jù)接收到的結(jié)構(gòu)體信息,與本地保存的該消息對(duì)應(yīng)的結(jié)構(gòu)體信息進(jìn)行比較,如二者不一致,則對(duì)接收的消息實(shí)體的長(zhǎng)度進(jìn)行擴(kuò)展,形成與本端長(zhǎng)度一致的消息再進(jìn)行處理。數(shù)據(jù)庫(kù)用于以樹(shù)形表的方式存儲(chǔ)用戶配置。在不中斷業(yè)務(wù)升級(jí)過(guò)程中,由于不允許配置,所以數(shù)據(jù)庫(kù)只需要在整體同步時(shí)加以轉(zhuǎn)換,而不必在實(shí)時(shí)同步時(shí)轉(zhuǎn)換。如圖6所示,軟件版本升級(jí)過(guò)程中的數(shù)據(jù)庫(kù)兼容方法,包括1、分別為數(shù)據(jù)庫(kù)中的每個(gè)葉子節(jié)點(diǎn)分配一個(gè)ID(以下稱注冊(cè)ID)。在寫(xiě)庫(kù)時(shí)填入注冊(cè)ID,數(shù)據(jù)庫(kù)在相應(yīng)葉子數(shù)據(jù)位置記錄下注冊(cè)ID。不需要進(jìn)行擴(kuò)展的數(shù)據(jù)庫(kù)節(jié)點(diǎn),其注冊(cè)ID填0 ;2、建立注冊(cè)表,將注冊(cè)ID和結(jié)構(gòu)體相關(guān)聯(lián);3、將結(jié)構(gòu)體信息發(fā)送到接收端。接收端剝離結(jié)構(gòu)體信息,然后查找本地結(jié)構(gòu)體。通過(guò)接收的結(jié)構(gòu)體信息及本地的結(jié)構(gòu)體信息,對(duì)接收到的數(shù)據(jù)進(jìn)行轉(zhuǎn)換,可以得到本地可以識(shí)別的數(shù)據(jù),即在本地注冊(cè);4、在備用控制板加載新版本完成后,主用控制板整體同步數(shù)據(jù)庫(kù)到備用控制板;5、整體同步完成后,主用控制板遍歷自己的數(shù)據(jù)庫(kù),找出攜帶注冊(cè)ID的葉子節(jié)點(diǎn),構(gòu)造消息發(fā)送相關(guān)結(jié)構(gòu)體信息到備用控制板。備用控制板收到結(jié)構(gòu)體信息后,和本地對(duì)應(yīng)葉子節(jié)點(diǎn)比較,對(duì)有差異的葉子節(jié)點(diǎn)進(jìn)行刪除操作,并將轉(zhuǎn)換后的數(shù)據(jù)重新寫(xiě)入對(duì)應(yīng)該葉子節(jié)點(diǎn)位置的數(shù)據(jù)庫(kù)節(jié)點(diǎn)。下面針對(duì)本發(fā)明以實(shí)例的形式作進(jìn)一步的闡述硬件環(huán)境一臺(tái)帶有主控制板和備控制板的通訊設(shè)備。軟件環(huán)境通訊設(shè)備所用軟件版本的處理步驟如下第1步在軟件版本上注冊(cè)100個(gè)數(shù)據(jù)結(jié)構(gòu),其中50個(gè)是板間消息結(jié)構(gòu)體,50個(gè)是數(shù)據(jù)庫(kù)節(jié)點(diǎn)結(jié)構(gòu)體。注冊(cè)完畢后,得到基礎(chǔ)版本,記為VI. 0 ;第2步在VI. 0版本上擴(kuò)展該消息的結(jié)構(gòu),得到的新版本記為VI. 1 ;第3步下載版本VI. 0到主用控制板;第4步重新啟動(dòng)備用控制板,并下載版本VI. 1到備用控制板;第5步備用控制板下載版本完成后,接收主用控制板的板間消息和數(shù)據(jù)庫(kù)同步消息;第6步板間消息和數(shù)據(jù)庫(kù)同步消息都被轉(zhuǎn)換為VI. 1版本擴(kuò)展后的數(shù)據(jù)結(jié)構(gòu);第7步主備倒換,備用控制板變?yōu)橹饔每刂瓢?,軟件版本VI. 1作為主用控制板開(kāi)始工作。擴(kuò)展了結(jié)構(gòu)體的各個(gè)模塊工作正常。本實(shí)施例中,一種數(shù)據(jù)的兼容系統(tǒng),應(yīng)用于采用主備倒換機(jī)制進(jìn)行軟件版本升級(jí)的設(shè)備中,包括主用控制板和備用控制板;所述主用控制板用于提取本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體的結(jié)構(gòu)體信息;所述結(jié)構(gòu)體信息中至少包括對(duì)應(yīng)結(jié)構(gòu)體的長(zhǎng)度信息;還用于將本地各類結(jié)構(gòu)體的結(jié)構(gòu)體信息發(fā)送給所述備用控制板;所述備用控制板用于在下載了新版本軟件后,提取本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體的結(jié)構(gòu)體信息;還用于對(duì)于接收到的每一結(jié)構(gòu)體信息,分別與本地相應(yīng)結(jié)構(gòu)體的結(jié)構(gòu)體信息進(jìn)行比對(duì),如不一致,則將所述主用控制板同步到本地的屬于該結(jié)構(gòu)體的數(shù)據(jù)擴(kuò)展為該結(jié)構(gòu)體在本地的長(zhǎng)度后,再保存到該結(jié)構(gòu)體在本地?cái)?shù)據(jù)庫(kù)的相應(yīng)位置。較佳地,所述備用控制板還用于在判斷出接收到的結(jié)構(gòu)體信息與本地相應(yīng)結(jié)構(gòu)體的結(jié)構(gòu)體信息一致時(shí),直接將屬于該結(jié)構(gòu)體的數(shù)據(jù)保存到該結(jié)構(gòu)體在本地?cái)?shù)據(jù)庫(kù)的相應(yīng)位置。較佳地,所述主用控制板用于將本地各類結(jié)構(gòu)體的結(jié)構(gòu)體信息發(fā)送給所述備用控制板,具體包括所述主用控制板用于將本地各類結(jié)構(gòu)體的結(jié)構(gòu)體信息置于消息頭部,發(fā)送給所述備用控制板。較佳地,所述主用控制板和備用控制板還用于在進(jìn)行結(jié)構(gòu)體信息提取之前,分別為本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體分配結(jié)構(gòu)體ID,然后分別在本地注冊(cè)表內(nèi)配置至少部分結(jié)構(gòu)體的名稱及該結(jié)構(gòu)體ID的對(duì)應(yīng)關(guān)系;所述主用控制板和所述備用控制板分別用于提取本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體的結(jié)構(gòu)體信息,具體包括所述主用控制板和所述備用控制板分別用于提取本地注冊(cè)表中保存的各結(jié)構(gòu)體 ID對(duì)應(yīng)的結(jié)構(gòu)體的結(jié)構(gòu)體信息。
較佳地,所述主用控制板和所述備用控制板分別用于提取本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體的結(jié)構(gòu)體信息,具體包括編譯所述注冊(cè)表,形成目標(biāo)(OBJ)文件;其中,所述OBJ文件中包含各結(jié)構(gòu)體的編譯信息;然后用反匯編工具將所述OBJ文件轉(zhuǎn)換為帶有全局符號(hào)表的文本文件;將所述文本文件中相應(yīng)的結(jié)構(gòu)體信息加以整合,將整合后得到的結(jié)構(gòu)體信息參與編譯,得到各類結(jié)構(gòu)體的結(jié)構(gòu)體信息。此外,本實(shí)施例中的板間消息的兼容系統(tǒng),應(yīng)用于采用主備倒換機(jī)制進(jìn)行軟件版本升級(jí)的設(shè)備中,包括主用控制板和備用控制板;主用控制板和備用控制板消息分別用于提取雙方待交互消息的結(jié)構(gòu)體信息;還用于任意一方在發(fā)送消息時(shí),消息發(fā)送方將所述消息的結(jié)構(gòu)體信息作為消息頭附加在消息實(shí)體之前進(jìn)行發(fā)送;接收方用于在收到所述消息后,根據(jù)接收到的結(jié)構(gòu)體信息,與本地保存的該消息對(duì)應(yīng)的結(jié)構(gòu)體信息進(jìn)行比較,如二者不一致,則對(duì)接收的消息實(shí)體的長(zhǎng)度進(jìn)行擴(kuò)展,形成與本端長(zhǎng)度一致的消息后再進(jìn)行處理。較佳地,所述消息接收方還用于在判斷出接收到的所述消息的結(jié)構(gòu)體信息與本地保存的該消息的結(jié)構(gòu)體信息一致時(shí),直接對(duì)該消息進(jìn)行處理。本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過(guò)程序來(lái)指令相關(guān)硬件完成,所述程序可以存儲(chǔ)于計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如只讀存儲(chǔ)器、磁盤(pán)或光盤(pán)等。可選地,上述實(shí)施例的全部或部分步驟也可以使用一個(gè)或多個(gè)集成電路來(lái)實(shí)現(xiàn)。相應(yīng)地,上述實(shí)施例中的各模塊/單元可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。本發(fā)明不限制于任何特定形式的硬件和軟件的結(jié)合。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。根據(jù)本發(fā)明的發(fā)明內(nèi)容,還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)的兼容方法,應(yīng)用于采用主備倒換機(jī)制進(jìn)行軟件版本升級(jí)的過(guò)程中,在備用控制板下載了新版本軟件后,包括所述主用控制板和所述備用控制板分別提取本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體的結(jié)構(gòu)體信息; 所述結(jié)構(gòu)體信息中至少包括對(duì)應(yīng)結(jié)構(gòu)體的長(zhǎng)度信息;所述主用控制板將本地各類結(jié)構(gòu)體的結(jié)構(gòu)體信息發(fā)送給所述備用控制板; 對(duì)于接收到的每一結(jié)構(gòu)體信息,所述備用控制板分別與本地相應(yīng)結(jié)構(gòu)體的結(jié)構(gòu)體信息進(jìn)行比對(duì),如不一致,則將所述主用控制板同步到本地的屬于該結(jié)構(gòu)體的數(shù)據(jù)擴(kuò)展為該結(jié)構(gòu)體在本地的長(zhǎng)度后,再保存到該結(jié)構(gòu)體在本地?cái)?shù)據(jù)庫(kù)的相應(yīng)位置。
2.如權(quán)利要求1所述的方法,其特征在于,還包括所述備用控制板如判斷出接收到的結(jié)構(gòu)體信息與本地相應(yīng)結(jié)構(gòu)體的結(jié)構(gòu)體信息一致, 則直接將屬于該結(jié)構(gòu)體的數(shù)據(jù)保存到該結(jié)構(gòu)體在本地?cái)?shù)據(jù)庫(kù)的相應(yīng)位置。
3.如權(quán)利要求1所述的方法,其特征在于所述主用控制板將本地各類結(jié)構(gòu)體的結(jié)構(gòu)體信息發(fā)送給所述備用控制板,具體包括 所述主用控制板將本地各類結(jié)構(gòu)體的結(jié)構(gòu)體信息置于消息頭部,發(fā)送給所述備用控制板。
4.如權(quán)利要求1所述的方法,其特征在于 在進(jìn)行結(jié)構(gòu)體信息提取之前,還包括所述主用控制板和備用控制板分別為本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體分配結(jié)構(gòu)體ID,然后分別在本地注冊(cè)表內(nèi)配置至少部分結(jié)構(gòu)體的名稱及該結(jié)構(gòu)體ID的對(duì)應(yīng)關(guān)系;所述主用控制板和所述備用控制板分別提取本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體的結(jié)構(gòu)體信息, 具體包括所述主用控制板和所述備用控制板分別提取本地注冊(cè)表中保存的各結(jié)構(gòu)體ID對(duì)應(yīng)的結(jié)構(gòu)體的結(jié)構(gòu)體信息。
5.如權(quán)利要求4所述的方法,其特征在于所述主用控制板和所述備用控制板分別提取本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體的結(jié)構(gòu)體信息, 具體包括編譯所述注冊(cè)表,形成目標(biāo)(OBJ)文件;其中,所述OBJ文件中包含各結(jié)構(gòu)體的編譯信息;然后用反匯編工具將所述OBJ文件轉(zhuǎn)換為帶有全局符號(hào)表的文本文件; 將所述文本文件中相應(yīng)的結(jié)構(gòu)體信息加以整合,將整合后得到的結(jié)構(gòu)體信息參與編譯,得到各類結(jié)構(gòu)體的結(jié)構(gòu)體信息。
6.一種板間消息的兼容方法,應(yīng)用于采用主備倒換機(jī)制進(jìn)行軟件版本升級(jí)的過(guò)程中, 包括主用控制板和備用控制板分別提取雙方待交互消息的結(jié)構(gòu)體信息; 所述主用控制板和所述備用控制板中任意一方在發(fā)送消息時(shí),消息發(fā)送方將所述消息的結(jié)構(gòu)體信息作為消息頭附加在消息實(shí)體之前進(jìn)行發(fā)送;消息接收方在收到所述消息后,根據(jù)接收到的結(jié)構(gòu)體信息,與本地保存的該消息對(duì)應(yīng)的結(jié)構(gòu)體信息進(jìn)行比較,如二者不一致,則對(duì)接收的消息實(shí)體的長(zhǎng)度進(jìn)行擴(kuò)展,形成與本端長(zhǎng)度一致的消息后再進(jìn)行處理。
7.如權(quán)利要求6所述的方法,其特征在于,還包括所述消息接收方如判斷出接收到的所述消息的結(jié)構(gòu)體信息與本地保存的該消息的結(jié)構(gòu)體信息一致,則直接對(duì)該消息進(jìn)行處理。
8.一種數(shù)據(jù)的兼容系統(tǒng),應(yīng)用于采用主備倒換機(jī)制進(jìn)行軟件版本升級(jí)的設(shè)備中,包括 主用控制板和備用控制板;所述主用控制板用于提取本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體的結(jié)構(gòu)體信息;所述結(jié)構(gòu)體信息中至少包括對(duì)應(yīng)結(jié)構(gòu)體的長(zhǎng)度信息;還用于將本地各類結(jié)構(gòu)體的結(jié)構(gòu)體信息發(fā)送給所述備用控制板;所述備用控制板用于在下載了新版本軟件后,提取本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體的結(jié)構(gòu)體信息;還用于對(duì)于接收到的每一結(jié)構(gòu)體信息,分別與本地相應(yīng)結(jié)構(gòu)體的結(jié)構(gòu)體信息進(jìn)行比對(duì),如不一致,則將所述主用控制板同步到本地的屬于該結(jié)構(gòu)體的數(shù)據(jù)擴(kuò)展為該結(jié)構(gòu)體在本地的長(zhǎng)度后,再保存到該結(jié)構(gòu)體在本地?cái)?shù)據(jù)庫(kù)的相應(yīng)位置。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于所述備用控制板還用于在判斷出接收到的結(jié)構(gòu)體信息與本地相應(yīng)結(jié)構(gòu)體的結(jié)構(gòu)體信息一致時(shí),直接將屬于該結(jié)構(gòu)體的數(shù)據(jù)保存到該結(jié)構(gòu)體在本地?cái)?shù)據(jù)庫(kù)的相應(yīng)位置。
10.如權(quán)利要求8所述的系統(tǒng),其特征在于所述主用控制板用于將本地各類結(jié)構(gòu)體的結(jié)構(gòu)體信息發(fā)送給所述備用控制板,具體包括所述主用控制板用于將本地各類結(jié)構(gòu)體的結(jié)構(gòu)體信息置于消息頭部,發(fā)送給所述備用控制板。
11.如權(quán)利要求8所述的系統(tǒng),其特征在于所述主用控制板和備用控制板還用于在進(jìn)行結(jié)構(gòu)體信息提取之前,分別為本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體分配結(jié)構(gòu)體ID,然后分別在本地注冊(cè)表內(nèi)配置至少部分結(jié)構(gòu)體的名稱及該結(jié)構(gòu)體ID的對(duì)應(yīng)關(guān)系;所述主用控制板和所述備用控制板分別用于提取本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體的結(jié)構(gòu)體信息,具體包括所述主用控制板和所述備用控制板分別用于提取本地注冊(cè)表中保存的各結(jié)構(gòu)體ID對(duì)應(yīng)的結(jié)構(gòu)體的結(jié)構(gòu)體信息。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于所述主用控制板和所述備用控制板分別用于提取本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體的結(jié)構(gòu)體信息,具體包括編譯所述注冊(cè)表,形成目標(biāo)(OBJ)文件;其中,所述OBJ文件中包含各結(jié)構(gòu)體的編譯信息;然后用反匯編工具將所述OBJ文件轉(zhuǎn)換為帶有全局符號(hào)表的文本文件; 將所述文本文件中相應(yīng)的結(jié)構(gòu)體信息加以整合,將整合后得到的結(jié)構(gòu)體信息參與編譯,得到各類結(jié)構(gòu)體的結(jié)構(gòu)體信息。
13.一種板間消息的兼容系統(tǒng),應(yīng)用于采用主備倒換機(jī)制進(jìn)行軟件版本升級(jí)的設(shè)備中, 包括主用控制板和備用控制板;主用控制板和備用控制板消息分別用于提取雙方待交互消息的結(jié)構(gòu)體信息;還用于任意一方在發(fā)送消息時(shí),消息發(fā)送方將所述消息的結(jié)構(gòu)體信息作為消息頭附加在消息實(shí)體之前進(jìn)行發(fā)送;接收方用于在收到所述消息后,根據(jù)接收到的結(jié)構(gòu)體信息,與本地保存的該消息對(duì)應(yīng)的結(jié)構(gòu)體信息進(jìn)行比較,如二者不一致,則對(duì)接收的消息實(shí)體的長(zhǎng)度進(jìn)行擴(kuò)展,形成與本端長(zhǎng)度一致的消息后再進(jìn)行處理。
14.如權(quán)利要求13所述的系統(tǒng),其特征在于所述消息接收方還用于在判斷出接收到的所述消息的結(jié)構(gòu)體信息與本地保存的該消息的結(jié)構(gòu)體信息一致時(shí),直接對(duì)該消息進(jìn)行處理。
全文摘要
一種數(shù)據(jù)的兼容方法、板間消息的兼容方法及相應(yīng)系統(tǒng),所述數(shù)據(jù)兼容方法應(yīng)用于采用主備倒換機(jī)制進(jìn)行軟件版本升級(jí)的過(guò)程中,在備用控制板下載了新版本軟件后,包括主用控制板和所述備用控制板分別提取本地?cái)?shù)據(jù)庫(kù)中各類結(jié)構(gòu)體的結(jié)構(gòu)體信息;所述結(jié)構(gòu)體信息中至少包括對(duì)應(yīng)結(jié)構(gòu)體的長(zhǎng)度信息;所述主用控制板將本地各類結(jié)構(gòu)體的結(jié)構(gòu)體信息發(fā)送給所述備用控制板;對(duì)于接收到的每一結(jié)構(gòu)體信息,所述備用控制板分別與本地相應(yīng)結(jié)構(gòu)體的結(jié)構(gòu)體信息進(jìn)行比對(duì),如不一致,則將所述主用控制板同步到本地的屬于該結(jié)構(gòu)體的數(shù)據(jù)擴(kuò)展為該結(jié)構(gòu)體在本地的長(zhǎng)度后,再保存到該結(jié)構(gòu)體在本地?cái)?shù)據(jù)庫(kù)的相應(yīng)位置。采用本發(fā)明后,完全滿足不中斷業(yè)務(wù)進(jìn)行數(shù)據(jù)兼容的要求。
文檔編號(hào)G06F11/14GK102495739SQ201110343640
公開(kāi)日2012年6月13日 申請(qǐng)日期2011年11月3日 優(yōu)先權(quán)日2011年11月3日
發(fā)明者吳展, 張明之, 張 浩, 胡志鋒 申請(qǐng)人:中興通訊股份有限公司