C/S和B/S架構的工作原理及優缺點?
一、C/S架構的工作原理
C/S 架構中客戶端和服務器之間通過網絡連接進行通信,客戶端發送請求后會等待服務器返回響應,直到收到響應后才能顯示給用戶。因此,在大量用戶同時使用時,需要增加服務器的硬件設施以應對更多的訪問請求。
C/S架構是一種比較早的軟件架構,主要應用于局域網內。在這之前經歷了集中計算模式,隨著計算機網絡的進步與發展,尤其是可視化工具的應用,出現過兩層C/S和三層C/S架構,不過一直很流行也比較經典的是我們所要研究的兩層C/S架構。
C/S架構軟件(即客戶機/服務器模式)分為客戶機和服務器兩層:名列前茅層是在客戶機系統上結合了表示與業務邏輯,第二層是通過網絡結合了數據庫服務器。簡單的說就是名列前茅層是用戶表示層,第二層是數據庫層。
客戶端和服務器直接相連,這兩個組成部分都承擔著重要的角色,名列前茅層的客戶機并不是只有輸入輸出,運算等能力,它可以處理一些計算,數據存儲等方面的業務邏輯事務;第二層的服務器主要承擔事務邏輯的處理,本來事務很重,但是由于客戶機可以分擔一些邏輯事務,所以減輕了服務器的負擔,使得網絡流量增多。
二、B/S架構的工作原理
B/S 架構中,客戶端通過瀏覽器訪問服務器上的應用程序,應用程序在服務器上執行并返回結果。由于瀏覽器是一個輕量級的應用程序,因此不需要安裝任何客戶端程序。
隨著Internet和WWW的流行,以往的主機/終端和C/S都無法滿足當前的全球網絡開放、互連、信息隨處可見和信息共享的新要求,于是就出現了B/S型模式,即瀏覽器/服務器結構。它是C/S架構的一種改進,可以說屬于三層C/S架構。主要是利用了不斷成熟的WWW瀏覽器技術,用通用瀏覽器就實現了原來需要復雜專用軟件才能實現的強大功能,并節約了開發成本,是一種全新的軟件系統構造技術。
名列前茅層是瀏覽器,即客戶端,只有簡單的輸入輸出功能,處理極少部分的事務邏輯。由于客戶不需要安裝客戶端,只要有瀏覽器就能上網瀏覽,所以它面向的是大范圍的用戶,所以界面設計得比較簡單,通用。第二層是WEB服務器,扮演著信息傳送的角色。當用戶想要訪問數據庫時,就會首先向WEB服務器發送請求,WEB服務器統一請求后會向數據庫服務器發送訪問數據庫的請求,這個請求是以SQL語句實現的。第三層是數據庫服務器,他扮演著重要的角色,因為它存放著大量的數據。當數據庫服務器收到了WEB服務器的請求后,會對SQL語句進行處理,并將返回的結果發送給WEB服務器,接下來,WEB服務器將收到的數據結果轉換為HTML文本形式發送給瀏覽器,也就是我們打開瀏覽器看到的界面。B/S架構和C/S架構不同,瀏覽器不是直接和數據庫服務器相連,所以是多對多的結構。因此在此結構下,很適合在廣域網里實現巨大的互聯網,甚至是全球網。有著很強大的信息共享性。
二、C/S架構的優點
1、客戶端和服務器直接相連
點對點的模式使得更安全。可以直接操作本地文本,減少獲取文本的時間和精力。由于直接相連,減少了通信流量,這對于客戶來說可以節約一大筆費用。直接相連,中間沒有什么阻隔或岔路,所以響應速度快。當通信量少的時候沒什么感覺,但是如果通信量龐大,就不會出現擁堵的現象。2、客戶端可以處理一些邏輯事務
充分利用兩者的硬件設施,避免資源的浪費。為服務器分擔一些邏輯事務,可以進行數據處理和數據存儲。可以處理復雜的事務流程。客戶端有一套完整應用程序,在出錯提示、在線幫助等方面都有強大的功能,并且可以在子程序間自由切換。3、客戶端操作界面
可以提高客戶的視覺體驗,滿足客戶需求。客戶端操作界面可以隨意排列,充分滿足客戶的需要,展現特點與個性。三、C/S架構的缺點
1、客戶端
只能處理一些功能單一的多系統。C/S架構適用于局域網,對網速的要求比較高。由于需要安裝客戶端,安裝部署困難,所以不易擴展。若客戶端使用的系統不同,就要針對這些系統分別編寫程序。客戶端界面缺乏通用性,且當業務更改時就需要更改界面,重新編寫。客戶端需要專門的客戶端程序,比較麻煩,針對點多面廣且不具備網絡條件的用戶群體,不能夠實現快速部署安裝和配置。2、服務器
用戶數增多會出現通信擁堵,服務器響應速度慢等情況。當服務器難當大任時,只能將其廢棄,使用更強大的服務器。當客戶端用戶增多時,服務器難以承擔重負,是名副其實的“胖”客戶端。用戶是通過ODBC連接到數據庫的,且每個連接到數據庫的用戶都會保持一個ODBC連接,會一直占用中央服務器的資源,對服務器的要求很高。3、用戶
沒有安裝客戶端的外部用戶不能訪問。只有安裝了客戶端才能訪問服務器,所以用戶不能隨時隨地的訪問。用戶是通過ODBC連接到數據庫的,所以用戶數受限,不易擴張。由于針對小范圍的客戶,所以不能實現真正大范圍的信息共享,信息傳達和發布。需要聘用高素質的人員,對其培訓,費用高。初次開發就需要配備好客戶端,服務器,需要有專業水準的技術人員,所以成本高。系統升級維護麻煩,需要更改大量程序,投入大量精力和金錢。業務擴展或變更時,需要更改程序,客戶端的界面也需要重新更改。初次投入成本后不能一勞永逸,后期需要很多成本,比如服務器的更換,客戶端的更變等。四、B/S架構的優點
1、瀏覽器
能面對廣大的用戶實現信息傳播共享。瀏覽器只處理一些簡單的邏輯事務,負擔小。頁面的更新能實現同步,所有用戶都能看到。界面設計開發簡單,對程序員的要求較低,不需要大量的培訓。業務擴展方便,只需要增加幾個業務擴展的頁面即可,不需要大量的編程。界面不需要太多的編寫,比較通用,更改界面也比較簡單,所以幾乎不需要維護。2、服務器
由于Web的平臺無關性,可以從一臺服務器、幾個用戶的工作組級擴展成為擁有成上萬用戶的大型系統。數據都集中存放在數據庫服務器,所以不存在數據不一致現象。能有效地保護數據平臺和管理訪問權限,服務器數據庫也很安全。在數據庫服務器上不一定使用WINDOWS系統,選擇更多,成本更少。如果是異地,只需要把服務器連接專網即可,實現遠程維護、升級和共享。在JAVA這樣的跨平臺語言出現之后,B/S架構管理軟件更是方便、快捷、高效。數據存放在數據庫服務器,客戶端并不存放任何業務數據或者數據庫連接信息,所以數據比較安全。隨著服務器負載的增加,可以平滑地增加服務器的個數并建立集群服務器系統,然后在各個服務器之間做負載均衡。3、用戶
B/S建立在廣域網上,所需的網速不高。外部的用戶也可以對瀏覽器進行訪問。界面人性化,通用化,不需要多少培訓就能掌握。不需要安裝客戶端,只要能連上網,就能隨時隨地的瀏覽頁面。借助Internet強大的信息發布與信息傳送能力可以有效地解決企業內部的大量不規則的信息交流。所有的用戶都是通過一個JDBC連接緩沖池連接到數據庫的,用戶并不保持對數據庫的連接,用戶數基本上是無限的。
4、成本
軟件重用性強,節省了大量的成本。不需要安裝特殊的軟件,客戶端幾乎零維護。開發簡單,升級便捷,人員不需要太多培訓,節省了大量的資金。客戶端幾乎不需要維護,只要盯緊服務器就可以了,所以成本較小。一般只有初期一次性投入成本,有利于軟件項目控制和避免IT黑洞。建立在廣域網之上的, 不必是專門的網絡硬件環境,例如電話上網, 租用設備等,成本較小。五、B/S架構的缺點
1、客戶端
面通用化,不突出個性。頁面需要不斷地動態刷新,尤其是用戶增多,網速慢得情況,很費時。由于不需要安裝客戶端,客戶端易擴展,還有就是外部用戶也可以訪問,所以B/S面對大量的不可知用戶。2、服務器
用戶增多時,服務器響應速度慢。功能雖然多樣化,但是不能專門化,不能實現復雜的功能。服務器承擔著重要的責任,數據負荷較重。一旦發生服務器“崩潰”等問題,后果不堪設想。延伸閱讀1:C/S架構和B/S架構的區別
CS響應速度快,安全性強,通常應用在局域網當中,可是開發維護費用高;BS能夠完成跨平臺,客戶端零維護,可是個性化才能低,響應速度較慢。于是有一些單位平日辦公應用BS,在實際生產當中使用CS結構。

猜你喜歡LIKE
相關推薦HOT
更多>>
分析型數據庫是什么,和關系型數據庫有什么區別?
一、分析型數據庫分析型是從數據庫的作用來劃分的,其重點用來做數據分析(OLAP),大量都是select語句。還有一種是專門用來做事務處理的,一般...詳情>>
2023-10-17 23:26:16
python self是什么意思,怎么使用?
一、python self介紹首先明確的是self只有在類的方法中才會有,獨立的函數或方法是不必帶有self的。self在定義類的方法時是必須有的,雖然在調...詳情>>
2023-10-17 21:24:11
創建Project提交到Github需要做什么?
一、創建Project提交到Github需要做什么1、在Github新建一個repository。2、打開編譯器,編輯最外面的.gitignore,如果沒有就新建一個這樣的文件...詳情>>
2023-10-17 20:23:50
C/S和B/S架構的工作原理及優缺點?
一、C/S架構的工作原理C/S 架構中客戶端和服務器之間通過網絡連接進行通信,客戶端發送請求后會等待服務器返回響應,直到收到響應后才能顯示給...詳情>>
2023-10-17 19:43:01熱門推薦
Web前端開發是什么技術?
沸分析型數據庫是什么,和關系型數據庫有什么區別?
熱對數量龐大的照片進行分類管理,較好的方便檢索的方法是什么?
熱web前端會用到哪些軟件工具?
新Flash動畫制作的原理是什么?
java/Python這么火,c++這么難,為什么我們還要選擇用C++?
app開發的制作為什么報價和開發周期都不一樣?
python self是什么意思,怎么使用?
什么是SEO?
PHP中的interface有什么用處?
創建Project提交到Github需要做什么?
為什么SwiftUI用struct來表示view?
C/S和B/S架構的工作原理及優缺點?
Flash為什么被淘汰了?
技術干貨






