可移植的嵌入式WEB服務器軟件設計
引言
隨著互聯(lián)網(wǎng)技術的飛速發(fā)展,嵌入式WEB服務器技術在工業(yè)生產(chǎn)的過程控制、環(huán)境監(jiān)測以及遠程數(shù)據(jù)采集等方面得到了廣泛的應用,通過嵌入在目標設備中的WEB服務器,可以非常方便地獲取遠程數(shù)據(jù),并實現(xiàn)對遠程設備的干預,達到對遠程現(xiàn)場進行監(jiān)視和控制的目的。在實際系統(tǒng)中,遠程設備往往千差萬別,為了在這些目標設備中構建WEB服務器,必須針對不同的系統(tǒng)編寫相應的WEB服務器代碼,通過采用基于操作系統(tǒng)適配層的中間件技術,可以很好的解決WEB服務器軟件在不同系統(tǒng)之間的移植問題,同時改善軟件的可維護性。
1、嵌入式軟件的可移植問題
可移植性主要指把同一軟件放置到不同系統(tǒng)平臺(如不同的硬件平臺或操作系統(tǒng))并使之正常運行的難易程度,可移植性有時候被表述為跨平臺性,軟件的可移植性主要涉及到上面提到的軟硬件運行環(huán)境。開發(fā)出來的程序,如果不用修改或只需極少量的修改便能在其它種類的計算機上運行,就是可移植性好的程序。在當今的軟件設計中,為了在不同的產(chǎn)品線上重復使用相同的代碼,經(jīng)常需要將代碼從一個平臺移植到另一個平臺,這種代碼的重復利用非常重要,因為它可以縮短軟件開發(fā)和測試的周期,同時還能減少后期的維護工作。
計算機軟件的運行環(huán)境有兩個方面——硬件環(huán)境和軟件環(huán)境。硬件環(huán)境主要涉及計算機的硬件體系結構,比如X86體系結構、ARM體系結構、MIPS體系結構等,不同的體系結構其指令系統(tǒng)、中斷處理、寄存器組織、總線讀寫等都存在一定的差別;軟件環(huán)境指的是軟件依賴的操作系統(tǒng)。嵌入式應用需求多樣,操作系統(tǒng)種類也非常豐富,常見的有 VxWorks、Nucleus、WinCE、Linux/uClinux、eCos、uC/OS-II、ThreadX、Hopen和Delta等,不同的操作系統(tǒng)都會提供一些系統(tǒng)服務,比如任務創(chuàng)建和管理、任務間件通訊等,但各個操作系統(tǒng)在具體實現(xiàn)時會存在一些差異,其對外提供的系統(tǒng)服務接口也有不同,比如創(chuàng)建任務的系統(tǒng)調(diào)用:VxWorks為taskSpawn,Nucleus為NU_Create_Task,為了編寫具有最廣泛適應性的可移植代碼,開發(fā)人員必須注意到這些差異,并且采取適當?shù)牟呗?,來開發(fā)具有良好可移植性的軟件,使用一個稱為操作系統(tǒng)適配層的中間件可以很好的解決這個問題。
中間件(Middleware)是位于平臺(硬件、操作系統(tǒng))和應用程序之間的一組通用服務,這些服務具有標準的程序接口和協(xié)議,針對不同的操作系統(tǒng)和硬件平臺,它們可以有符合接口和協(xié)議規(guī)范的多種實現(xiàn)?;谥虚g件模型,需要對軟件模塊進行一下簡單的重構:界面與功能模塊分離,在模塊化的軟件中,界面要求以獨立的模塊出現(xiàn),它與功能模塊之間可以根據(jù)具體的情況采用API調(diào)用或者消息等通訊機制來進行交互,這樣在進行界面修改時可以不修改軟件的其他部分;同時功能模塊不直接調(diào)用操作系統(tǒng)的服務函數(shù),而是調(diào)用中間件提供的處理函數(shù),通過中間件實現(xiàn)與操作系統(tǒng)、硬件以及人機界面之間的交互,這樣整個軟件的框架就變成如下結構:
基于中間件的軟件結構圖
評論