B/S與C/S簡(jiǎn)單比較
2009-8-3B/S,即軟件系統(tǒng)的瀏覽器/服務(wù)器(Browser/Server)應(yīng)用模式,是瀏覽器接收了用戶的鼠標(biāo)和鍵盤(pán)操作,然后這些操作最多通過(guò)簡(jiǎn)單的javascript或者dhtml包裝(例如裝入某個(gè)input標(biāo)簽的value),回發(fā)給WEB服務(wù)器。WEB服務(wù)器接下來(lái)輸出下一個(gè)頁(yè)面。在WEB端,不暴露任何除了http服務(wù)器以外的傳統(tǒng)服務(wù)器,例如數(shù)據(jù)庫(kù)服務(wù)器、郵件服務(wù)器、組件服務(wù)器、其它業(yè)務(wù)服務(wù)器(完全是跨平臺(tái)的)等等。
C/S,即軟件系統(tǒng)的客戶端/服務(wù)器(Client/Server)應(yīng)用模式,則是依賴于程序員寫(xiě)的程序的水平和服務(wù)器系統(tǒng)與應(yīng)用系統(tǒng)綜合控制能力,傳統(tǒng)編程方式中上述服務(wù)器通常都暴露給終端。看看周邊的程序員寫(xiě)的C/S程序,我相信很少有人寫(xiě)的此類程序具有起碼的安全性。很多公司的ERP是直接從客戶端打開(kāi)后臺(tái)數(shù)據(jù)庫(kù)的,而這些打開(kāi)命令甚至不用反匯編客戶程序,只要搜索一下特征代碼就能從DLL中發(fā)現(xiàn)。而.NET的DLL更不牢固。
從信息流上來(lái)說(shuō),由于B/S服務(wù)器的設(shè)計(jì)用于“服務(wù)于大規(guī)模用戶請(qǐng)求”的,所以它是把請(qǐng)求集中成一個(gè)數(shù)據(jù)塊(一個(gè)http的GET或者POST命令)傳遞給WEB服務(wù)的,然后服務(wù)也僅僅送還一個(gè)文件或一個(gè)數(shù)據(jù)塊(特別是Ajax技術(shù)的B/S應(yīng)用)。而C/S按照傳統(tǒng)的寫(xiě)法,特別是界面比較復(fù)雜的程序,內(nèi)部各個(gè)控件都會(huì)獨(dú)立、重復(fù)地請(qǐng)求各自需要的服務(wù)器,因此是許多個(gè)請(qǐng)求,比B/S對(duì)帶寬的需求多許多倍。如何避免濫用帶寬,讓服務(wù)器也能在較低的成本下服務(wù)幾百個(gè)客戶端,設(shè)計(jì)上很難。