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

引言物聯網平台的一個重要功能就是資產管理,產品或者設備都可以看成是資產中組成部分,所以有時候說物聯網平台可以進行產品管理和設備管理。通常應用物聯網平台開發一套具有產品或者設備管理功能的系統的時候,必須定義產品模型(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文件,這是必須的,重要的。
 
以上僅個人理解,歡迎大家,批評討論,技術難點往往越辯越明。