1. 程式人生 > >深入理解B/S與C/S架構

深入理解B/S與C/S架構

模版 ima 替代 客戶端 不同的 onos 發展 均衡器 ear

深入理解B/S與C/S架構

閱讀目錄

  • C/S架構簡要介紹

  • 什麽是B/S架構

  • B/S架構的幾種形式

  • 發展前景

其實B/S架構是屬於後臺方面的東西,不過作為一個前端,也是需要了解一下滴

C/S架構簡要介紹

在了解什麽是B/S架構之前,我們有必要了解一下什麽是C/S架構:

C/S架構是第一種比較早的軟件架構,主要用於局域網內。也叫 客戶機/服務器模式。

它可以分為客戶機和服務器兩層:第一層是在客戶機系統上結合了界面顯示與業務邏輯,第二層是通過網絡結合了數據庫服務器。

簡單的說就是第一層是用戶表示層,第二層是數據庫層。

  這裏需要補充的是,客戶端不僅僅是一些簡單的操作,它也是會處理一些運算,業務邏輯的處理等。也就是說,客戶端也做著一些本該由服務器來做的一些事情

如圖所示:技術分享

C/S架構軟件有一個特點,就是如果用戶要使用的話,需要下載一個客戶端,安裝後就可以使用。比如QQ,OFFICE軟件等。

C/S架構的優點:

1 C/S架構的界面和操作可以很豐富。(客戶端操作界面可以隨意排列,滿足客戶的需要)

2 安全性能可以很容易保證。(因為只有兩層的傳輸,而不是中間有很多層。

3 由於只有一層交互,因此響應速度較快。(直接相連,中間沒有什麽阻隔或岔路,比如QQ,每天那麽多人在線,也不覺得慢)

C/S架構的缺點:

可以將QQ作為類比:

1 適用面窄,通常用於局域網中。

2 用戶群固定。由於程序需要安裝才可使用,因此不適合面向一些不可知的用戶。

3 維護成本高,發生一次升級,則所有客戶端的程序都需要改變。

什麽是B/S架構

B/S架構的全稱為Browser/Server,即瀏覽器/服務器結構。

Browser指的是Web瀏覽器,極少數事務邏輯在前端實現,但主要事務邏輯在服務器端實現。

B/S架構的系統無須特別安裝,只有Web瀏覽器即可。

其實就是我們前端現在做的一些事情,大部分的邏輯交給後臺來實現,我們前端大部分是做一些數據渲染,請求等比較少的邏輯。

B/S架構的分層:

與C/S架構只有兩層不同的是,B/S架構有三層,分別為:

第一層表現層:主要完成用戶和後臺的交互及最終查詢結果的輸出功能。

第二層邏輯層:主要是利用服務器完成客戶端的應用邏輯功能。

第三層數據層:主要是接受客戶端請求後獨立進行各種運算。

如圖所示:

技術分享

B/S架構的優點:

1、客戶端無需安裝,有Web瀏覽器即可。
2、BS架構可以直接放在廣域網上,通過一定的權限控制實現多客戶訪問的目的,交互性較強。
3、BS架構無需升級多個客戶端,升級服務器即可。可以隨時更新版本,而無需用戶重新下載啊什麽的。

B/S架構的缺點:

1、在跨瀏覽器上,BS架構不盡如人意。
2、表現要達到CS程序的程度需要花費不少精力。
3、在速度和安全性上需要花費巨大的設計成本,這是BS架構的最大問題。
4、客戶端服務器端的交互是請求-響應模式,通常需要刷新頁面,這並不是客戶樂意看到的。(在Ajax風行後此問題得到了一定程度的緩解)

B/S架構的幾種形式

第一種:客戶端-服務器-數據庫
技術分享

這個應該是我們平時比較常用的一種模式:

1、客戶端向服務器發起Http請求

2、服務器中的web服務層能夠處理Http請求

3、服務器中的應用層部分調用業務邏輯,調用業務邏輯上的方法

4、如果有必要,服務器會和數據庫進行數據交換. 然後將模版+數據渲染成最終的Html, 返送給客戶端

第二種:客戶端-web服務器-應用服務器-數據庫
技術分享
 類似於第一種方法,只是將web服務和應用服務解耦

1 客戶端向web服務器發起Http請求

2 web服務能夠處理Http請求,並且調用應用服務器暴露在外的RESTFUL接口

3 應用服務器的RESTFUL接口被調用,會執行對應的暴露方法.如果有必要和數據庫進行數據交互,應用服務器會和數據庫進行交互後,將json數據返回給web服務器

4 web服務器將模版+數據組合渲染成html返回給客戶端

第三種方法:客戶端-負載均衡器(Nginx)-中間服務器(Node)-應用服務器-數據庫

這種模式一般用在有大量的用戶,高並發的應用中。

技術分享

1、整正暴露在外的不是真正web服務器的地址,而是負載均衡器器的地址

2、客戶向負載均衡器發起Http請求

3、負載均衡器能夠將客戶端的Http請求均勻的轉發給Node服務器集群

4、Node服務器接收到Http請求之後,能夠對其進行解析,並且能夠調用應用服務器暴露在外的RESTFUL接口

5、應用服務器的RESTFUL接口被調用,會執行對應的暴露方法.如果有必要和數據庫進行數據交互,應用服務器會和數據庫進行交互後,將json數據返回給Node

6、Node層將模版+數據組合渲染成html返回反向代理服務器

7、反向代理服務器將對應html返回給客戶端

Nginx的優點有:

1、它能夠承受、高並發的大量的請求,然後將這些請求均勻的轉發給內部的服務器,分攤壓力.

2、反向代理能夠解決跨域引起的問題,因為Nginx,Node,應用服務器,數據庫都處於內網段中。

3、Nginx非常擅長處理靜態資源(img,css,js,video),所以也經常作為靜態資源服務器,也就是我們平時所說的CDN

  比如:前一個用戶訪問index.html, 經過Nginx-Node-應用服務器-數據庫鏈路之後,Nginx會把index.html返回給用戶,並且會把index.html緩存在Nginx上,

  下一個用戶再想請求index.html的時候,請求Nginx服務器,Nginx發現有index.html的緩存,於是就不用去請求Node層了,會直接將緩存的頁面(如果沒過期的話)返回給用戶。

發展前景

1、 C/S和B/S各有優勢,C/S在圖形的表現能力上以及運行的速度上肯定是強於B/S模式的,不過缺點就是他需要運行專門的客戶端,而且更重要的是它不能跨平臺,用c++在windows下寫的程序肯定是不能在linux下跑的。

2、B/S模式就,它不需要專門的客戶端,只要瀏覽器,而瀏覽器是隨操作系統就有的,方便就是他的優勢了。
而且,B/S是基於網頁語言的、與操作系統無關,所以跨平臺也是它的優勢,而且以後隨著網頁語言以及瀏覽器的進步,
B/S在表現能力上的處理以及運行的速度上會越來越快,它的缺點將會越來越少。尤其是HTML5的普及,在圖形的渲染方面以及音頻、文件的處理上已經非常強大了。
不過,C/S架構也有著不可替代的作用。


註:本文系轉載,如有侵犯版權問題,請通知。本人立即刪除。


深入理解B/S與C/S架構