摘要:每次做項目總是會涉及到服務(wù)器與下位機之間的通訊,往往會涉及到客戶端、服務(wù)器、前端、后臺、下位機這些概念,對于做電子研發(fā)的初級工程師來說,往往會理不清這些概念,所以這篇文章打算簡單的介紹下這些術(shù)語,分析他們之間的關(guān)系。另外,這篇文章作為自己的...
每次做項目總是會涉及到服務(wù)器與下位機之間的通訊,往往會涉及到客戶端、服務(wù)器、前端、后臺、下位機這些概念,對于做電子研發(fā)的初級工程師來說,往往會理不清這些概念,所以這篇文章打算簡單的介紹下這些術(shù)語,分析他們之間的關(guān)系。另外,這篇文章作為自己的一篇技術(shù)筆記,僅供參考,如有錯誤之處,還望指正。
客戶端:可以向服務(wù)器發(fā)起請求的一方叫做客戶端,比如一款A(yù)PP
服務(wù)端:顧名思義,能夠響應(yīng)客戶端請求的一方叫做服務(wù)器,比如云服務(wù)器
前端:與用戶進行直接交互的網(wǎng)頁或者界面
后臺:能夠?qū)?shù)據(jù)進行管理的模塊,比如數(shù)據(jù)庫系統(tǒng)
下位機:屬于被動控制的一方,往往是某一設(shè)備,與上位機概念對應(yīng)
上位機:主動控制的一方叫做上位機,比如APP或者一款PC機上運行的軟件
雖然介紹完這些概念,但感覺還是比較抽象,那么它們之間到底是如何聯(lián)系的呢?下面以一個具體的案例進行分析。
案例:現(xiàn)在電影院大多都有“娃娃機”這樣的設(shè)備,用戶掃碼登錄后可以通過手機界面按下“開機”指令,然后就成功開啟一臺設(shè)備,用戶可以操作“已開啟”的設(shè)備抓取“娃娃”。
在以上案例中,主要流程:
1.首先用戶通過手機界面按下開機指令,然后客戶端將指令作為一個“開機請求”發(fā) 送給服務(wù)器。
2.服務(wù)器通過接收解析得到請求內(nèi)容后,會去調(diào)用后臺CGI程序?qū)?shù)據(jù)庫進行操作,比如會先訪問數(shù)據(jù)庫,查詢當前設(shè)備的狀態(tài),然后在狀態(tài)“合法”的情況下發(fā)送開機指令給下位機,下位機執(zhí)行并且將執(zhí)行結(jié)果返回,這個查詢操作是后臺程序完成的,不是服務(wù)器執(zhí)行的,只不過后臺程序在操作完成后會將處理結(jié)果返回給服務(wù)器。
3.服務(wù)器在接收到CGI程序返回的處理結(jié)果(成功或失敗)后,再將結(jié)果返回給客戶端,客戶端再將結(jié)果顯示在前端界面。
以上是整個操作的大體流程,在這個流程中,手機界面就是“前端”,用戶通過前端頁面發(fā)起開機請求,那么這個請求是誰發(fā)出去的呢?是客戶端。發(fā)給誰呢?是服務(wù)端。服務(wù)端接收到請求后會自己處理請求嗎?不不不,不會,它會調(diào)用一個后臺程序去處理請求,然后等待后臺程序?qū)⒔Y(jié)果返回,比如它調(diào)用一個exe程序?qū)?shù)據(jù)庫進行狀態(tài)查詢操作并且執(zhí)行開機指令,然后這個exe程序?qū)⑻幚斫Y(jié)果返回給服務(wù)器,服務(wù)器再將結(jié)果返回給客戶端。這個exe程序就是后臺程序了,通常也會用php去實現(xiàn)對數(shù)據(jù)庫的操作(增刪改查)。或許有人會問,為什么服務(wù)器自己不能處理請求,反而會調(diào)用一個后臺程序去操作呢?這不多此一舉嗎?你想,服務(wù)器它會只與一個客戶端通訊嗎?肯定不是,服務(wù)端往往需要快速并且“同時”響應(yīng)多個客戶端請求,這就要求它不能為某一個請求花費太多時間,如果每個客戶端請求都要服務(wù)器去處理,那么服務(wù)器的延時可想而知。通常服務(wù)器會開啟“多線程”模式,在線程中調(diào)用后臺程序去處理請求,然后后臺程序?qū)⑻幚斫Y(jié)果返回。以上介紹了前端、客戶端、服務(wù)器、后臺這些對象之間的關(guān)系,那么我們一直談?wù)摰南挛粰C呢?下位機在整個系統(tǒng)中處于什么位置?如果從控制方和被控制方來說,前面所說的客戶端可以理解為上位機,就是控制方,那么下位機就是被控制方,比如這個案例中的“娃娃機”。下位機往往需要與服務(wù)器通訊,并且可以受控地完成一系列動作,比如“開機動作”或者在本案例中受手柄控制做出相應(yīng)動作。下位機的設(shè)計往往會包含硬件電路設(shè)計和單片機軟件編程。下位機與服務(wù)器之間通訊可以采用TCP協(xié)議(工作在傳輸層),數(shù)據(jù)透傳模式,而客戶端與服務(wù)器通訊會采用應(yīng)用層協(xié)議,比如HTTP,HTTPS或者Websocket。
好了,以上就是關(guān)于前端、客戶端、服務(wù)器、后臺、上位機、下位機的一些基本概念和它們之間關(guān)系。