淺談產品模型(Profile)在程式設計中的作用

華為雲開發者社群發表於2020-05-19
引言物聯網平臺的一個重要功能就是資產管理,產品或者裝置都可以看成是資產中組成部分,所以有時候說物聯網平臺可以進行產品管理和裝置管理。通常應用物聯網平臺開發一套具有產品或者裝置管理功能的系統的時候,必須定義產品模型(Profile)。很多物聯網平臺的使用文件中大都會介紹瞭如何建立滿足平臺要求的產品模型,但是很少說明為什麼要建立產品模型,建立的產品模型跟程式設計有啥關係。因此很多開發者都會按照介紹完成產品模型的定義,但是不太理解為什麼要建這個模型,時不時會想想,為啥要這個Profile。本文從產品模型(Profile)的定義的理解,Profile檔案內容的分析,Profile檔案與程式設計的聯絡三個部分的描述,力圖能讓開發者對Profile在程式設計中的作用有更深入的理解。個人經驗有限,理解不正確的地方,希望大家多多包涵,一起討論。

1.什麼是Profile

在華為雲的開發文件中能看到,Profile(即產品模型)是用來描述一款產品中的裝置“是什麼”、“能做什麼”以及“如何控制該裝置”的檔案。如何理解這句話?
 
通常一款產品或者裝置本身具有很多的物理屬性或者功能,人們在這個產品的說明書中經常能看到。但是要在物聯網平臺中管理這些裝置,得讓物聯網平臺知道這個裝置的相關的物理屬性或者功能,即是“什麼裝置”,“能做什麼”,“怎麼控制它”等等。而物聯網平臺是什麼呢?其實它本質上還是屬於計算機,或者說是具有很強計算能力的複雜的計算機系統。怎麼才能讓計算機理解真實物理世界的產品或者裝置呢?這就得需要一種模型,計算機能理解的模型。計算機最擅長的就是處理資料,例如int型的資料,char型資料,string資料,float型的資料,double型的資料,等等。用這些資料來表示產品的屬性和功能,這樣計算機就能理解了。具體怎麼表示呢?看下面profile檔案的具體內容分析。

2.Profile檔案內容分析

產品模型Profile本質是一個JSON檔案。通過這個檔案中的內容來表述一個產品或者裝置的屬性和功能,並且必須按照檔案的格式要求來編寫才可以被計算機來識別和處理(其實是依靠計算機中執行的程式來處理)。這個檔案的編寫規則可以參考華為雲的文件,這裡不再講述了。
 
通常一個Profile檔案包含如下方面的內容(其實就是對要表示的產品或者裝置的功能和屬性進行了一些分類要求,來自華為雲)
下面這個是智慧路燈專案中的路燈的Profile檔案中的部分內容
類似這些基本資訊,是產品或者裝置管理系統中需要知道的基礎內容。
上面是一個具體的屬性說明。
 
產品模型Profile就是按照檔案格式的要求,將產品的屬性和功能進行描述,這個描述資訊可以由計算機軟體進行自動解析(這都是在物聯網平臺的軟體程式執行的,平臺使用者是看不到的)。解析之後能做什麼呢?

3. Profile檔案與程式設計的聯絡

Profile檔案被物聯網平臺的軟體自動解析後,要做什麼呢?我們說過物聯網平臺的一個主要功能就是產品或者裝置管理。在開發產品和裝置管理系統的程式的時候,或許採用物件導向的程式設計方法,來定義如下的類,一個簡單的示例
這些類例項化賦初值時,就使用從產品的Profile檔案解析而來的資料值。
 
例如例項化了一個產品,它的基礎資訊中的 manufactureName 這個變數的值,就可以是從Profile檔案中解析到的 China_Factory_01;
又如再通過MQTT協議或者COAP協議傳送過來的產品的屬性 lightDimmingValue,進行解析就可以用到從Profile檔案中解析到的這個屬性的資料型別 dateType. 也可以通過解析時判斷這個屬性是否是需要的屬性等。這些程式功能的設計都可以使用從Profile檔案中解析的資訊。

4.總結

綜上,產品模型Profile就是一個按照一定的格式要求,對產品的屬性和功能進行描述的JSON檔案。這個檔案計算機程式可以自動解析。Profile裡面描述的資訊為物聯網平臺管理產品或者裝置的必須的一些資訊。通過這些資訊可以對一些程式中的類進行初始化,可以用於解析通訊來的資料等等。不同的物聯網平臺對Profile中資訊的使用方法可能會不同,但是有一點是很多對於Profile檔案的處理和使用對平臺使用者來說是看不到的。但是使用者在基於物聯網平臺開發自己的產品或者裝置管理系統時,一定要編寫正確的滿足自己管理要求的產品模型,即Profile檔案,這是必須的,重要的。
 
以上僅個人理解,歡迎大家,批評討論,技術難點往往越辯越明。
 
 

相關文章