C/S架構(gòu)簡(jiǎn)要介紹
在了解什么是B/S架構(gòu)之前,我們有必要了解一下什么是C/S架構(gòu):
C/S架構(gòu)是第一種比較早的軟件架構(gòu),主要用于局域網(wǎng)內(nèi)。也叫 客戶機(jī)/服務(wù)器模式。
它可以分為客戶機(jī)和服務(wù)器兩層:第一層是在客戶機(jī)系統(tǒng)上結(jié)合了界面顯示與業(yè)務(wù)邏輯,第二層是通過(guò)網(wǎng)絡(luò)結(jié)合了數(shù)據(jù)庫(kù)服務(wù)器。
簡(jiǎn)單的說(shuō)就是第一層是用戶表示層,第二層是數(shù)據(jù)庫(kù)層。
這里需要補(bǔ)充的是,客戶端不僅僅是一些簡(jiǎn)單的操作,它也是會(huì)處理一些運(yùn)算,業(yè)務(wù)邏輯的處理等。也就是說(shuō),客戶端也做著一些本該由服務(wù)器來(lái)做的一些事情
如圖所示:
C/S架構(gòu)軟件有一個(gè)特點(diǎn),就是如果用戶要使用的話,需要下載一個(gè)客戶端,安裝后就可以使用。比如QQ,OFFICE軟件等。
C/S架構(gòu)的優(yōu)點(diǎn):
1 C/S架構(gòu)的界面和操作可以很豐富。(客戶端操作界面可以隨意排列,滿足客戶的需要)
2 安全性能可以很容易保證。(因?yàn)橹挥袃蓪拥膫鬏?,而不是中間有很多層。
3 由于只有一層交互,因此響應(yīng)速度較快。(直接相連,中間沒(méi)有什么阻隔或岔路,比如QQ,每天那么多人在線,也不覺(jué)得慢)
C/S架構(gòu)的缺點(diǎn):
可以將QQ作為類比:
1 適用面窄,通常用于局域網(wǎng)中。
2 用戶群固定。由于程序需要安裝才可使用,因此不適合面向一些不可知的用戶。
3 維護(hù)成本高,發(fā)生一次升級(jí),則所有客戶端的程序都需要改變。
什么是B/S架構(gòu)
B/S架構(gòu)的全稱為Browser/Server,即瀏覽器/服務(wù)器結(jié)構(gòu)。
Browser指的是Web瀏覽器,極少數(shù)事務(wù)邏輯在前端實(shí)現(xiàn),但主要事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn)。
B/S架構(gòu)的系統(tǒng)無(wú)須特別安裝,只有Web瀏覽器即可。
其實(shí)就是我們前端現(xiàn)在做的一些事情,大部分的邏輯交給后臺(tái)來(lái)實(shí)現(xiàn),我們前端大部分是做一些數(shù)據(jù)渲染,請(qǐng)求等比較少的邏輯。
B/S架構(gòu)的分層:
與C/S架構(gòu)只有兩層不同的是,B/S架構(gòu)有三層,分別為:
第一層表現(xiàn)層:主要完成用戶和后臺(tái)的交互及最終查詢結(jié)果的輸出功能。
第二層邏輯層:主要是利用服務(wù)器完成客戶端的應(yīng)用邏輯功能。
第三層數(shù)據(jù)層:主要是接受客戶端請(qǐng)求后獨(dú)立進(jìn)行各種運(yùn)算。
如圖所示:
B/S架構(gòu)的優(yōu)點(diǎn):
1、客戶端無(wú)需安裝,有Web瀏覽器即可。
2、BS架構(gòu)可以直接放在廣域網(wǎng)上,通過(guò)一定的權(quán)限控制實(shí)現(xiàn)多客戶訪問(wèn)的目的,交互性較強(qiáng)。
3、BS架構(gòu)無(wú)需升級(jí)多個(gè)客戶端,升級(jí)服務(wù)器即可??梢噪S時(shí)更新版本,而無(wú)需用戶重新下載啊什么的。
B/S架構(gòu)的缺點(diǎn):
1、在跨瀏覽器上,BS架構(gòu)不盡如人意。
2、表現(xiàn)要達(dá)到CS程序的程度需要花費(fèi)不少精力。
3、在速度和安全性上需要花費(fèi)巨大的設(shè)計(jì)成本,這是BS架構(gòu)的最大問(wèn)題。
4、客戶端服務(wù)器端的交互是請(qǐng)求-響應(yīng)模式,通常需要刷新頁(yè)面,這并不是客戶樂(lè)意看到的。(在Ajax風(fēng)行后此問(wèn)題得到了一定程度的緩解)
B/S架構(gòu)的幾種形式
第一種:客戶端-服務(wù)器-數(shù)據(jù)庫(kù)
這個(gè)應(yīng)該是我們平時(shí)比較常用的一種模式:
1、客戶端向服務(wù)器發(fā)起Http請(qǐng)求
2、服務(wù)器中的web服務(wù)層能夠處理Http請(qǐng)求
3、服務(wù)器中的應(yīng)用層部分調(diào)用業(yè)務(wù)邏輯,調(diào)用業(yè)務(wù)邏輯上的方法
4、如果有必要,服務(wù)器會(huì)和數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交換. 然后將模版+數(shù)據(jù)渲染成最終的Html, 返送給客戶端
第二種:客戶端-web服務(wù)器-應(yīng)用服務(wù)器-數(shù)據(jù)庫(kù)
類似于第一種方法,只是將web服務(wù)和應(yīng)用服務(wù)解耦
1、客戶端向web服務(wù)器發(fā)起Http請(qǐng)求
2、web服務(wù)能夠處理Http請(qǐng)求,并且調(diào)用應(yīng)用服務(wù)器暴露在外的RESTFUL接口
3、應(yīng)用服務(wù)器的RESTFUL接口被調(diào)用,會(huì)執(zhí)行對(duì)應(yīng)的暴露方法.如果有必要和數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交互,應(yīng)用服務(wù)器會(huì)和數(shù)據(jù)庫(kù)進(jìn)行交互后,將json數(shù)據(jù)返回給web服務(wù)器
4、web服務(wù)器將模版+數(shù)據(jù)組合渲染成html返回給客戶端
第三種方法:客戶端-負(fù)載均衡器(Nginx)-中間服務(wù)器(Node)-應(yīng)用服務(wù)器-數(shù)據(jù)庫(kù)
這種模式一般用在有大量的用戶,高并發(fā)的應(yīng)用中。
1、整正暴露在外的不是真正web服務(wù)器的地址,而是負(fù)載均衡器器的地址
2、客戶向負(fù)載均衡器發(fā)起Http請(qǐng)求
3、負(fù)載均衡器能夠?qū)⒖蛻舳说腍ttp請(qǐng)求均勻的轉(zhuǎn)發(fā)給Node服務(wù)器集群
4、Node服務(wù)器接收到Http請(qǐng)求之后,能夠?qū)ζ溥M(jìn)行解析,并且能夠調(diào)用應(yīng)用服務(wù)器暴露在外的RESTFUL接口
5、應(yīng)用服務(wù)器的RESTFUL接口被調(diào)用,會(huì)執(zhí)行對(duì)應(yīng)的暴露方法.如果有必要和數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交互,應(yīng)用服務(wù)器會(huì)和數(shù)據(jù)庫(kù)進(jìn)行交互后,將json數(shù)據(jù)返回給Node
6、Node層將模版+數(shù)據(jù)組合渲染成html返回反向代理服務(wù)器
7、反向代理服務(wù)器將對(duì)應(yīng)html返回給客戶端
Nginx的優(yōu)點(diǎn)有:
1、它能夠承受、高并發(fā)的大量的請(qǐng)求,然后將這些請(qǐng)求均勻的轉(zhuǎn)發(fā)給內(nèi)部的服務(wù)器,分?jǐn)倝毫?
2、反向代理能夠解決跨域引起的問(wèn)題,因?yàn)镹ginx,Node,應(yīng)用服務(wù)器,數(shù)據(jù)庫(kù)都處于內(nèi)網(wǎng)段中。
3、Nginx非常擅長(zhǎng)處理靜態(tài)資源(img,css,js,video),所以也經(jīng)常作為靜態(tài)資源服務(wù)器,也就是我們平時(shí)所說(shuō)的CDN
比如:前一個(gè)用戶訪問(wèn)index.html, 經(jīng)過(guò)Nginx-Node-應(yīng)用服務(wù)器-數(shù)據(jù)庫(kù)鏈路之后,Nginx會(huì)把index.html返回給用戶,并且會(huì)把index.html緩存在Nginx上,
下一個(gè)用戶再想請(qǐng)求index.html的時(shí)候,請(qǐng)求Nginx服務(wù)器,Nginx發(fā)現(xiàn)有index.html的緩存,于是就不用去請(qǐng)求Node層了,會(huì)直接將緩存的頁(yè)面(如果沒(méi)過(guò)期的話)返回給用戶。
發(fā)展前景
C/S和B/S各有優(yōu)勢(shì),C/S在圖形的表現(xiàn)能力上以及運(yùn)行的速度上肯定是強(qiáng)于B/S模式的,不過(guò)缺點(diǎn)就是他需要運(yùn)行專門的客戶端,而且更重要的是它不能跨平臺(tái),用c++在windows下寫的程序肯定是不能在linux下跑的。
B/S模式就,它不需要專門的客戶端,只要瀏覽器,而瀏覽器是隨操作系統(tǒng)就有的,方便就是他的優(yōu)勢(shì)了。而且,B/S是基于網(wǎng)頁(yè)語(yǔ)言的、與操作系統(tǒng)無(wú)關(guān),所以跨平臺(tái)也是它的優(yōu)勢(shì),而且以后隨著網(wǎng)頁(yè)語(yǔ)言以及瀏覽器的進(jìn)步,B/S在表現(xiàn)能力上的處理以及運(yùn)行的速度上會(huì)越來(lái)越快,它的缺點(diǎn)將會(huì)越來(lái)越少。尤其是HTML5的普及,在圖形的渲染方面以及音頻、文件的處理上已經(jīng)非常強(qiáng)大了。不過(guò),C/S架構(gòu)也有著不可替代的作用。
哈爾濱品用軟件有限公司致力于為哈爾濱的中小企業(yè)制作大氣、美觀的優(yōu)秀網(wǎng)站,并且能夠搭建符合百度排名規(guī)范的網(wǎng)站基底,使您的網(wǎng)站無(wú)需額外費(fèi)用,即可穩(wěn)步提升排名至首頁(yè)。歡迎體驗(yàn)最佳的哈爾濱網(wǎng)站建設(shè)。
