1. 程式人生 > >淺談 C/S 和 B/S 架構

淺談 C/S 和 B/S 架構

概述

在這個資訊急劇膨脹的社會,我們不得不說人類正進入一個嶄新的時代,那就是資訊時代。資訊時代的一個主要而顯著的特徵就是計算機網路的應用。計算機網路從最初的集中式計算,經過了Client/Server階段(有兩層C/S和三層C/S),已發展到目前最流行的 Browser/Server計算模式。其中頗具爭論和影響力的是C/S以及B/S架構,C/S是一種歷史悠久且技術非常成熟的架構,B/S是新生代架構,從C/S派生出來,有很多創新,在web資訊時代虎虎生威。


C/S架構

一、C/S架構及其背景

C/S架構是一種比較早的軟體架構,主要應用於區域網內。在這之前經歷了集中計算模式,隨著計算機網路的進步與發展,尤其是視覺化工具的應用,出現過兩層C/S和三層C/S架構,不過一直很流行也比較經典的是我們所要研究的兩層C/S架構



C/S架構軟體(即客戶機/伺服器模式)分為客戶機和伺服器兩層第一層是在客戶機系統上結合了表示與業務邏輯,第二層是通過網路結合了資料庫伺服器。簡單的說就是第一層是使用者表示層,第二層是資料庫層。

客戶端和伺服器直接相連,這兩個組成部分都承擔著重要的角色,第一層的客戶機並不是只有輸入輸出,運算等能力,它可以處理一些計算,資料儲存等方面的業務邏輯事務;第二層的伺服器主要承擔事務邏輯的處理,本來事務很重,但是由於客戶機可以分擔一些邏輯事務,所以減輕了伺服器的負擔,使得網路流量增多。

想要使用C/S架構的軟體需要下載一個客戶端,安裝後就可以使用

二、C/S架構的優點

C/S架構既然能在計算機歷史的長河中長盛不衰就必然有其閃光之處。下面將從各個角度分析C/S架構的優點。

1)客戶端和伺服器直接相連

a)點對點的模式使得更安全。

b)可以直接操作本地文字,減少獲取文字的時間和精力。

c)由於直接相連,減少了通訊流量,這對於客戶來說可以節約一大筆費用。

d)直接相連,中間沒有什麼阻隔或岔路,所以響應速度快。當通訊量少的時候沒什麼感覺,但是如果通訊量龐大,就不會出現擁堵的現象。

2)客戶端可以處理一些邏輯事務

a)充分利用兩者的硬體設施,避免資源的浪費。

b)為伺服器分擔一些邏輯事務,可以進行資料處理和資料儲存。可以處理複雜的事務流程。

c)客戶端有一套完整應用程式,在出錯提示、線上幫助等方面都有強大的功能,並且可以在子程式間自由切換。

3) 客戶端操作介面

a)可以提高客戶的視覺體驗,滿足客戶需求。

b)客戶端操作介面可以隨意排列,充分滿足客戶的需要,展現特點與個性。

三、C/S架構的缺點

經過長期的時間檢驗,人們也發現了C/S存在的不足,下面將前人的觀點整理總結一下。
1)客戶端

a)只能處理一些功能單一的多系統。

b)C/S架構適用於區域網,對網速的要求比較高。

c)由於需要安裝客戶端,安裝部署困難,所以不易擴充套件。

d)若客戶端使用的系統不同,就要針對這些系統分別編寫程式。

e)客戶端介面缺乏通用性,且當業務更改時就需要更改介面,重新編寫。

f)客戶端需要專門的客戶端程式,比較麻煩,針對點多面廣且不具備網路條件的使用者群體,不能夠實現快速部署安裝和配置。

2)伺服器

a)使用者數增多會出現通訊擁堵,伺服器響應速度慢等情況。

b)當伺服器難當大任時,只能將其廢棄,使用更強大的伺服器。

c)當客戶端使用者增多時,伺服器難以承擔重負,是名副其實的“胖”客戶端。

d)使用者是通過ODBC連線到資料庫的,且每個連線到資料庫的使用者都會保持一個ODBC連線,會一直佔用中央伺服器的資源,對伺服器的要求很高。

3)使用者

a)沒有安裝客戶端的外部使用者不能訪問。

b)只有安裝了客戶端才能訪問伺服器,所以使用者不能隨時隨地的訪問。

c)使用者是通過ODBC連線到資料庫的,所以使用者數受限,不易擴張。

d)由於針對小範圍的客戶,所以不能實現真正大範圍的資訊共享,資訊傳達和釋出。


4)開發成本

a)需要聘用高素質的人員,對其培訓,費用高。

b)初次開發就需要配備好客戶端,伺服器,需要有專業水準的技術人員,所以成本高。


5)後期成本

a)系統升級維護麻煩,需要更改大量程式,投入大量精力和金錢。

b)業務擴充套件或變更時,需要更改程式,客戶端的介面也需要重新更改。

c)初次投入成本後不能一勞永逸,後期需要很多成本,比如伺服器的更換,客戶端的更變等。

四、C/S架構應用

C/S架構的軟體是在是數不勝數,從辦公的OFFICE,WPS,WINRAR到防毒軟體如金山,瑞金再到我們的娛樂軟體,如播放器,QQ,微信等,無處不見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架構不同,瀏覽器不是直接和資料庫伺服器相連,所以是多對多的結構。因此在此結構下,很適合在廣域網裡實現巨大的網際網路,甚至是全球網。有著很強大的資訊共享性。

在B/S出現的早期,瀏覽器只能顯示靜態頁面,得不到良好的互動,不能進行大量的邏輯處理,當時瀏覽器主要用來實現資訊的釋出,是一種單向的應用。後來出現了動態網頁,這裡的動態有三個方面,一是互動,二是動畫,三是資料。這樣,瀏覽器的互動效能得到極大提高。頁面也越來越豐富多彩。瀏覽器也能處理部分邏輯事務,所以瀏覽器成為了客戶端,但由於處理的內容較少,所以叫“瘦”客戶端

二、B/S架構的優點

B/S架構是應WEB技術的飛速發展而從傳統的C/S架構發展而來,並且一舉成為當今主要的網路架構。目前主要的網站,尤其是商務網站都是基於B/S架構建立的。那麼我們就來細數一下B/S架構的優點,它到底為什麼受到大家的青睞。
1)瀏覽器

a)能面對廣大的使用者實現資訊傳播共享。

b)瀏覽器只處理一些簡單的邏輯事務,負擔小。

c)頁面的更新能實現同步,所有使用者都能看到。

d)介面設計開發簡單,對程式設計師的要求較低,不需要大量的培訓。

e)業務擴充套件方便,只需要增加幾個業務擴充套件的頁面即可,不需要大量的程式設計。

f)介面不需要太多的編寫,比較通用,更改介面也比較簡單,所以幾乎不需要維護。

g)由於Web的平臺無關性,可以從一臺伺服器、幾個使用者的工作組級擴充套件成為擁有成上萬使用者的大型系統。


2)伺服器

a)資料都集中存放在資料庫伺服器,所以不存在資料不一致現象。

b)能有效地保護資料平臺和管理訪問許可權,伺服器資料庫也很安全。

c)在資料庫伺服器上不一定使用WINDOWS系統,選擇更多,成本更少。

d)如果是異地,只需要把伺服器連線專網即可,實現遠端維護、升級和共享。

e)在JAVA這樣的跨平臺語言出現之後,B/S架構管理軟體更是方便、快捷、高效。 

f)資料存放在資料庫伺服器,客戶端並不存放任何業務資料或者資料庫連線資訊,所以資料比較安全。

g)隨著伺服器負載的增加,可以平滑地增加伺服器的個數並建立叢集伺服器系統,然後在各個伺服器之間做負載均衡。


3)使用者

a)B/S建立在廣域網上,所需的網速不高。

b)外部的使用者也可以對瀏覽器進行訪問。

c)介面人性化,通用化,不需要多少培訓就能掌握。

d)不需要安裝客戶端,只要能連上網,就能隨時隨地的瀏覽頁面。

e)藉助Internet強大的資訊釋出與資訊傳送能力可以有效地解決企業內部的大量不規則的資訊交流。

f)所有的使用者都是通過一個JDBC連線緩衝池連線到資料庫的,使用者並不保持對資料庫的連線,使用者數基本上是無限的。

4)成本

a)軟體重用性強,節省了大量的成本。

b)不需要安裝特殊的軟體,客戶端幾乎零維護。

c)開發簡單,升級便捷,人員不需要太多培訓,節省了大量的資金。

d)客戶端幾乎不需要維護,只要盯緊伺服器就可以了,所以成本較小。

e)一般只有初期一次性投入成本,有利於軟體專案控制和避免IT黑洞

f)建立在廣域網之上的, 不必是專門的網路硬體環境,例如電話上網, 租用裝置等,成本較小。

三、B/S架構的缺點

雖說B/S架構有很多優越性,但是也不可避免有些缺陷,不然也不會暴發究竟使用哪種架構的口水戰。不過,在理論上,既然B/S是C/S的改進版,應該克服了C/S的很多缺陷,所以缺點應該不是很多。下面我們來看看實際上是什麼情況。
1)客戶端

a)面通用化,不突出個性。

b)頁面需要不斷地動態重新整理,尤其是使用者增多,網速慢得情況,很費時。

c)由於不需要安裝客戶端,客戶端易擴充套件,還有就是外部使用者也可以訪問,所以B/S面對大量的不可知使用者。

2)伺服器

a)使用者增多時,伺服器響應速度慢。

b)功能雖然多樣化,但是不能專門化,不能實現複雜的功能。

c)伺服器承擔著重要的責任,資料負荷較重。一旦發生伺服器“崩潰”等問題,後果不堪設想。

四、B/S架構應用

當時在講解典型的C/S架構時,提到了了常用的QQ軟體。現在新出來了一個WEBQQ,從WEBQQ名稱中的WEB就不難看出它屬於B/S架構,是一種瀏覽器伺服器結構。事實上也是如此,因為WEBQQ根本不需要安裝客戶端,只需要有瀏覽器就可以進行聊天互動了。

C/S和B/S

一、C/S和B/S關係概述

B/S架構是從C/S架構改進而來,可以說是三層C/S架構,由此可見兩者關係不一般。B/S從C/S中脫離而出,後來隨著WEB技術的飛速發展以及人們對網路的依賴程度加深,B/S一舉成為當今最流行的網路架構。兩種架構都在各自崗位上虎虎生威,它們各有千秋,都是非常重要的網路架構。在響應速度,使用者介面,資料安全等方面,C/S強於B/S,但是在業務擴充套件和適用www條件下,B/S明顯勝過C/S。可以這麼說,B/S的強項就是C/S的弱項,反之亦然。它們各有優缺點,相互無法取代。

二、C/S和B/S的不同點


1)比較大的差別
1、結構

C/S是兩層架構,由客戶端和伺服器組成,而B/S是三層架構,由瀏覽器,WEB伺服器和資料庫伺服器組成。


2、邏輯事務處理
C/S架構合理地讓客戶端和伺服器承擔一部分邏輯事務處理,使得伺服器的負擔減輕了,而且客戶端也能進行一些資料處理和儲存的功能。B/S架構的瀏覽器就是它的客戶端,可是這個客戶端只能進行一些簡單的輸入輸出和資訊釋出共享的功能,主要的邏輯事務處理還是要靠伺服器,所以伺服器的負擔很重。


3、工作原理
C/S架構是客戶端和伺服器直接相連,實現點對點的通訊,B/S是瀏覽器通過WEB伺服器向資料庫伺服器傳送資料請求,實現多對多的通訊。


4、響應速度
C/S架構的客戶端和伺服器直接相連,中間沒有任何阻隔,所以相應速度快,尤其是在使用者增多時更加明顯。B/S架構相應速度慢,主要的重任在資料庫伺服器身上,由於B/S架構的無限擴充套件性,當用戶激增,訪問量龐大時,伺服器相應速度慢,伺服器存在癱瘓的危險。


5、成本
C/S架構開發時,硬體需要一次性購買,費用較高,且需要訓練有素的技術人員,培訓費用高,而且軟體後期也需要不斷投入大量資金。B/S架構只需要一次性投入幾乎可以一勞永逸,有利於軟體專案控制和IT黑洞。


6、維護、升級以及擴充套件
C/S架構一旦有業務的變更或要升級,客戶端介面就要重新設計,需要投入大量的人力物力。軟體維護也比較麻煩,需要專業人士進行維護。使用者擴充套件也比較麻煩,需要安裝客戶端,對軟硬體要求高。B/S架構的維護和升級都非常容易,只要更改頁面內容或者增減頁面即可,客戶端幾乎是零維護,只需要維護好伺服器。所以相對來說更簡易,方便。由於B/S可以隨時隨地的訪問,所以極易擴充套件。


7、資訊共享
C/S架構是建立在區域網之上的,面向的是可知的有限使用者,資訊共享只在小範圍內。B/S架構建立在廣域網之上,使用者隨時隨地都可以訪問,外部使用者也可以訪問,尤其是WEB技術的不斷髮展,B/S面對的是幾乎無限的使用者群體,所以資訊共享性很強。


8、客戶端介面
C/S架構可以針對不同的功能設計出不同的很有特色的使用者介面,實現個性化。但是一旦業務改變就需要重新設計,很麻煩。B/S架構的使用者介面很通用,不能針對使用者突出個性,但是業務改變時只需要改變介面內容或者增減頁面,很輕鬆就能實現。


2)小的差別
1、適用的網路
C/S架構是建立在區域網的基礎之上的,區域網之間通過專用伺服器提供連線提供服務。B/S架構是建立在廣域網的基礎之上,有更大的使用範圍。


2、訪問
C/S架構下,使用者需要安裝客戶端才能夠訪問伺服器,而B/S架構下,使用者可以隨時隨地訪問,只要有網有瀏覽器,方便快捷。  


3、資料庫連線型別

C/S採用的是ODBC連線,所以只要使用者連線了資料庫就一直保持連線不會斷開,所以限制了使用者數,而B/S採用的是JDBC連線,使用者並不保持對資料庫的連線,所以使用者數幾乎是無限的。


4、功能
C/S架構能夠實現單一的複雜功能,如財政管理等,所以現在大多數比較大型的ERP系統仍是C/S架構,B/S架構的介面比較通用,所能處理的邏輯事務較少,所以功能較弱。


5、安全性
C/S架構建立在區域網之上,面向比較固定的使用者,對安全的要求較高。B/S架構建立在廣域網上,面對不可知人群,安全性差。


6、資訊流向不同
C/S 程式一般是典型的中央集權的機械式處理, 互動性相對低B/S 資訊   流向可變化, B-B B-C B-G等資訊、流向的變化, 更像個交易中心。


7、對技術人員的要求
C/S的功能比較專業化,對設計和開發人員的要求較高,需要專業的培訓。B/S的介面比較人性化,通用化,所以不需要多高的技能。

轉自:百度文庫