單片機系統中Web Service的調用方法研究
1 前言
本文引用地址:http://dyxdggzs.com/article/173893.htmWeb Service作為一種有著(zhù)強大功能的可互操作性和擴展性的新技術(shù),被越來(lái)越多用于異構數據的集成,自然想到將其應用于工業(yè)數據采集系統的異構數據的集成.本文介紹了一種在單片機系統中調用Web Service實(shí)現主動(dòng)提交數據的方法,方便了數據采集系統的集成.在傳統的數據采集系統中,可以利用單片機系統用串口方式采集儀表數據,通過(guò)串行總線(xiàn)將數據提交給上位計算機,通過(guò)預先設計的通信協(xié)議與上位采集服務(wù)器通信,集成采集的數據.當需要增加下位機采集模塊時(shí)需要擴展對應的上位機采集口,采集系統的升級和維護都非常麻煩.在單片機系統中通過(guò)調用采集服務(wù)器端的Web Service和上位機交互數據,可以簡(jiǎn)化下位機和上位機的通信,把主要工作放在下位單片機系統如何和儀表通信采集數據上, 基于該方法可以方便的構建基于工業(yè)以太網(wǎng)的分布式數據采集方案.該方案還可以方便的集成已經(jīng)存在的數據采集系統,方便單片機系統的升級,比如可以把利用單片機實(shí)現的采集系統很容易的改為PLC采集系統或直接PC采集數據模式,而只需升級后的系統調用同樣的Web Service交互數據即可.由于Web Service調用使用HTTP協(xié)議交互數據,該方案還可以方便的擴展為支持Internet的遠程數據采集.
2 單片機系統中調用Web Service的實(shí)現
2.1 Web Service技術(shù)[7,9,10]
Web Service是能夠通過(guò)Web協(xié)議來(lái)訪(fǎng)問(wèn)的可編程應用程序組件, 使原來(lái)孤立的站點(diǎn)之間的信息能夠相互通信、共享.Web Service所使用的是Internet上統一、開(kāi)放的標準,如HTTP、XML、SOAP、WSDL、UDDI等,所以Web Service可以在任何支持這些標準的環(huán)境(Windows、Linux等)中使用.Web Service本質(zhì)其實(shí)不是一種新技術(shù),前面提到其使用了Internet標準,這些標準便是Web Service的核心技術(shù).
(1) HTTP是一種基于TCP實(shí)現的應用層協(xié)議,它是因特網(wǎng)可靠的交換數據的重要基礎.HTTP為Web Service請求與響應提供了傳輸層,HTTP使得任何設備和平臺都可以訪(fǎng)問(wèn)Web Service.
(2) XML(Extensible Markup Language,可擴展標記語(yǔ)言),是一套規范,允許編程人員自行定義如HTML般的標注,以方便數據存取和處理、交換、轉換等,主要特點(diǎn)是使用有意義的標記,這個(gè)特性使計算機可以理解數據含義.XML可以在任何系統、應用程序、任何平臺上運行,數據傳輸以Internet為基礎,傳輸費用便宜.
(3) SOAP協(xié)議(Simple Object Access Protocol,簡(jiǎn)單對象訪(fǎng)問(wèn)協(xié)議),是一個(gè)用于分散和分布式環(huán)境下網(wǎng)絡(luò )信息交換的基于XML的通信協(xié)議.它的設計目標就是簡(jiǎn)單性和擴展性,這有助于大量異構程序和平臺之間的互操作性,從而使存在的應用程序能夠被廣泛的用戶(hù)訪(fǎng)問(wèn).由于數據采用文本格式,調試方便,容易穿越防火墻.
(4) WSDL(Web服務(wù)描述語(yǔ)言),是基于XML的用來(lái)描述Web服務(wù)功能的一種語(yǔ)法.
(5) UDDI(Universal Description, Discovery, and Integration, 統一描述、發(fā)現和集成),基于XML創(chuàng )建的一個(gè)平臺獨立, 開(kāi)放的框架,通過(guò)Internet來(lái)描述服務(wù),發(fā)現服務(wù),并且整合服務(wù).
2.2 Web Service 調用本質(zhì)
現在很多語(yǔ)言工具都支持Web服務(wù)開(kāi)發(fā),如VS.Net、J2EE、JBuilder等,而且很多語(yǔ)言工具是跨平臺(Windows、Linux等)的.這些開(kāi)發(fā)工具都有專(zhuān)門(mén)的開(kāi)發(fā)包或者類(lèi)庫,可以方便的實(shí)現Web Service的定義和調用,本文主要研究單片機系統中實(shí)現Web Service的調用方法.
調用Web Service本質(zhì)上就是程序客戶(hù)端和Web Service服務(wù)器端的信息交互,且有專(zhuān)門(mén)的信息格式.在A(yíng)SP.net中提供了三種交互端口(協(xié)議):SOAP、HTTP-GET和HTTP-POST[7].在這三種協(xié)議中,SOAP是XML Web Service最常用到的.與HTTP相比,SOAP顯的更為復雜,但卻擁有更強的接受能力.SOAP是一種以XML為基礎的協(xié)議,它提供一種將數據打包和編碼的方法,以用于網(wǎng)絡(luò )的數據傳輸.任意一個(gè)用戶(hù)都可以使用SOAP協(xié)議與任何一個(gè)Web Service進(jìn)行通信,甚至于說(shuō)這個(gè)XML Web Service不是建立在A(yíng)SP.NET 平臺上的,比如說(shuō)Java的,都可以利用SOAP來(lái)進(jìn)行數據傳輸.因此SOAP是語(yǔ)言獨立的. HTTP將SOAP 消息封裝,然后以它的形式進(jìn)行網(wǎng)絡(luò )傳輸. HTTP-GET和HTTP-POST這兩種方法傳送參數和數據的能力比較簡(jiǎn)單,非常適合不能使用SOAP的客戶(hù)來(lái)調用Web Service的情況. HTTP-GET和HTTP-POST方式與SOAP相比有如下特性:
優(yōu)點(diǎn):(1)HTTP方式不需要復雜的XML消息處理,適合不支持XML的平臺使用;(2)HTTP方式在交互時(shí)候不需要添加額外的標簽,減少了交互的數據量和開(kāi)銷(xiāo),有利于提高整體性能.
缺點(diǎn):(1)不能調用具有復雜數據類(lèi)型參數的Web Service;(2)如果調用返回復雜數據類(lèi)型時(shí)處理不方便;(3)不能把類(lèi)和結構序列化為XML消息;(4)不能使用引用方式傳遞參數.
結合單片機系統調用Web Service的實(shí)際需要以及考慮到單片機的處理能力低,不支持XML,不適合復雜的數據處理,開(kāi)發(fā)效率低等問(wèn)題,認為使用HTTP方式比較合適,本文中將以HTTP-POST為例介紹其調用Web Service的實(shí)現方法.
2.3 實(shí)現單片機系統中調用Web Service的核心技術(shù)
(1)基于嵌入式網(wǎng)絡(luò )模塊實(shí)現HTTP
在嵌入式系統(WinCE、Linux等)中,可以基于其自帶的TCP/IP協(xié)議棧實(shí)現HTTP或者直接使用嵌入式Web服務(wù)器[1~5]來(lái)使用HTTP協(xié)議,在計算機系統中則可以在高級語(yǔ)言中直接調用Web客戶(hù)端使用HTTP協(xié)議或者利用SOCKET網(wǎng)絡(luò )編程實(shí)現基于HTTP的數據交互,實(shí)現都比較簡(jiǎn)單,但在單片機系統中,其自身并沒(méi)有TCP/IP協(xié)議棧,因此基于嵌入式網(wǎng)絡(luò )模塊在單片機系統中實(shí)現HTTP.
要實(shí)現HTTP協(xié)議 ,必須以TCP/IP協(xié)議棧為基礎,利用嵌入式網(wǎng)絡(luò )模塊即可方便的實(shí)現TCP/IP協(xié)議棧的功能.如圖1所示,下位機和儀表設備通過(guò)485總線(xiàn)連接,下位機利用單片機開(kāi)發(fā),采用主從方式和設備儀表通信采集數據.采集到的數據再通過(guò)總線(xiàn)發(fā)送給嵌入式網(wǎng)絡(luò )模塊,模塊收到串行數據,利用內嵌的TCP/IP協(xié)議棧實(shí)現串行數據到以太網(wǎng)數據的轉換,嵌入式網(wǎng)絡(luò )模塊通過(guò)網(wǎng)線(xiàn)連接至工業(yè)以太網(wǎng).該方法中,下位機是實(shí)現HTTP應用層協(xié)議的關(guān)鍵,只要下位機發(fā)出的數據包符合HTTP協(xié)議,經(jīng)嵌入式網(wǎng)絡(luò )模塊轉化,變成可由Web服務(wù)器處理的合法HTTP-POST請求包,則可利用Web Service實(shí)現數據的處理和保存,也就實(shí)現了單片機系統調用Web Service.
評論