在設計 lan (Github: https://github.com/phodal/lan) 物聯網平臺的時候,結合以前的一些經驗,構建出一個實際應用中的物聯網構架模型。git
而後像lan這樣的應用,在裏面剛屬於服務層。github
一般,咱們很容易在網上看到以下圖所示的三層結構:服務器
從理論上劃分這樣的層級結構是沒有問題的,也是有各類理論依據。然而理論和現實每每是嚴重脫軌的,如上圖所示,圖中將網絡層單獨分爲了一層,而並無獨立出應用程序相關的功能。網絡
從實踐的角度上,我更願意用以下的架構來構建個人物聯網系統。架構
其功能能夠用下表來表示。框架
層級 | 做用 | 與下一層級的鏈接方式 |
---|---|---|
硬件層 | 獲取、發送傳感器數據,執行指令 | 串口、藍牙、有線、SPI、WiFi、USB等等 |
協調層 | 協調硬件層與服務器的通訊,並負責處理部分數據 | 網絡鏈接及硬件層的鏈接方式 |
服務層 | 以視爲服務器層 | 網絡鏈接 |
應用程序層 | 爲用戶提供交互功能 | 網絡鏈接 |
硬件層包含了數據衆多的傳感器、控制器、以及執行器,一般這部份會由硬件人員與硬件開發人員一塊兒協做和開發。而協調層則是充當硬件與服務層通訊的橋樑,這是在系統中須要特別考慮的部份,一個物聯網系統的設計主要取決於這個層級。模塊化
而服務層的核心是傳統的Web應用程序的結構,只是協議層變成了一些適配器,咱們須要支持不一樣的協議,這致使了咱們在這個層須要有一個更好的結構,故而咱們建議使用六邊形架構。而在實際中,用戶最後接觸到的即是應用程序層,在這一層中須要有很好的用戶體驗設計及流暢度。spa
於是在設計Lan物聯網平臺的時候,參考了以前的物聯網平臺的設計,增長了用戶受權以及模塊化加載思想。設計
上圖的模型可讓咱們脫離具體的框架與實現,關注於業務上邏輯。server