將一臺(tái)設(shè)備或感測(cè)器連接到網(wǎng)際網(wǎng)路不是件容易的事─在嵌入式系統(tǒng)設(shè)計(jì)中沒(méi)什么事是容易的。不過(guò),那些存在于網(wǎng)上(云端)、供客戶使用的優(yōu)秀分析工具能夠擴(kuò)展客戶設(shè)備功能,而且還能增加便利性,并透過(guò)網(wǎng)際網(wǎng)路實(shí)現(xiàn)運(yùn)算成本的節(jié)省。然而,你必須搭建一種通道,以便讓設(shè)備或感測(cè)器的數(shù)據(jù)到達(dá)云端的應(yīng)用程式,使數(shù)據(jù)在那裡得到分析和使用。對(duì)許多嵌入式系統(tǒng)設(shè)計(jì)團(tuán)隊(duì)來(lái)說(shuō),這是一個(gè)全新領(lǐng)域。本文將介紹Web服務(wù)在機(jī)器到機(jī)器(M2M)應(yīng)用中的工作塬理,并探討在網(wǎng)際網(wǎng)路上製作‘設(shè)備云’所要完成的主要任務(wù)。
你在什么云上?
迄今為止,我們中的大多數(shù)人都被灌輸過(guò)‘云端’和‘云端運(yùn)算’等術(shù)語(yǔ)。除了產(chǎn)生雨、雪和暴風(fēng)雨等自然氣候現(xiàn)象外,‘云’的真正含義是什么?對(duì)這個(gè)問(wèn)題的簡(jiǎn)單的回答是,不要太執(zhí)迷于所謂的云術(shù)語(yǔ);而應(yīng)該認(rèn)識(shí)到,軟體應(yīng)用程式、連接和儲(chǔ)存可以存在于本地設(shè)備(如PC)或某個(gè)網(wǎng)路中的伺服器上。各種基于Web的應(yīng)用就是一些最佳例子,例如電子郵件和其它集中智慧點(diǎn)(如映射)。云端運(yùn)算的好處在于,云端通常是連網(wǎng)的,因此可以被連接擴(kuò)展網(wǎng)際網(wǎng)路的每個(gè)人所共享。擴(kuò)展網(wǎng)際網(wǎng)路這個(gè)術(shù)語(yǔ)意味著物體可以透過(guò)網(wǎng)際網(wǎng)路連接到物體,而不僅是人到人。機(jī)器到機(jī)器(M2M)連接可透過(guò)設(shè)備云中的擴(kuò)展網(wǎng)際網(wǎng)路來(lái)實(shí)現(xiàn)。
駐留數(shù)據(jù)
共享數(shù)據(jù)是問(wèn)題的根本。然而,這些數(shù)據(jù)需要駐留在可以得到正確消化的地方。為了將設(shè)備或感測(cè)器連接到網(wǎng)際網(wǎng)路,你首先需要知道哪裡可以‘駐留’數(shù)據(jù)。大多數(shù)現(xiàn)代工具依賴于Web服務(wù)直接連接擴(kuò)展網(wǎng)際網(wǎng)路,因此你需要知道:Web服務(wù)是什么?如何使用Web服務(wù)?如何將Web服務(wù)應(yīng)用到遠(yuǎn)端設(shè)備或感測(cè)器?
為了設(shè)計(jì)能與云端交互的嵌入式系統(tǒng),你需要一組功能將設(shè)備連接完整于云端的應(yīng)用程式。記住,設(shè)備可以是任何東西,從儀表或自動(dòng)調(diào)溫器到發(fā)動(dòng)機(jī)或機(jī)器;也可以是固定的某些東西,如用于儲(chǔ)存和分配的大箱子或大容器。另一方面,應(yīng)用程式可以是用于處理數(shù)據(jù)的任何系統(tǒng)。它可以是智慧手機(jī)上安裝的行動(dòng)應(yīng)用程式、基于Web的儀表板類型入口程式、企業(yè)資源規(guī)劃系統(tǒng)或?qū)<蚁到y(tǒng)。不管是哪種情況,挑戰(zhàn)在于將有關(guān)設(shè)備或資產(chǎn)的重要資訊傳送給應(yīng)用程式。為了實(shí)現(xiàn)這個(gè)目標(biāo),我們首先需要定義製作這條數(shù)據(jù)傳送通道所必須的叁大功能組件。
製作通道
首先你需要如圖1所示的功能以便開(kāi)始設(shè)計(jì)工作。
圖1:一種設(shè)備云的系統(tǒng)架構(gòu)。
1. 感應(yīng)和連接。這個(gè)功能具有有限的智慧,專門用于獲取資訊,包括無(wú)線電模組、簡(jiǎn)單邏輯以及與即時(shí)需求有關(guān)的感應(yīng)技術(shù)。
2. 匯聚和轉(zhuǎn)換。在將數(shù)據(jù)點(diǎn)透過(guò)大型網(wǎng)路(如網(wǎng)際網(wǎng)路)發(fā)送出去之前,需要以一種有意義的方式,有效總結(jié)或匯聚這些數(shù)據(jù)點(diǎn)。這個(gè)功能的另外一個(gè)關(guān)鍵部份是,將資訊放入通用表述性語(yǔ)言。因此,這個(gè)功能一般包括規(guī)則框架、協(xié)議轉(zhuǎn)換和映射,一般還包括通往IP網(wǎng)路的一條通道。
3. 設(shè)備云。設(shè)備云是擴(kuò)展網(wǎng)際網(wǎng)路的組成部份,通常感知所有連接到遠(yuǎn)端站的設(shè)備。一般來(lái)說(shuō)這是一個(gè)作為通道和數(shù)據(jù)儲(chǔ)存的主機(jī)系統(tǒng)。設(shè)備云也匯聚來(lái)自所有遠(yuǎn)端站點(diǎn)的資訊,其方式與匯聚和轉(zhuǎn)換功能匯合各個(gè)設(shè)備的差異資訊基本相同。
為了更好地理解這種環(huán)境,可以把云架構(gòu)看作是一組的服務(wù)(如圖2所示),其定義為:
圖2:作為一組服務(wù)的云架構(gòu)。
1. 基礎(chǔ)設(shè)備即服務(wù)(IaaS)。在最底層的IaaS是云端的‘基礎(chǔ)’。它包括網(wǎng)路連接、實(shí)體伺服器、防火墻、磁碟和路由器等。
2. 平臺(tái)即服務(wù)(PaaS)。包括了形成場(chǎng)景通訊鏈路和管理功能的所有軟體,同時(shí)提供頂層賴以生存的環(huán)境。
3. 軟體即服務(wù)(SaaS)。頂層是實(shí)際的應(yīng)用程式,可以是網(wǎng)頁(yè)、映射、分析或其它軟體,也是最終智慧處理工作實(shí)施的地方。透過(guò)這種方式,設(shè)備云可以提供使用通用語(yǔ)言的設(shè)備場(chǎng)景化表述,并幫助基于Web的應(yīng)用程式完成實(shí)際的工作。
會(huì)說(shuō)云語(yǔ)嗎?
當(dāng)然,我們需要一個(gè)通用詞匯表,這是Web服務(wù)的目的。Web服務(wù)的典型定義是,一種在網(wǎng)際網(wǎng)路協(xié)定骨干上使用XML、HTTP、SOAP、WSDL和UDDI開(kāi)放標(biāo)準(zhǔn)整合Web應(yīng)用程式的一種方法。為了簡(jiǎn)單化,Web服務(wù)利用網(wǎng)際網(wǎng)路通用語(yǔ)言完成任務(wù),以通用方式描述事件,使用常見(jiàn)動(dòng)詞收發(fā)資訊(Put或Get),并透過(guò)請(qǐng)求或訂閱使用某種方法實(shí)現(xiàn)一到多和多到一連接。
Web服務(wù)是如何工作的?用一種支援通訊的語(yǔ)言開(kāi)始──你已經(jīng)知道了,然而,你可能不了解其中的真正含義。這是HTTP或超文本傳輸協(xié)定,是網(wǎng)際網(wǎng)路客戶端和伺服器的語(yǔ)言,最重要的是,這是一種將網(wǎng)際網(wǎng)路動(dòng)詞應(yīng)用于名詞的通用協(xié)議。聽(tīng)起來(lái)不錯(cuò)?我們?cè)诙昙?jí)就學(xué)習(xí)名詞和動(dòng)詞了。
名詞網(wǎng)際網(wǎng)路名詞是被稱為統(tǒng)一資源定位器(URL)或通用資源標(biāo)識(shí)符(URI)的一類東西。當(dāng)然,不僅是這些──你需要描述數(shù)據(jù)的低位和數(shù)據(jù)的高位。為了做到這一點(diǎn),你將使用可以靈活編碼資訊的方法。目前有許多這些方法,但最常用的兩種是可擴(kuò)展標(biāo)記語(yǔ)言(XML)和JavaScript對(duì)象符號(hào)(JSON)。這兩種方法都能用于傳送和儲(chǔ)存數(shù)據(jù),并且具有自描述性,這意味著你通常不需要魔術(shù)解碼環(huán)來(lái)理解場(chǎng)景。這些東西的次序也不重要。表1顯示了XML和JSON的兩個(gè)常見(jiàn)的簡(jiǎn)單例子。
表1、XML和JSON事例比較。
需要注意的是,意思和場(chǎng)景在標(biāo)籤內(nèi)傳送,而內(nèi)容是與標(biāo)籤有關(guān)的值。因?yàn)槔邮褂昧擞幸饬x的場(chǎng)景標(biāo)籤,你可以省略一些資訊,增加其它資訊,將它們的順序打亂,而不會(huì)改變單個(gè)元素的含義。
動(dòng)詞你需要將動(dòng)詞配搭名詞。對(duì)動(dòng)詞而言,可以使用表述性狀態(tài)轉(zhuǎn)移(REST)。據(jù)維基百科介紹,REST“是一種用于分散式超媒體系統(tǒng)的軟體架構(gòu),如WWW?!盧EST意味著你在使用通用動(dòng)作組,其細(xì)節(jié)由場(chǎng)景進(jìn)行處理。對(duì)于像HTTP那樣的協(xié)議,我們一般討論7個(gè)不同的動(dòng)作或動(dòng)詞,其中4個(gè)完成設(shè)備云中的主要任務(wù)。這7個(gè)動(dòng)詞是:Get,Put,Post,Delete,Head,Trace和Connect。本文不打算對(duì)Head、Trace和Connect多作說(shuō)明。我們真正需要關(guān)注最重要的4個(gè):Get,Put,Post和Delete。下面介紹這些動(dòng)詞的含義。
每次你登錄網(wǎng)站,你就是在做Get。這是一個(gè)獲取或獲得文件或集合描述的一個(gè)請(qǐng)求。當(dāng)然,就像許多問(wèn)題一樣,它們通常會(huì)導(dǎo)致更多的問(wèn)題,因此一次‘get’經(jīng)常招致另一個(gè)。Get是個(gè)動(dòng)詞,而URL加上所有插入的其它資訊就是那個(gè)名詞。下一個(gè)是Put。Put是Get的反義詞,因此是將文件或集合上載或‘put’到資料庫(kù)的一個(gè)請(qǐng)求。Delete是魔術(shù)擦除器。毫無(wú)疑問(wèn),如果有些東西已經(jīng)‘放’在某個(gè)地方,我們可能想‘取得’它的拷貝,但我們大多數(shù)時(shí)候還希望‘刪除’這些東西。最后是Post。這是一個(gè)比較復(fù)雜的動(dòng)詞。最好將Post認(rèn)為是一個(gè)中間步驟或中繼。比方說(shuō)你想要知道一個(gè)問(wèn)題的答案,但確實(shí)不知道去問(wèn)誰(shuí)。你無(wú)法做Get,因?yàn)槟悴恢酪獑?wèn)什么。這是,你可以將所有資訊打包并變成一個(gè)帖子(Post)。一旦‘張貼’過(guò)后,所謂的專家過(guò)程將看到你的帖子并作出回應(yīng)。你可以即時(shí)等待響應(yīng)(同步),或離開(kāi)這裡并請(qǐng)求響應(yīng)通知(非同步)。
為了將這些動(dòng)詞應(yīng)用到設(shè)備和應(yīng)用程式,讓我們假設(shè)你有一組連接著不同建筑物的溫度感測(cè)器。每個(gè)感測(cè)器每個(gè)小時(shí)使用合適的連接、匯聚和轉(zhuǎn)換功能將溫度值發(fā)送到設(shè)備云中的資料庫(kù)。在這種場(chǎng)景中,溫度值被‘放(put)’進(jìn)云端。下一步假設(shè)應(yīng)用程式根據(jù)時(shí)間和地點(diǎn)對(duì)各個(gè)溫度進(jìn)行分析和繪圖。在這種場(chǎng)景中,應(yīng)用程式將從與合適時(shí)間和地點(diǎn)名詞相關(guān)的資料庫(kù)中‘獲?。╣et)’這些值。進(jìn)一步假設(shè)你只想將數(shù)據(jù)保持一個(gè)月,因此每天都有一個(gè)獨(dú)立的進(jìn)程對(duì)過(guò)時(shí)的溫度值進(jìn)行‘刪除’。最后,假設(shè)應(yīng)用程式的一位用戶想要即時(shí)的目前溫度值,而不僅僅是最近幾個(gè)小時(shí)。在這種情況下,應(yīng)用程式將在指定地點(diǎn)‘張貼(post)’一個(gè)獲取目前值的請(qǐng)求,等待請(qǐng)求得到處理并返回結(jié)果。這些就是Web服務(wù)使用簡(jiǎn)單的名詞和動(dòng)詞的工作過(guò)程,
總之,你會(huì)發(fā)現(xiàn),利用合適的連接、匯聚和轉(zhuǎn)換功能,可以很容易將設(shè)備資訊成功連接遠(yuǎn)端應(yīng)用程式。設(shè)備云和擴(kuò)展網(wǎng)際網(wǎng)路隨后作為將數(shù)據(jù)橋接到應(yīng)用程式的管道。所有這些事情都是使用相對(duì)簡(jiǎn)單的、與一組網(wǎng)際網(wǎng)路名詞緊密相關(guān)的網(wǎng)際網(wǎng)路動(dòng)詞組合完成的,沒(méi)有太大難度,只要記住REST和使用Post就可以了。
評(píng)論
查看更多