B/S架構的全稱為Browser/Server,即瀏覽器/服務器結構。
Browser指的是Web瀏覽器,極少數(shù)事務邏輯在前端實現(xiàn),但主要事務邏輯在服務器端實現(xiàn)。
B/S架構的系統(tǒng)無須特別安裝,只有Web瀏覽器即可。
其實就是我們前端現(xiàn)在做的一些事情,大部分的邏輯交給后臺來實現(xiàn),我們前端大部分是做一些數(shù)據渲染,請求等比較少的邏輯。
B/S架構的分層:
與C/S架構只有兩層不同的是,B/S架構有三層,分別為:
第一層表現(xiàn)層:主要完成用戶和后臺的交互及最終查詢結果的輸出功能。
第二層邏輯層:主要是利用服務器完成客戶端的應用邏輯功能。
第三層數(shù)據層:主要是接受客戶端請求后獨立進行各種運算。
B/S架構的優(yōu)點:
1、客戶端無需安裝,有Web瀏覽器即可。
2、BS架構可以直接放在廣域網上,通過一定的權限控制實現(xiàn)多客戶訪問的目的,交互性較強。
3、BS架構無需升級多個客戶端,升級服務器即可??梢噪S時更新版本,而無需用戶重新下載啊什么的。
B/S架構的缺點:
1、在跨瀏覽器上,BS架構不盡如人意。
2、表現(xiàn)要達到CS程序的程度需要花費不少精力。
3、在速度和安全性上需要花費巨大的設計成本,這是BS架構的最大問題。
4、客戶端服務器端的交互是請求-響應模式,通常需要刷新頁面,這并不是客戶樂意看到的。(在Ajax風行后此問題得到了一定程度的緩解)
三、B/S架構的幾種形式
第一種:客戶端-服務器-數(shù)據庫
這個應該是我們平時比較常用的一種模式:
1、客戶端向服務器發(fā)起Http請求
2、服務器中的web服務層能夠處理Http請求
3、服務器中的應用層部分調用業(yè)務邏輯,調用業(yè)務邏輯上的方法
4、如果有必要,服務器會和數(shù)據庫進行數(shù)據交換. 然后將模版+數(shù)據渲染成最終的Html, 返送給客戶端
第二種:客戶端-web服務器-應用服務器-數(shù)據庫
類似于第一種方法,只是將web服務和應用服務解耦
1 客戶端向web服務器發(fā)起Http請求
2 web服務能夠處理Http請求,并且調用應用服務器暴露在外的RESTFUL接口
3 應用服務器的RESTFUL接口被調用,會執(zhí)行對應的暴露方法.如果有必要和數(shù)據庫進行數(shù)據交互,應用服務器會和數(shù)據庫進行交互后,將json數(shù)據返回給web服務器
4 web服務器將模版+數(shù)據組合渲染成html返回給客戶端
第三種方法:客戶端-負載均衡器(Nginx)-中間服務器(Node)-應用服務器-數(shù)據庫
這種模式一般用在有大量的用戶,高并發(fā)的應用中。
1、整正暴露在外的不是真正web服務器的地址,而是負載均衡器器的地址
2、客戶向負載均衡器發(fā)起Http請求
3、負載均衡器能夠將客戶端的Http請求均勻的轉發(fā)給Node服務器集群
4、Node服務器接收到Http請求之后,能夠對其進行解析,并且能夠調用應用服務器暴露在外的RESTFUL接口
5、應用服務器的RESTFUL接口被調用,會執(zhí)行對應的暴露方法.如果有必要和數(shù)據庫進行數(shù)據交互,應用服務器會和數(shù)據庫進行交互后,將json數(shù)據返回給Node
6、Node層將模版+數(shù)據組合渲染成html返回反向代理服務器
7、反向代理服務器將對應html返回給客戶端
Nginx的優(yōu)點有:
1、它能夠承受、高并發(fā)的大量的請求,然后將這些請求均勻的轉發(fā)給內部的服務器,分攤壓力.
2、反向代理能夠解決跨域引起的問題,因為Nginx,Node,應用服務器,數(shù)據庫都處于內網段中。
3、Nginx非常擅長處理靜態(tài)資源(img,css,js,video),所以也經常作為靜態(tài)資源服務器,也就是我們平時所說的CDN
比如:前一個用戶訪問index.html, 經過Nginx-Node-應用服務器-數(shù)據庫鏈路之后,Nginx會把index.html返回給用戶,并且會把index.html緩存在Nginx上,
下一個用戶再想請求index.html的時候,請求Nginx服務器,Nginx發(fā)現(xiàn)有index.html的緩存,于是就不用去請求Node層了,會直接將緩存的頁面(如果沒過期的話)返回給用戶。
四、發(fā)展前景
1、 C/S和B/S各有優(yōu)勢,C/S在圖形的表現(xiàn)能力上以及運行的速度上肯定是強于B/S模式的,不過缺點就是他需要運行專門的客戶端,而且更重要的是它不能跨平臺,用c++在windows下寫的程序肯定是不能在linux下跑的。
2、B/S模式就,它不需要專門的客戶端,只要瀏覽器,而瀏覽器是隨操作系統(tǒng)就有的,方便就是他的優(yōu)勢了。
而且,B/S是基于網頁語言的、與操作系統(tǒng)無關,所以跨平臺也是它的優(yōu)勢,而且以后隨著網頁語言以及瀏覽器的進步,
B/S在表現(xiàn)能力上的處理以及運行的速度上會越來越快,它的缺點將會越來越少。尤其是HTML5的普及,在圖形的渲染方面以及音頻、文件的處理上已經非常強大了。
不過,C/S架構也有著不可替代的作用。