新四季網

一種c++應用程式版本動態管理系統和方法

2023-06-06 14:31:01 2

專利名稱:一種c++應用程式版本動態管理系統和方法
技術領域:
本發明涉及一種C++應用程式版本動態管理系統和方法,在不停止服務的情況 下,對應用邏輯進行更新、擴展與增強,實現「即插即用」。
背景技術:
目前階段,一套應用系統在業務邏輯發生調整變化,需要升級時,主要採用以下幾 種實施方案一是申請計劃停機,更新應用程式;二是切換到備份系統,更新應用程式 』三 是採用集群方案,按機器、分批次更新應用程式。不論採用哪種方案,有的需要中斷系統服 務;有的上線操作或者故障後回滾操作非常複雜,加重運維人員工作負擔;有的需要額外 增加設備資源,提高運維成本。插件(plug-in)技術在業界有著廣泛的應用,很多軟體(比如firefOx、winamp 等)都支持它,其中以Eclipse平臺最著名。插件技術是指在軟體的設計和開發過程中,將 整個應用程式劃分為宿主程序和插件對象兩部分,宿主程序能夠調用插件對象,插件對象 能夠在宿主程序上實現自己的邏輯,而兩者的交互基於一種公共的通信契約。宿主程序可 以獨立於插件對象存在,因此,我們可以在避免改變宿主程序的情況下通過增減插件或修 改插件的方式增加或調整功能。使用了插件式機制的應用程式是一個框架,這個框架由於使用了插件架構,變得 穩固且具有良好的可擴展性。擴展性的優點在於它屏蔽了宿主程序與插件對象之間複雜的 交互和通信聯繫,第三方插件開發者無需關注框架的宿主程序是如何運行的,如何調用插 件對象等複雜問題。事實上,他們完全無需了解框架的宿主程序是如何編寫的,只須關心自 己所要解決問題的處理邏輯,只要這個邏輯編寫正確,並且符合插件式框架規定的格式和 流程,這個插件文件就將能夠被框架的宿主程序識別並安裝。以航信開放平臺應用為例,由於不同部門使用處理的業務數據類型千差萬別,業 務流程也複雜多變,都必須根據實際情況開發自己專門應用邏輯,如果每個新應用項目都 必須讓開發人員從頭構建,無疑是一種智力與經驗的浪費,同時浪費的還有寶貴的開發時 間。使用插件式機制的應用程式發布插件接口,它就好像一個應用功能的容器,應用插件開 發人員可以根據自己的需要實現協議接口,不斷填充和增強這個容器的功能,從而這個容 器為功能的擴展提供了無限的空間。插件可基於動態共享庫實現,動態共享庫是具有某種功能的一種軟體模塊,它可 以在需要時才被系統載入調用。動態共享庫文件本身並不能獨立運行,但它能夠被其他程 序調用實現。

發明內容
基於上述問題,本發明人提供一種C++應用程式版本動態管理系統和方法,通過 合理利用動態共享庫技術,可以解決以上問題。將應用邏輯封裝成動態共享庫,同時設計系 統框架對其實現動態裝載,在應用程式版本升級時,只需升級相應動態共享庫文件,然後系統框架對其進行裝載,實現應用程式的在線更新,整個過程不需要停機中斷服務,即所謂熱 插拔。本發明的C++應用程式版本動態管理系統包括應用插件模塊;宿主程序模塊;應 用處理接口類模塊;應用處理接口類動態註冊模塊;應用插件裝/卸載模塊;應用版本發布 模塊;應用版本獲取模塊。其中,應用插件模塊是後綴為.so類型的動態庫文件,該模塊將應用的業務處理 邏輯打包。其中,宿主程序模塊是可執行文件,相當於應用插件的容器,負責裝載應用插件, 創建應用處理接口對象,接受外部調用後,執行接口對象中的接口函數,該函數實現應用插 件中的業務邏輯處理。在處理外部請求之前還負責調用應用版本獲取模塊獲取應用版本, 比較版本號和應用當前使用的版本號,如果發生變化,則先調用應用插件卸載模塊,將當前 使用的應用插件卸載,然後調用應用插件裝載模塊,裝載新版本的應用插件,實現版本的更 新。如果一次應用處理需要分為多個應用模塊的話,第一個模塊負責把得到的應用版本號 發給後續模塊,從而保證這次請求的整個處理過程採用統一的應用版本。其中,應用處理接口類模塊用於實現宿主程序與應用插件之間的調用接口。為了 實現在應用插件業務邏輯發生變化時不需要更改宿主程序,該模塊將包括一個基類和相應 的派生類,並且基類中的接口函數定義成純虛函數,由宿主程序調用,派生類中的接口函數 實現具體應用邏輯,打包在應用插件中,這樣宿主程序裝載應用插件以後,就可以通過執行 純虛接口函數,利用C++對象的多態性來調用插件中的應用邏輯了。其中,應用處理接口類動態註冊模塊是在應用插件被裝載的過程中,將應用處理 接口派生類從應用插件中動態加載到宿主程序,並且要支持一個應用插件中註冊多個不同 的應用處理接口派生類。因為C++語言層面沒有根據類名動態加載對象的機制,所以我們 提供了一個根據類名從應用插件中動態加載所需的C++對象的工廠方法,宿主程序根據應 用處理接口派生類名調用工廠方法創建應用處理接口對象。應用插件中的應用處理接口派 生類中需要調用一個宏,該宏定義了一個全局對象,宿主程序調用作業系統庫函數dlopen 裝載應用插件時,全局對象的構造函數被執行完成把應用處理接口派生類的創建函數註冊 到工廠方法維護的C++對象創建方法容器中,該容器把C++類名和類的創建方法進行關聯。 宿主程序通過該工廠方法根據應用處理接口派生類名檢索創建方法並執行,完成C++對象 的動態加載,並且支持在一個應用插件中註冊多個應用處理接口派生類。其中,應用插件裝/卸載模塊的使用者是宿主程序,功能是通過調用作業系統庫 函數dlopen將應用插件裝載進宿主程序;通過調用作業系統庫函數dlclose將應用插件從 宿主程序中卸載。其中,應用版本發布模塊包括應用版本總控服務模塊、應用版本管理服務模塊和 版本公告牌以及配置文件。所述應用版本發布模塊將用戶配置的應用版本號從配置文件中 加載到版本公告牌中,用於宿主程序模塊感知版本的變化,以實現應用集群(多機)環境下 的版本發布。版本公告牌採用共享內存存儲(目的是提高訪問性能),分為A塊和B塊兩個 部分,在版本更新時更新非當前使用塊,版本生效時切換當前使用塊,採用A/B塊設計的目 的是為了版本回滾方便,只需切換當前使用塊即可。應用版本總控服務模塊負責接收版本 升級的命令,然後調用版本管理服務模塊,實現版本公告牌的版本更新。應用版本管理服務模塊接收應用版本總控服務模塊的調用,如果是升級則從版本配置文件中將版本號裝載到 版本公告牌中,如果是回滾則直接切換版本公告牌的當前使用塊。配置文件記錄應用版本 號以及應用插件的存放目錄。其中,應用版本獲取模塊接收外部請求訪問版本公告牌,獲取當前版本。本發明還提供一種C++應用程式版本動態管理方法,該方法包括版本發布和版本 更新兩個部分其中,版本發布包括如下步驟(如圖3)1.應用版本總控服務模塊接收版本升級的命令。2.應用版本總控服務模塊調用版本管理服務模塊。3.應用版本管理服務模塊判斷指令,如果是升級則從版本配置文件中將版本號裝 載到版本公告牌中,如果是回滾則直接切換版本公告牌的當前使用塊。其中,版本更新包括如下步驟(如圖4)1.宿主程序模塊在啟動時,調用應用處理接口類動態註冊模塊,創建一個C++對 象創建方法容器,該容器把C++類名和類的創建方法進行關聯。2.宿主程序模塊接收應用請求命令。3.宿主程序模塊調用應用版本獲取模塊獲取版本號。4.宿主程序在執行業務邏輯之前先判斷該版本號是否與宿主程序當前正在使用 的插件版本一致(最初執行時宿主程序當前插件版本號初始為空,所以會初始裝載一次), 如一致則繼續第7步驟執行,不一致則先調用應用插件卸載模塊將當前使用的應用插件卸 載,然後根據獲取的版本號調用應用插件裝載模塊裝載新版本的應用插件,實現版本的更 新。5.應用插件在被裝載時,會調用應用處理接口類動態註冊模塊,把應用處理接口 派生類的創建函數註冊到宿主程序維護的C++對象創建方法容器中。6.宿主程序根據應用處理接口派生類類名檢索C++對象創建方法容器,獲取應用 處理接口派生類的創建函數並執行,創建應用處理接口對象。7.宿主程序調用應用處理接口對象的接口函數,開始執行應用插件中的業務處理 邏輯。8.產生處理結果。本發明的C++應用程式版本動態管理系統和方法的優點在於1)採用動態共享庫可以少停機時間,提高服務質量,這一點對於提供7* 小時服 務的關鍵應用系統尤為重要;2)操作簡單,簡化上線、回滾流程;3)還可以實現基於用戶的版本控制,實現多版本並行,方便不同開發測試人員交 叉調試,節省測試資源。


參照如下附圖將更加易於理解本發明圖1為本發明C++應用程式版本動態管理系統方框2所示為版本號的傳遞過程示意圖。
圖3為本發明C++應用程式版本動態管理方法的版本發布流程圖4為本發明C++應用程式版本動態管理方法的版本更新流程圖5所示為版本發布管理模塊的設計方框圖。
具體實施例方式以下參照附圖,具體說明本發明C++應用程式版本動態管理系統的具體實施過程。如圖1所示,本發明C++應用程式版本動態管理系統包含應用插件模塊;宿主程序 模塊;應用處理接口類模塊;應用處理接口類動態註冊模塊;應用插件裝/卸載模塊;應用 版本發布模塊;應用版本獲取模塊。其中,應用插件模塊是後綴為.so類型的動態庫文件,該模塊將應用的業務處理 邏輯打包。其中,宿主程序模塊是可執行文件,相當於應用插件的容器,負責裝載應用插件, 創建應用處理接口對象,接受外部調用後,執行接口對象中的接口函數,該函數實現應用插 件中的業務邏輯處理。在處理外部請求之前還負責調用應用版本獲取模塊獲取應用版本, 比較版本號和應用當前使用的版本號,如果發生變化,則先調用應用插件卸載模塊,將當前 使用的應用插件卸載,然後調用應用插件裝載模塊,裝載新版本的應用插件,實現版本的更 新。如果一次應用處理需要分為多個應用模塊的話,第一個模塊負責把得到的應用版本號 發給後續模塊,從而保證這次請求的整個處理過程採用統一的應用版本。如圖2所示。其中,應用處理接口類模塊用於實現宿主程序與應用插件之間的調用接口。為了 實現在應用插件業務邏輯發生變化時不需要更改宿主程序,該模塊將包括一個基類和相應 的派生類,並且基類中的接口函數定義成純虛函數,由宿主程序調用,派生類中的接口函數 實現具體應用邏輯,打包在應用插件中,這樣宿主程序裝載應用插件以後,就可以通過執行 純虛接口函數,利用C++對象的多態性來調用插件中的應用邏輯了。其中,應用處理接口類動態註冊模塊是在應用插件被裝載的過程中,將應用處理 接口派生類從應用插件中動態加載到宿主程序,並且要支持一個應用插件中註冊多個不同 的應用處理接口派生類。因為C++語言層面沒有根據類名動態加載對象的機制,所以我們 提供了一個根據類名從應用插件中動態加載所需的C++對象的工廠方法,宿主程序根據應 用處理接口派生類名調用工廠方法創建應用處理接口對象。應用插件中的應用處理接口派 生類中需要調用一個宏,該宏定義了一個全局對象,宿主程序調用作業系統庫函數dlopen 裝載應用插件時,全局對象的構造函數被執行完成把應用處理接口派生類的創建函數註冊 到工廠方法維護的C++對象創建方法容器中,該容器把C++類名和類的創建方法進行關聯。 宿主程序通過該工廠方法根據應用處理接口派生類名檢索創建方法並執行,完成C++對象 的動態加載,並且支持在一個應用插件中註冊多個應用處理接口派生類。其中,應用插件裝/卸載模塊的使用者是宿主程序,功能是通過調用作業系統庫 函數dlopen將應用插件裝載進宿主程序;通過調用作業系統庫函數dlclose將應用插件從 宿主程序中卸載。如圖3所示,其中,應用版本發布模塊包括應用版本總控服務模塊、應用版本管理 服務模塊和版本公告牌以及配置文件。所述應用版本發布模塊將用戶配置的應用版本號從配置文件中加載到版本公告牌中,用於宿主程序模塊感知版本的變化,以實現應用集群 (多機)環境下的版本發布。版本公告牌採用共享內存存儲(目的是提高訪問性能),分為 A塊和B塊兩個部分,在版本更新時更新非當前使用塊,版本生效時切換當前使用塊,採用 A/B塊設計的目的是為了版本回滾方便,只需切換當前使用塊即可。應用版本總控服務模塊 負責接收版本升級的命令,然後調用版本管理服務模塊,實現版本公告牌的版本更新。應用 版本管理服務模塊接收應用版本總控服務模塊的調用,如果是升級則從版本配置文件中將 版本號裝載到版本公告牌中,如果是回滾則直接切換版本公告牌的當前使用塊。配置文件 記錄應用版本號以及應用插件的存放目錄。其中,應用版本獲取模塊接收外部請求訪問版本公告牌,獲取當前版本。首先,應用處理接口類模塊為AppPlugin,裡面定義三個純虛接口 SVrInit、 svrDone和svrProcess。應用處理接口類在應用插件中實現應用處理接口類的派生類。 svrlnit用於應用插件中實現服務啟動時應用需要做的一些初始化工作,比如建立資料庫 連接等;svrDone用於應用插件中實現服務停止時應用需要做的一些資源釋放工作,比如 斷開資料庫連接等;svrProcess用於應用插件中實現應用處理的具體業務邏輯。應用插件裝/卸載模塊實現一個具有Wrapper facade模式的類PluginHelper,該 類包括=Load函數,封裝作業系統的dlopen函數,實現應用插件的裝載;Unload函數,封裝 dlclose函數,實現應用插件的卸載。應用處理接口類動態註冊模塊,實現動態加載C++對象到宿主程序的工廠,定義 工廠類factory,它維護一個全局的C++對象創建方法關聯容器CreatorContainer,把類名 和類對象的創建函數指針關聯,如下所示typedef void水(水CreateFuntion) (void);typedef map〈string,CreateFuntion>CreatorContainer ;Factory 還提供一個 void*Create (const std: string& className)方法被宿主 程序調用,該方法根據類名className檢索關聯容器CreatorContainer獲取類的創建函數 指針,然後執行該函數創建對象。定義模板類 Creater :template〈class T>class Crcater ;該模板類提供create函數創建模板T類型的對象static void氺create {return static_cast(new Τ) ;}模板類 Creater 的構造函數 Creater (const std::string& classname)把函數指 針create和模板參數類名classname註冊到Factory類維護的容器CreatorContainer中。定義一個宏REGISTER #define REGISTER(class_name)\Createrclass_name(#class_name)這個宏在應用處理接口派生類中使用,例如一個應用處理接口派生類叫BusinessPlugin,那麼在該類的定義文件(cpp文 件)中需聲明宏:REGISTER(BusinessPlugin),該宏用BusinessPlugin這個類型參數化 Creater模板類,定義一個模板類的全局對象。因為是全局對象,所以它在dlopen加載應用 插件時會定義Creater〈BusinessPlugin>BusinessPlugin ( "BusinessPlugin,,);
這樣,就執行Creater的構造函數把應用處理接口派生類的創建函數註冊到 Factory維護的C++對象創建方法容器中,宿主程序調用Factory類的create方法就能創 建註冊類的對象,然後就可以調用對象的svrlnit、svrDone和svrProcess方法,執行相應 應用業務邏輯。應用插件模塊是後綴為.so類型的動態庫文件,該模塊將應用的業務處理邏輯 打包,裡面包括應用處理接口派生類,具體打包方式按照作業系統提供的方式,比如在 Solaris平臺,編譯選項採用-KPIC,連結選項採用-G。宿主程序模塊採用Tuxedo(交易中間件)服務實現,在啟動時初始化當前版本為 空,在處理外部請求之前調用應用版本獲取模塊獲取應用版本,比較版本號和應用當前使 用的版本號,如果不一致,則先調用應用插件卸載模塊,將當前使用的應用插件卸載,然後 調用應用插件裝載模塊,裝載新版本的應用插件,然後根據應用插件接口派生類的名字檢 索C++對象創建方法容器,獲得派生類的創建函數並調用,創建應用插件接口對象,然後執 行對象的svrProcess方法,執行相應應用業務邏輯得到處理結果並返回。如果一次應用處 理需要分為多個應用模塊的話,第一個模塊負責把得到的應用版本號發給後續模塊,從而 保證這次請求的整個處理過程採用統一的應用版本。本實施實例中,應用版本發布模塊包括兩個tuxedo (交易中間件)服務應用版本 總控服務模塊(APP_VER_CTL)、應用版本管理服務模塊(APP_VER_MNG),另外還有版本公告 牌、版本配置文件。本實施實例中,如圖5所示,應用版本總控服務模塊統一控制版本的更新以及多 個機器之間版本的一致性。它接收管理工具的更新請求並分發給應用版本管理服務模塊 (APP_VER_MNG)。管理服務模塊負責將版本信息更新至版本公告牌並由總控服務模塊控制 生效。應用版本獲取服務模塊通過訪問版本公告牌獲得當前版本信息,通過報文傳給後續 應用處理。具體升級流程如下版本配置文件被更新;調用版本管理服務讀取配置文件至版本公告牌;應用服務讀取公告牌,發現版本變化後重新裝卸應用插件;如需回滾則直接調用版本管理服務,根據配置文件中回滾信息,直接回滾至之前 版本。1)應用版本總控服務模塊服務進程名為app_Ver_Ctl,為了防止版本更新請求的並發,只部署一個,啟動順 序在管理服務和應用服務之前。總控服務模塊接收版本更新請求,異步調用管理服務模塊,要求更新版本信息。待 所有管理服務模塊均更新結束後,同步調用管理服務模塊,切換活動塊,生效新的版本信 肩、ο數據接口 服務名為APPVERCTL序號中文名英文名數據類型描述輸入1指令FC0MMANDshort1:升級 2丨丨丨丨滾輸出i狀態FSTATUSshort0成功 -1:失敗2)應用版本管理服務模塊服務進程名為app_Ver_mng,一個機器部署一個,啟動順序在總控服務模塊之後和 應用服務模塊之前。服務啟動時創建版本公告牌的共享內存,並初始化。管理服務模塊接收總控服務模塊的版本更新請求,生效請求。版本信息查詢請求將控制塊結構返回。服務停止時釋放分配的共享內存塊。數據接口 >版本更新服務服務名為APPVMLXX,XX表示01_99的數字,代表不同機器,每個物理機各不相同。
η-'ν中文名英文名數據炎型描述 ΛΤ 指令FC0MMANI)short1升級,2:回滾活動塊標誌FACTIVESiMIDSTRING活動塊標誌,A或B輸出1狀態n^STATUSshort0成功, -1:失敗輸出2版本信息FVERNAMESTRING成/[J插件版本,如 l.ibav. so. 1.0)>版本生效服務服務名為APPVMAXX,XX表示01_99的數字,代表不同機器,每個物理機各不相同。
序號中文名英文名數據類型描述輸入1活動塊標誌FACTIVESHMIDSTRING活動塊標誌,A或B輸出1狀態FSTATUSshort0 成功,-1 失敗3)版本公告牌版本公告牌由一塊共享內存組成,邏輯上劃分為共享內存控制塊、共享內存塊A 和共享內存塊B三個部分。控制塊存放控制信息,內存塊A和B存放版本信息。共享內存塊由外部設定的key值創建。
共享內存控制塊存放如下數據當前可用的共享內存塊編號,A或B,在內存初始創建後(即管理服務啟動時),兩 塊共享內存均不可用,設為0。共享內存塊A/B的生效時間。共享內存塊A/B的狀態,正常/裝載中/失效。共享內存塊A/B共享內存塊A/B由中順序存放著各應用的版本信息應用的代號charappId[MAXAPPIDLEN];應用的版本:charverName [2] [APPVERSIONLEN]。4)版本配置文件MAXMACHINE =應用伺服器機器數目......#下面是應用版本信息[PLUGIN]IPCKEY=版本公告牌的共享內存鍵值PLUGIN_PATH =插件存放目錄APP_VER =應用插件版本名本實施實例中,應用版本獲取服務模塊採用一個Tuxedo服務實現。服務進程名為app_fe_rcv,一個機器可部署多個,啟動順序在總控服務模塊、管理 服務模塊之後和應用服務模塊之前。服務啟動時連接版本公告牌的共享內存。接收應用請求,查詢版本公告牌,獲取版本信息,將版本信息填入報文,發給應用 服務。服務停止時斷開版本公告牌的共享內存。數據接口服務名為APPFERCV
權利要求
1.一種C++應用程式版本動態管理系統,其特徵在於,所示系統包括應用插件模塊; 宿主程序模塊;應用處理接口類模塊;應用處理接口類動態註冊模塊;應用插件裝/卸載模 塊;應用版本發布模塊;應用版本獲取模塊。
2.根據權利要求1的C++應用程式版本動態管理系統,其中,所述應用插件模塊是後綴為.so類型的動態庫文件,該模塊將應用的業務處理邏輯打包;所述宿主程序模塊是可執行文件,相當於應用插件的容器,負責裝載應用插件,創建應 用處理接口對象,接受外部調用後,執行接口對象中的接口函數,該函數實現應用插件中的 業務邏輯處理;所述應用處理接口類模塊用於實現宿主程序與應用插件之間的調用接口 ;所述應用處 理接口類模塊包括一個基類和相應的派生類,並且基類中的接口函數定義成純虛函數,由 宿主程序調用,派生類中的接口函數實現具體應用邏輯,打包在應用插件中,宿主程序裝載 應用插件以後,可以通過執行純虛接口函數,利用C++對象的多態性來調用插件中的應用 邏輯;所述應用處理接口類動態註冊模塊是在應用插件被裝載的過程中,將應用處理接口派 生類從應用插件中動態加載到宿主程序,並且要支持一個應用插件中註冊多個不同的應用 處理接口派生類;所述應用插件裝/卸載模塊,由宿主程序使用,通過調用作業系統庫函數dlopen將應 用插件裝載進宿主程序;通過調用作業系統庫函數dlclose將應用插件從宿主程序中卸 載。所述應用版本發布模塊,包括應用版本總控服務模塊、應用版本管理服務模塊和版本 公告牌以及配置文件;所述應用版本發布模塊將用戶配置的應用版本號從配置文件中加載 到版本公告牌中,用於宿主程序模塊感知版本的變化,實現應用集群環境下的版本發布;所述應用版本獲取模塊接收外部請求訪問版本公告牌,獲取當前版本。
3.根據權利要求2的C++應用程式版本動態管理系統,其中,所述宿主程序模塊在處理外部請求之前還負責調用所述應用版本獲取模塊獲取應用 版本,比較版本號和應用當前使用的版本號,如果發生變化,則先調用所述應用插件卸載模 塊,將當前使用的應用插件卸載,然後調用所述應用插件裝載模塊,裝載新版本的應用插 件,實現版本的更新;如果一次應用處理需要分為多個應用模塊的話,第一個模塊負責把得 到的應用版本號發給後續模塊,從而保證這次請求的整個處理過程採用統一的應用版本。
4.根據權利要求2的C++應用程式版本動態管理系統,其中,所述應用處理接口類動態註冊模塊還提供一個根據類名從應用插件中動態加載所需 的C++對象的工廠方法,所述宿主程序根據應用處理接口派生類名調用工廠方法創建應用 處理接口對象;應用插件中的應用處理接口派生類中調用一個宏,該宏定義了一個全局對 象,所述宿主程序調用作業系統庫函數dlopen裝載應用插件時,全局對象的構造函數被執 行完成把所述應用處理接口派生類的創建函數註冊到工廠方法維護的C++對象創建方法 容器中,該容器把C++類名和類的創建方法進行關聯,所述宿主程序通過所述工廠方法根 據所述應用處理接口派生類名檢索創建方法並執行,完成C++對象的動態加載,並且支持 在一個應用插件中註冊多個應用處理接口派生類。
5.根據權利要求2的C++應用程式版本動態管理系統,其中,在所述應用版本發布模塊中所述版本公告牌採用共享內存存儲,分為A塊和B塊兩個部分,在版本更新時更新非當 前使用塊,版本生效時切換當前使用塊,實現版本回滾方便,只需切換當前使用塊即可;所述應用版本總控服務模塊負責接收版本升級的命令,然後調用所述版本管理服務模 塊,實現版本公告牌的版本更新;所述應用版本管理服務模塊接收應用版本總控服務模塊的調用,如果是升級則從版本 配置文件中將版本號裝載到所述版本公告牌中,如果是回滾則直接切換所述版本公告牌的 當前使用塊;所述配置文件記錄應用版本號以及應用插件的存放目錄。
6.一種通過權利要求1-5所述的C++應用程式版本動態管理系統進行C++應用程式版 本動態管理的方法,其特徵在於所述方法包括版本發布和版本更新兩個部分,其中所述版本發布包括如下步驟1)應用版本總控服務模塊接收版本升級的命令;2)應用版本總控服務模塊調用版本管理服務模塊;3)應用版本管理服務模塊判斷指令,如果是升級則從版本配置文件中將版本號裝載到 版本公告牌中,如果是回滾則直接切換版本公告牌的當前使用塊;所述版本更新包括如下步驟1)宿主程序模塊在啟動時,調用應用處理接口類動態註冊模塊,創建一個C++對象創 建方法容器,該容器把C++類名和類的創建方法進行關聯;2)宿主程序模塊接收應用請求命令;3)宿主程序模塊調用應用版本獲取模塊獲取版本號;4)宿主程序在執行業務邏輯之前先判斷該版本號是否與宿主程序當前正在使用的插 件版本一致(最初執行時宿主程序當前插件版本號初始為空,所以會初始裝載一次),如一 致則繼續第7步驟執行,不一致則先調用應用插件卸載模塊將當前使用的應用插件卸載, 然後根據獲取的版本號調用應用插件裝載模塊裝載新版本的應用插件,實現版本的更新;5)應用插件在被裝載時,會調用應用處理接口類動態註冊模塊,把應用處理接口派生 類的創建函數註冊到宿主程序維護的C++對象創建方法容器中;6)宿主程序根據應用處理接口派生類類名檢索C++對象創建方法容器,獲取應用處理 接口派生類的創建函數並執行,創建應用處理接口對象;7)宿主程序調用應用處理接口對象的接口函數,開始執行應用插件中的業務處理邏輯;8)產生處理結果。
全文摘要
本發明提供一種C++應用程式版本動態管理系統和方法,包括應用插件模塊、宿主程序模塊、應用處理接口類模塊、應用處理接口類動態註冊模塊、應用插件裝/卸載模塊、應用版本發布模塊、應用版本獲取模塊;通過合理利用動態共享庫技術,將應用邏輯封裝成動態共享庫,同時設計系統框架對其實現動態裝載,在應用程式版本升級時,只需升級相應動態共享庫文件,然後系統框架對其進行裝載,實現應用程式的在線更新,整個過程不需要停機中斷服務,即所謂熱插拔。
文檔編號G06F9/445GK102073520SQ201010624578
公開日2011年5月25日 申請日期2010年12月30日 優先權日2010年12月30日
發明者楊勇生, 段鍇, 許囡囡 申請人:中國民航信息網絡股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀