嵌入式環(huán)境下Web Service技術(shù)的實(shí)現(xiàn)
摘要:為了解決嵌入式系統(tǒng)與其他異構(gòu)系統(tǒng)之間互聯(lián)和集成的難題,提出了Web Seivice技術(shù)在低端嵌入式設(shè)備上的實(shí)現(xiàn)方法。以ARM Cort ex-M3微處理器為核心,基于小型實(shí)時(shí)操作系統(tǒng)和嵌入式TCP/IP協(xié)議棧,詳細(xì)闡述了Web Service的實(shí)現(xiàn)過程,包括HTTP接收.XML與SOAP協(xié)議的解析,以及同具體服務(wù)實(shí)現(xiàn)的綁定,并針對嵌入式環(huán)境下資源受限的特點(diǎn)。給出了相應(yīng)的優(yōu)化方法。使用專用測試軟件進(jìn)行的壓力測試表明,該實(shí)現(xiàn)運(yùn)行穩(wěn)定,具有良好的可行性。
關(guān)鍵詞:Web Service;XML;SOAP;嵌入式系統(tǒng)
0 引言
近年來隨著網(wǎng)絡(luò)化概念的不斷推廣,嵌入式系統(tǒng)也擺脫了以往“信息孤島”的封閉局面,相互之間逐漸形成了分布式的協(xié)作關(guān)系。然而嵌入式系統(tǒng)在網(wǎng)絡(luò)的應(yīng)用層上常常采用自定義的傳輸協(xié)議,加之各系統(tǒng)之間巨大的平臺(tái)差異性,給系統(tǒng)間的互訪以及企業(yè)級信息的集成帶來了困難。Web Service技術(shù)具有良好的跨平臺(tái)和松耦合特性,能夠?qū)崿F(xiàn)不同平臺(tái)的分布式系統(tǒng)之間的無縫集成,降低了企業(yè)進(jìn)行設(shè)備升級和服務(wù)重組時(shí)的投入。本文以32位微處理器ARM Cortex-M3為核心,借助于嵌入式TCP/IP協(xié)議棧和實(shí)時(shí)操作系統(tǒng),在嵌入式環(huán)境下實(shí)現(xiàn)了Web Ser vice技術(shù)。
1 Web Service與SOAP協(xié)議
Web Service是網(wǎng)絡(luò)化應(yīng)用的一種,可以將其看成一種函數(shù)調(diào)用,只不過這個(gè)函數(shù)的實(shí)體存在于某個(gè)服務(wù)器上,而對函數(shù)的調(diào)用在客戶端進(jìn)行,客戶端只要接入裝有服務(wù)的機(jī)器所在的網(wǎng)絡(luò)即可調(diào)用函數(shù)。為了實(shí)現(xiàn)這種遠(yuǎn)程調(diào)用,需要對傳輸?shù)臄?shù)據(jù)格式采取一些約定措施.簡單對象訪問協(xié)議(Simple Object Access Protocol,SOAP)很好地應(yīng)對了這種需求。SOAP協(xié)議以XML形式提供了一個(gè)簡單、輕量的機(jī)制,用于在分布環(huán)境中交換結(jié)構(gòu)化信息。SOAP本身并沒有定義任何應(yīng)用程序語義,如編程模型或特定語義的實(shí)現(xiàn);實(shí)際上它通過提供一個(gè)模塊化的封包模型和在模塊中進(jìn)行數(shù)據(jù)編碼的方法,定義了一個(gè)簡單的表示應(yīng)用程序語義的機(jī)制。
SOAP消息是由Envelope,Header和Body三部分組成的XML文檔,其中Envelope是SOAP消息的根元素,必須在SOAP消息中出現(xiàn);可選的Hea der元素包含有關(guān)SOAP消息的應(yīng)用程序?qū)S眯畔?;必需的Body元素包含打算傳送到消息最終端點(diǎn)的實(shí)際SOAP消息。最后,為了進(jìn)行基于SOAP的遠(yuǎn)程調(diào)用,需要一種低級傳輸協(xié)議。SOAP規(guī)范允許使用HTTP,SMTP甚至原始的TCP/IP套接字,其中HTTP協(xié)議最為常用。
2 Web Service在嵌入式環(huán)境下的實(shí)現(xiàn)
2.1 底層軟硬件結(jié)構(gòu)
本文中所使用的硬件基于ST公司推出的ARMCortex-M3 32位微處理器STM32F107VC。Cortex-M3是針對價(jià)格敏感但又有高系統(tǒng)效能需求的嵌入式應(yīng)用而設(shè)計(jì)的ARM內(nèi)核,作為ARM7的后繼者,大刀闊斧地改革了設(shè)計(jì)架構(gòu),顯著簡化了編程和調(diào)試的復(fù)雜度,處理能力也更加強(qiáng)大。ST M32F107VC工作頻率最高為72 MHz,帶有256 KB的片上FLASH和64 KB的SRAM,以及以太網(wǎng)MAC控制器,因此外接一片PHY芯片RTL8201,完成與以太網(wǎng)的物理通信。
為了達(dá)到實(shí)時(shí)任務(wù)管理,本文選用嵌入式實(shí)時(shí)操作系統(tǒng)FreeRTOS和輕量級TCP/IP協(xié)議棧1wIP組成底層軟件開發(fā)平臺(tái)。FreeRTOS作為一個(gè)免費(fèi)開源的小型實(shí)時(shí)內(nèi)核,主要用于建立和管理各個(gè)模塊的任務(wù);1wIP則為數(shù)據(jù)的TCP/IP封裝提供了一個(gè)良好的軟件基礎(chǔ)。
2.2 SOAP消息的處理
目前已經(jīng)有許多成熟的SOAP工具,例如針對C++的gSOAP、針對Java的kSOAP等,但是這些實(shí)現(xiàn)方案均是為PC機(jī)或者帶有高級操作系統(tǒng)的嵌入式系統(tǒng)設(shè)計(jì)的,對資源的消耗較多。對于低端的嵌入式環(huán)境,需要更輕量型的處理方法。
由前文可知,SOAP可以簡單的理解為HTTP+XML+遠(yuǎn)程調(diào)用規(guī)則,因此SOAP消息的處理也分為3步:HTTP協(xié)議的實(shí)現(xiàn)、XML解析、具體服務(wù)實(shí)現(xiàn)。其總體結(jié)構(gòu)如圖1所示。
c++相關(guān)文章:c++教程
評論