首先咱們得知道,客戶端-服務器模式一種常見的軟件架構模式。那麼什麼是架構模式呢?下面給出了定義。html
架構模式是一個通用的、可重用的解決方案,用於在給定上下文中的軟件體系結構中常常出現的問題。數據庫
架構模式與軟件設計模式相似,但具備更普遍的範圍。(維基百科)設計模式
而客戶端-服務器模式由兩部分組成:一個服務器和多個客戶端。服務器組件將爲多個客戶端組件提供服務。瀏覽器
客戶端從服務器請求服務,服務器爲這些客戶端提供相關服務。此外,服務器持續偵聽客戶機請求。安全
使用場景:服務器
客戶端-服務器模式的優勢是:很好地創建一組服務,用戶能夠請求他們的服務。網絡
缺點是:請求一般在服務器上的單獨線程中處理。因爲不一樣的客戶端具備不一樣的表示,進程間通訊會致使額外開銷。session
因爲上面的講述比較籠統,你可能並無理解什麼是客戶端-服務器模式,接着我給你們詳細的講解一下究竟什麼是客戶端-服務器模式。架構
(以上內容引用自 http://www.javashuo.com/article/p-gmxjjgav-es.html)線程
客戶服務器模式(Client–server model)簡稱C/S結構,是一種網絡架構,它把客戶端 (Client) 與服務器 (Server) 區分開來。
每個客戶端軟件的實例均可以向一個服務器或應用程序服務器發出請求。
客戶服務器模式經過不一樣的途徑應用於不少不一樣類型的應用程序,最多見就是目前在因特網上用的網頁。
例如,當你在維基百科閱讀文章時,你的電腦和網頁瀏覽器就被當作一個客戶端,同時,組成維基百科的電腦、數據庫和應用程序就被當作服務器。
當你的網頁瀏覽器向維基百科請求一個指定的文章時,維基百科服務器從維基百科的數據庫中找出全部該文章須要的信息,結合成一個網頁,再發送回你的瀏覽器。
C/S模式是一個邏輯概念,而不是指計算機設備。
在C/S模式中,請求一方爲客戶,響應請求一方稱爲服務器。
若是一個服務器在響應客戶請求時不能單獨完成任務,還可能向其餘服務器發出請求。
這時,發出請求的服務器就成爲另外一個服務器的客戶。
從雙方創建聯繫的方式來看,主動啓動通訊的應用叫客戶,被動等待通訊的應用叫服務器。
下面詳細說一下這種模式的優劣
優點
●在大多數狀況下,客戶機服務器體系結構容許的角色和責任的計算系統是其中幾個已知只有經過網絡互相獨立的計算機分發。這將建立一個額外的優點,這種體系結構:提升維護的簡便性。例如,它能夠更換,維修,升級,甚至遷移服務器,同時它的客戶都不知情,並保持該更改的影響。
●全部數據都存儲在服務器上,一般比大多數客戶更大的安全控制。服務器能夠更好地控制訪問和資源,以保證只有那些具備適當權限的用戶能夠訪問和更改數據。
●因爲數據的集中存儲,對數據的更新是更容易管理相比,一個P2P模式。在後者,數據更新可能須要分發和應用到每一個網絡中的對等,既費時又容易出錯,由於能夠有成千上萬甚至數百萬的同齡人。
●許多成熟的客戶端服務器技術已經能夠方便的目的是確保安全,用戶界面友好,易用性。
●具備不一樣功能的多個不一樣的客戶它的功能。
劣勢
●做爲客戶端同時請求數給定的服務器的增長,服務器能夠成爲重載。對照到一個P2P網絡,在其總帶寬實際上增長爲節點的添加,因爲P2P網絡的總帶寬能夠大體計算做爲該網絡中每一個節點的帶寬的總和。
●客戶機服務器模式缺少一個良好的P2P網絡的魯棒性。在客戶端服務器,若是一個重要的服務器失敗,客戶的要求不能獲得知足。在P2P網絡,資源一般分佈在許多節點。即便一個或多個節點出發,放棄一個下載文件,例如,剩下的節點應該仍是有必要來完成下載的數據。
最後介紹一下這種模式的特徵:
主從式架構意圖提供一個可縮放 (scalable)的架構,藉此網上的計算機或者處理過程是一個客戶端或者服務器。服務器軟件通常,但不是老是,運行在強大的專用商業計算機上。另外一方面,客戶端通常運行在普通我的電腦或者工做站上。
服務端的特徵:
被動的角色(從)。
等待來自用戶端的要求。
客戶端特徵:
主動的角色(主)。
發送要求。
等待直到收到迴應。
服務器但是有狀態或者無狀態的。無狀態的服務器不會保留任何兩個請求之間的信息,有狀態服務器會記住請求之間的信息。這些信息的做用域能夠是全局的或者某個事務 (session)的。靜態 HTML 頁面服務器是一個無狀態服務器的例子,Apache Tomcat 是一個有狀態服務器。