本發(fā)明涉及交換機(jī)技術(shù)領(lǐng)域,具體提供一種交換機(jī)管理軟件架構(gòu)。
背景技術(shù):
計(jì)算機(jī)具有存儲信息量大,使用者獲取信息方便快捷等優(yōu)點(diǎn),受到廣泛的應(yīng)用,特別是隨著社會及經(jīng)濟(jì)的飛速發(fā)展,計(jì)算機(jī)的應(yīng)用領(lǐng)域越來越廣泛,給社會的通信帶來很大的方便。交換機(jī)是一種在通信系統(tǒng)中完成信息交換功能的設(shè)備。交換機(jī)在組建網(wǎng)絡(luò)時(shí)需要進(jìn)行一些配置和管理工作,其配置、管理的簡易型在一定程度上決定著用戶的體驗(yàn)。由此可見,交換機(jī)的管理軟件的開發(fā)在交換機(jī)軟件開發(fā)中占據(jù)重要地位。在實(shí)際的產(chǎn)品開發(fā)過程中,由于更換硬件平臺或者交換機(jī)管理軟件需求的變化,會給交換機(jī)軟件開發(fā)工作帶來更多的工作量,因此急需一種能夠節(jié)約產(chǎn)品開發(fā)成本的交換機(jī)管理軟件架構(gòu)設(shè)計(jì)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的技術(shù)任務(wù)是針對上述存在的問題,提供一種能夠節(jié)約產(chǎn)品開發(fā)成本,提高工作效率,通用性強(qiáng),可擴(kuò)展性強(qiáng)的交換機(jī)管理軟件架構(gòu)。
為實(shí)現(xiàn)上述目的,本發(fā)明提供了如下技術(shù)方案:
一種交換機(jī)管理軟件架構(gòu),由ui層、命令解析層和命令執(zhí)行代理層構(gòu)成:ui層包括gui和cli,提供給用戶操作接口層,獲取用戶操作命令;命令解析層用于解析ui層傳遞來的操作命令,并封裝成統(tǒng)一的操作命令;命令執(zhí)行代理層為ui層、命令解析層的統(tǒng)一抽象層,接收命令解析層發(fā)來的操作命令,并解析操作命令后調(diào)用相應(yīng)硬件平臺的管理、配置實(shí)現(xiàn)交換機(jī)的管理。
所述ui(userinterface)即用戶界面,gui(graphicaluserinterface)即圖形用戶界面,cli(command-lineinterface)即命令行界面。
所述ui層是比較獨(dú)立的,主要負(fù)責(zé)和用戶的交互,注重的是用戶使用流程設(shè)計(jì)和用戶體驗(yàn)。在結(jié)構(gòu)上,ui層具有較高的模塊化,可根據(jù)不同需求快速部署用戶交互流程和ui風(fēng)格。
所述命令解析層用于解析用戶輸入的指令,引導(dǎo)用戶正確操作以及用戶輸入錯(cuò)誤時(shí)給予友好的提示信息。
所述命令執(zhí)行代理層對上層來說提供統(tǒng)一的操作api,api一般是由c語言編寫,屏蔽了不同硬件、軟件平臺的差異性,對于下層來說,根據(jù)不同平臺提供不同的接口,以滿足軟件的可移植性和擴(kuò)展性。
本發(fā)明中,為管理用戶和交換機(jī)配置信息,使用了嵌入式數(shù)據(jù)庫sqlite。將交換機(jī)配置信息存在于交換機(jī)芯片的內(nèi)存中,配置信息在交換機(jī)掉電后會丟失,因此需要將用戶配置的信息保存到非易失性存儲器里,本發(fā)明中存儲到norflash中,使用嵌入式數(shù)據(jù)庫sqlite將交換機(jī)配置信息保存,在系統(tǒng)上電時(shí),讀取該數(shù)據(jù)庫內(nèi)容用于配置交換機(jī)。使用sqlite數(shù)據(jù)庫可以簡化交換機(jī)用戶管理和交換機(jī)配置信息的管理,主要包括交換機(jī)用戶的增、刪、改、查以及交換機(jī)配置信息的保存、修改、導(dǎo)入、導(dǎo)出等。
工作過程中,通過gui、cli獲取用戶的操作命令,命令解析層解析命令并封裝成統(tǒng)一的操作命令傳遞給命令執(zhí)行代理層,命令執(zhí)行代理層接收命令解析層發(fā)來的操作命令,解析此操作命令后調(diào)用相應(yīng)硬件平臺的管理、配置api實(shí)現(xiàn)交換機(jī)的管理。
所述交換機(jī)管理軟件架構(gòu)可以兼容常見的交換芯片的管理、配置,層內(nèi)高內(nèi)聚,層間低耦合,具有跨平臺性、軟件可擴(kuò)展性,可以高效地應(yīng)對交換機(jī)管理軟件的需求變化,方便地移植到新的硬件平臺,對快速開發(fā)交換機(jī)產(chǎn)品具有重要意義,并且該設(shè)計(jì)方法簡單、高效,具有很強(qiáng)的實(shí)用性,且易于推廣。
作為優(yōu)選,所述ui層的gui采用前端、后端程序低耦合設(shè)計(jì),即靜態(tài)頁面和動(dòng)態(tài)頁面相分離,前端使用html、css語言編寫,后端處理使用php腳本語言。
使用jqueryui前端框架進(jìn)行g(shù)ui開發(fā)。
gui基本的前端交互和驗(yàn)證采用javascript。
作為優(yōu)選,gui使用webserver提供web服務(wù),并使用php腳本語言解析前端ui層傳遞來的操作指令。
作為優(yōu)選,所述webserver使用apacheweb服務(wù)器。
作為優(yōu)選,所述ui層的cli采用開源庫gnureadline,實(shí)現(xiàn)命令自動(dòng)補(bǔ)全、命令自動(dòng)提示、命令歷史記錄功能。
cli使用c語言開發(fā)。
所述cli支持標(biāo)準(zhǔn)的bashshell腳本程序,支持串口、telnet、ssh等。
作為優(yōu)選,cli解析程序使用cliserver解析操作命令,并封裝成統(tǒng)一的格式發(fā)送到命令執(zhí)行代理層。
cli后臺服務(wù)程序有sshserver、telnetserver等。
作為優(yōu)選,所述命令解析層解析ui層傳遞來的操作命令,封裝成統(tǒng)一的socketapi傳遞給命令執(zhí)行代理層。
作為優(yōu)選,命令執(zhí)行代理層接收命令解析層發(fā)來的socketapi,解析socketapi后調(diào)用相應(yīng)硬件平臺的管理、配置api實(shí)現(xiàn)交換機(jī)的管理。
配置管理交換機(jī)的api一般是由c語言編寫的,gui的后端服務(wù)程序使用php編寫,這樣存在不同編程語言接口調(diào)用問題,本發(fā)明中使用socket作為gui的后端服務(wù)程序和交換機(jī)底層管理程序的通訊方法。cli方式下,也使用socket通訊接口和底層配置交換機(jī)底層管理程序進(jìn)行通訊,在整個(gè)軟件架構(gòu)上保持了高度的同一性。
與現(xiàn)有技術(shù)相比,本發(fā)明的交換機(jī)管理軟件架構(gòu)具有以下突出的有益效果:所述的交換機(jī)管理軟件架構(gòu),具有跨平臺性、軟件可擴(kuò)展性,可以高效地應(yīng)對交換機(jī)管理軟件的需求變化,方便地移植到新的硬件平臺,對快速開發(fā)交換機(jī)產(chǎn)品具有重要意義,并且該設(shè)計(jì)方法簡單、高效,具有很強(qiáng)的實(shí)用性,且易于推廣。
附圖說明
圖1是本發(fā)明所述交換機(jī)管理軟件架構(gòu)的示意圖。
具體實(shí)施方式
下面將結(jié)合附圖和實(shí)施例,對本發(fā)明的交換機(jī)管理軟件架構(gòu)作進(jìn)一步詳細(xì)說明。
實(shí)施例
如圖1所示,本發(fā)明的交換機(jī)管理軟件架構(gòu)由ui層、命令解析層和命令執(zhí)行代理層構(gòu)成。
ui層包括gui和cli,提供給用戶操作接口層,獲取用戶操作命令。ui層的gui采用前端、后端程序低耦合設(shè)計(jì),即靜態(tài)頁面和動(dòng)態(tài)頁面相分離。gui前端使用html、css進(jìn)行設(shè)計(jì),基本的前端交互和驗(yàn)證采用javascript。cli支持標(biāo)準(zhǔn)的bashshell腳本程序,使用c語言開發(fā),支持串口、telnet、ssh等,采用gnureadline開源庫,實(shí)現(xiàn)命令自動(dòng)補(bǔ)全、命令自動(dòng)提示、命令歷史記錄等功能。ui層主要負(fù)責(zé)和用戶的交互,注重用戶使用流程設(shè)計(jì)和用戶體驗(yàn)。在結(jié)構(gòu)上,ui層具有較高的模塊化,可根據(jù)不同需求快速部署用戶交互流程和ui風(fēng)格。
命令解析層將ui層傳過來的命令解析并封裝成統(tǒng)一的socketapi格式發(fā)送給命令執(zhí)行代理層。命令解析層設(shè)有webserver和cliserver,其中g(shù)ui通過webserver提供web服務(wù),并使用php腳本語言解析ui層傳入的命令,webserver使用apacheweb服務(wù)器;cli通過cliserver進(jìn)行解析命令,并轉(zhuǎn)換成統(tǒng)一的socketapi格式發(fā)送到命令執(zhí)行代理層。
命令執(zhí)行代理層為ui層、命令解析層的統(tǒng)一抽象層,接收命令解析層發(fā)來的socketapi,解析socketapi后調(diào)用相應(yīng)硬件平臺的管理、配置api實(shí)現(xiàn)交換機(jī)的管理。命令執(zhí)行代理層對上層提供統(tǒng)一的操作api,對下層根據(jù)不同平臺提供不同的接口。
本發(fā)明中,為管理用戶和交換機(jī)配置信息,使用了嵌入式數(shù)據(jù)庫sqlite,將用戶配置的信息保存到norflash中,使用嵌入式數(shù)據(jù)庫sqlite將交換機(jī)配置信息保存,在系統(tǒng)上電時(shí),讀取該數(shù)據(jù)庫內(nèi)容用于配置交換機(jī)。使用sqlite數(shù)據(jù)庫可以簡化交換機(jī)用戶管理和交換機(jī)配置信息的管理,主要包括交換機(jī)用戶的增、刪、改、查以及交換機(jī)配置信息的保存、修改、導(dǎo)入、導(dǎo)出等。
本發(fā)明的交換機(jī)管理軟件的架構(gòu)的工作過程為:
(一)通過gui、cli獲取用戶的操作命令;
(二)命令解析層解析命令并轉(zhuǎn)換成統(tǒng)一的socketapi格式傳遞給命令執(zhí)行代理層;
(三)命令執(zhí)行代理層接收命令解析層發(fā)來的socketapi,解析此socketapi后調(diào)用相應(yīng)硬件平臺的管理、配置api實(shí)現(xiàn)交換機(jī)的管理。
命令解析層和命令執(zhí)行代理層之間使用的socketapi格式見表1:
表1
下面以web界面操作添加一個(gè)vlan為例,詳細(xì)說明該交換機(jī)管理軟件架構(gòu)的設(shè)計(jì)工作流程。web界面接收到用戶添加一個(gè)新的vlan的執(zhí)行,通過web前端填寫web前端的表單,填寫內(nèi)容為新建vlan的id號,然后點(diǎn)擊表單里的添加vlan按鈕。web前端頁面的表單內(nèi)容會發(fā)送到web后端的aphache服務(wù)器,服務(wù)器接收到前端頁面發(fā)來的表單請求,會調(diào)用相應(yīng)的php程序解析此表單的內(nèi)容,提取出表單中添加vlan請求以及添加vlan所需要的vlanid參數(shù)。提取出參數(shù)后封裝成socketapi,內(nèi)容為:add_vlan:vlan_id。通過標(biāo)準(zhǔn)的socket編程將此socketapi發(fā)送到命令執(zhí)行代理層,解析socketapi,并轉(zhuǎn)換成具體平臺管理交換機(jī)的api。實(shí)際平臺的api為bcm_create(0,vlan_id)(此處以博通交換芯片為例,使用博通的交換芯片管理api)。到此,添加一個(gè)新的vlan的過程結(jié)束。
以上所述的實(shí)施例,只是本發(fā)明較優(yōu)選的具體實(shí)施方式,本領(lǐng)域的技術(shù)人員在本發(fā)明技術(shù)方案范圍內(nèi)進(jìn)行的通常變化和替換都應(yīng)包含在本發(fā)明的保護(hù)范圍內(nèi)。