看到很多答案說客戶端和伺服器的本質區別在於一個是獲取服務,一個是提供資源。那如果我要設計一個小型系統,既有從客戶端向伺服器發送圖片/音頻,服務端負責接收並展示的部分,也有伺服器向客戶端發送視頻/文字/圖片/音頻信息,客戶端接收的部分(而且兩個部分出現的頻率差不多)。那在這個場景下服務端和客戶端怎麼界定?

或者說我上述的答案並不準確,是說哪個有UI哪個就是客戶端嗎?還是說哪個負責主要的計算部分哪個就是服務端?還是說這個場景下的這個問題根本不重要呢?那我們一般說的服務端(後端)編程和客戶端(前端)編程又是怎麼界定的呢?


提供一對一服務的叫客戶端

提供一對多服務的叫伺服器


顧名思義來理解就好了。

客戶端離客戶近,例如手機上的所有app,網頁展現的內容。

伺服器離提供服務的近,客戶看不到,只能通過客戶端來發送數據到伺服器,伺服器作出處理,比如展示、存儲,處理後返回等。

前端指面向用戶的,手機app、網頁頁面、點餐pad、atm等都算前端。

後端即伺服器端,用來接收前端發來的數據做出對應處理並返回給前端。

另外你所說的客戶端發音視頻伺服器展示,客戶端請求音視頻自己展示,這裡有個問題是伺服器展示在哪裡展示呢?你需要通過一個界面來展示那其實這個界面就是客戶端,如果實在服務端還需要展示那是無意義的。因為伺服器的作用就只是接收數據作出處理並返回。


客戶端就是請求一些服務的一方,服務端就是響應一些服務請求的一方,客戶端是調用方,服務端是被調用方。


客戶端,顧名思義客戶使用的端叫客戶端。

服務端,為客戶使用提供遠程服務的端是服務端。

這個和計算量大小沒關係,以前服務端性能弱的時候,很多設計會把大量的計算工作放到客戶端。甚至服務端只做個數據存取的功能。

和數據流向也沒關係,極端情況下,客戶端不從伺服器取數據,只向伺服器提交數據。

後面這個概念逐步擴展,伺服器也存在數據交換,一般一直監聽著網路通訊的端叫伺服器端。平時不工作,只在事件觸發的時候去和服務端進行數據交換的叫服務端。


一個需求服務,一個提供服務


那如果我要設計......既有從客戶端向伺服器發送圖片/音頻,服務端負責接收並展示的部分,也有......出現的頻率差不多

你已經非常接近了,再多想一步就行了。「服務端負責接收&>&>&>並展示&

試著回答下面的問題:

如果展示的是圖片,那顯示設備是什麼?屏幕嗎?誰看這塊屏幕?這塊屏幕的電力供應怎麼提供?看這塊屏幕的人有需要進行的操作嗎?怎麼操作?


並發量的大小就可以很明顯判斷是不是伺服器

伺服器是向非常多的用戶提供服務,在設計之初就有考慮高並發的場景

客戶端很顯然不需要考慮這個事情

這只是一個方面但足矣回答你的問題。


推薦閱讀:
相關文章