隨著5G時(shí)代的到來,
物聯(lián)網(wǎng)軟件開發(fā)應(yīng)用變的越來越普及,比如共享單車和共享充電寶等就已經(jīng)進(jìn)入我們的生活中,所以就會(huì)導(dǎo)致很多沒有做過物聯(lián)網(wǎng)開發(fā)的普通軟件公司想去開發(fā)物聯(lián)網(wǎng)軟件項(xiàng)目,但是如果不明白其中的差異,忽視了物聯(lián)網(wǎng)軟件開發(fā)本身一些特殊性的需求,那么開發(fā)出來的項(xiàng)目就會(huì)出現(xiàn)問題。
首先我們向大家分析一下,它們各種的重點(diǎn)在哪。
物聯(lián)網(wǎng)軟件開發(fā)更注重實(shí)際場(chǎng)景的應(yīng)用方面。所以在編程方面就比較重視信息的接受,傳遞和處理,涉及到設(shè)備(各種傳感器)、網(wǎng)絡(luò)、物聯(lián)網(wǎng)平臺(tái)、數(shù)據(jù)分析、應(yīng)用和安全等相關(guān)內(nèi)容。
而普通軟件的開發(fā)更注重于各種理論知識(shí)的運(yùn)用,所接觸到的最終對(duì)象都是人,所以在編程方面比較注重軟件工程理論、數(shù)據(jù)結(jié)構(gòu)算法理論、程序設(shè)計(jì)的有效性、信息安全、數(shù)據(jù)交換理論等內(nèi)容。
通俗的講,普通軟件開發(fā)完成以后,在信息的輸入方面都是由人輸入的,所以服務(wù)端只需要對(duì)用戶輸入的信息進(jìn)行判斷處理即可,凡是信息數(shù)據(jù)不符合要求的,就返回讓用戶重新輸入數(shù)據(jù)。舉個(gè)例子,比如我開發(fā)了一款A(yù)PP,需要用戶注冊(cè)登錄的,當(dāng)用戶第注冊(cè)完成后,第一次登錄時(shí),需要輸入賬號(hào)和密碼,如果用戶輸入錯(cuò)了賬號(hào)或者密碼,按登錄按鈕之后,就會(huì)提交給服務(wù)端,登錄驗(yàn)證失敗,服務(wù)端就會(huì)返回?cái)?shù)據(jù),要求用戶重新輸入正確的賬號(hào)和密碼。普通軟件開發(fā)發(fā)展到至今,已經(jīng)把這種入?yún)⒑弦?guī)檢測(cè)寫到開發(fā)框架中了,比如密碼要求8位數(shù)以上,沒輸入到8位以上無法點(diǎn)擊登錄按鈕。
但是物聯(lián)網(wǎng)開發(fā)項(xiàng)目數(shù)據(jù)輸入都不是靠人工產(chǎn)生的,而且絕大多數(shù)物聯(lián)網(wǎng)項(xiàng)目的設(shè)備都在比較惡劣的環(huán)境下使用,需要應(yīng)用端有比較強(qiáng)的容錯(cuò)率。一般來說,容易出錯(cuò)的是終端程序和網(wǎng)絡(luò)問題產(chǎn)生的數(shù)據(jù)錯(cuò)亂。
常見可以分為三大類:
第一種,網(wǎng)絡(luò)不穩(wěn)定導(dǎo)致錯(cuò)亂,這種問題一般是下面兩個(gè)原因造成的,一個(gè)是終端發(fā)出了兩個(gè)數(shù)據(jù)包,但是服務(wù)端只收到一個(gè),又叫粘包,導(dǎo)致數(shù)據(jù)無法解析的。另一個(gè)原因是數(shù)據(jù)傳輸過程中,數(shù)據(jù)被改變了。所以,就需要編程者在開發(fā)過程中,考慮到這個(gè)問題,做自動(dòng)判斷處理,當(dāng)數(shù)據(jù)傳輸過來以后,不滿足正常情況下的規(guī)則時(shí),要求數(shù)據(jù)重新再次傳輸。
第二種問題是通訊超時(shí)的問題:也就是終端向服務(wù)器端發(fā)送數(shù)據(jù),但是終端收到以后,發(fā)出收到的通知時(shí)網(wǎng)絡(luò)出現(xiàn)了堵塞的情況,終端以為數(shù)據(jù)沒有發(fā)送成功,而服務(wù)器已經(jīng)執(zhí)行該數(shù)據(jù)。舉個(gè)例子,比如說我用手機(jī)掃了一個(gè)共享單車的二維碼,做了掃碼開鎖的請(qǐng)求。我的手機(jī)在掃完二維碼后,向服務(wù)器傳輸了我要掃碼開自行車鎖的請(qǐng)求,服務(wù)器也收到了我的請(qǐng)求,但是在回復(fù)同意開鎖的時(shí)候,網(wǎng)絡(luò)出現(xiàn)了擁堵,導(dǎo)致手機(jī)沒有收到服務(wù)器同意開鎖的請(qǐng)求。
在這里也有兩種解決方法。第一不改變業(yè)務(wù)狀態(tài),比如我沒有收到開鎖許可時(shí),再發(fā)送一次同樣的請(qǐng)求,服務(wù)器收到以后,發(fā)現(xiàn)是兩次相同的數(shù)據(jù)。那么服務(wù)器選擇自動(dòng)丟棄本次數(shù)據(jù)包,直接返回開鎖許可,繼續(xù)當(dāng)前任務(wù)即可。
第二種需要改變業(yè)務(wù)狀態(tài)。比如我是下午15:01分發(fā)出開鎖請(qǐng)求,服務(wù)器認(rèn)為我15:01分已經(jīng)開鎖了,但我沒有收到服務(wù)器的回復(fù),所以沒有成功開鎖。在15:02分的時(shí)候,服務(wù)器又收到了終端發(fā)出的開鎖請(qǐng)求,那么服務(wù)器就會(huì)更改開鎖的時(shí)間為15:02,再次向我發(fā)出同意開鎖回復(fù),從而保持服務(wù)器和終端的一致。
第三種終端產(chǎn)生的數(shù)據(jù)異常:比如因?yàn)閮?nèi)存越界導(dǎo)致數(shù)據(jù)發(fā)生錯(cuò)亂的,這種是最麻煩的,即便是重新傳回?cái)?shù)據(jù)交互依然不會(huì)出現(xiàn)正確的結(jié)果,只能在服務(wù)器端把異常數(shù)據(jù)保存并記錄終端編號(hào)發(fā)生錯(cuò)誤的時(shí)間,后續(xù)在進(jìn)行人工修復(fù)。
所以說
物聯(lián)網(wǎng)軟件開發(fā)和普通軟件開發(fā)過程中,差別其實(shí)還是蠻大的,雖然說開發(fā)普通軟件需要技術(shù)要求更高,但是物聯(lián)網(wǎng)軟件開發(fā)卻非常吃實(shí)戰(zhàn)經(jīng)驗(yàn)。