應用架構B/S與C/S優劣比較(一)

1、背景介紹

C/S(Client/Server):客戶端/服務器結構。界面表示、事務處理邏輯放在客戶端,服務端主要負責數據的存儲管理,這就是胖客戶端模式。而在三層架構模式下,表示層和少許的事務處理放在客戶端,主要的事務處理邏輯放在業務應用服務端,同時數據存儲管理仍然爲獨立的一層。

B/S(Browser/Server):瀏覽器/服務器結構,界面顯示邏輯放在瀏覽器,事務處理邏輯則在Web Server。極少數的邏輯在前端實現,但主要的事務邏輯在服務器端實現。一般由Browser、Web Server、數據存儲Server造成三層架構。

2、優缺點比較
1. C/S優缺點

(1) 優勢:

l 能充分發揮客戶端PC的處理能力

不少工做能夠在客戶端處理後在提交給服務器,所以CS客戶端的響應速度快。例如,能夠在客戶端完成20萬條數據的排序、內容篩選,函數計算等;顯示包含上萬節點的關係圖。

客戶端應用能夠利用工做終端的多核CPU、內存、GPU等硬件資源。像AutoCAD、Photoshop、遊戲軟件客戶端等,還會針對顯卡進行特殊優化。

l 操做界面漂亮、形式多樣,能夠充分知足客戶自身的個性化要求

客戶端應用的自主性更強,客觀的講,瀏覽器自身就是一個客戶端應用。

因此,操做界面漂亮與否應該與所使用的開發語言和框架、設計與開發人員能力、應用開發資源投入等因素密切相關。

客戶端應用能夠集成第三方軟硬件,例如指紋儀、智能卡、加密狗等;可使用擴展屏幕,例如PowerPoint的演講者模式、大屏顯示等。

l CS結構的管理信息系統具備較強的事務處理能力,能實現複雜的業務流程

l 容易保證安全性,程序更注重流程

C/S通常面向相對固定的用戶羣,能夠對權限進行多層次檢驗,提供了更安全的存取模式。通常高度機密的信息系統採用C/S結構爲宜。

(2) 缺點:

l 須要專門的客戶端安裝程序,分佈功能弱,快速部署安裝和配置困難

l 兼容性差,須要考慮運行平臺,如操做系統版本

針對不一樣的平臺,須要使用不一樣的開發工具開發。操做系統版本(win 7/win 10/Linux)、系統類型(x86/x64)。

儘管一些中間語言,如java、.net經過虛擬機能夠解決運行平臺的差別性,但涉及到Native相關的組件,仍然須要考慮平臺差別性,典型的如各類解碼器,第三方組件須要區分x86和x64版本。

l 開發、維護成本較高,須要具備必定專業水準的技術人員才能完成

發生一次升級,則全部客戶端的程序都須要更新。

與客戶端的形式多樣、能夠知足客戶個性化要求相對應的就是對開發人員的要求也比較高。

l 用戶羣固定,適用面窄

一般不適合面向一些不可知的用戶,所以適用面窄,一般用於局域網。

2. B/S優缺點

(1)優勢:

l 分佈性強,客戶端零維護

只要有網絡、瀏覽器,就能夠隨時隨地進行查詢、瀏覽等業務處理。

l 業務擴展簡單方便,經過增長網頁便可增長服務器功能

l 維護簡單方便,只須要改變網頁,便可實現全部用戶的同步更新

這是BS架構很是突出的一個優勢。

l 開發簡單,共享性強

有大量的第三方BS組件和技術,可用於後端開發、前端顯示,所以從快速開發角度來看BS模式佔有很大的優點。

(2)缺點:

l 個性化特色明顯下降,沒法實現具備個性化的功能要求

集成諸如指紋儀、攝像頭、調用播放器變得困難。

雖然IE瀏覽器支持ActiveX擴展,可是在兼容性等方面又不盡如人意。

l 在跨瀏覽器上,BS架構不盡如人意

尤爲是在對HTML5的支持上,各主流瀏覽器都存在或多或少的差別,但隨着時間的推移,這種狀況將會有很大的改觀。

l 請求/響應模式帶來的性能問題

爲了提升使用體驗,一般會採用動態刷新網頁的方式,給服務器帶來必定的壓力(經過Ajax和WebSocket在必定程度上能夠緩解這方面的問題)。

瀏覽器通常只負責界面表示,所以一些業務邏輯必須在服務器上完成,像異常狀況處理、數據轉換、操做日誌等。

l 無狀態方式下的會話控制成本

服務器端在保存數據的同時還要保存用戶的狀態,開發人員要精心設計提交的次序即信息的完整性,而對C/S而言只須要所有完成後提交便可。

l 在速度和安全性上須要花費巨大的設計成本

由於全部的操做是經過請求/響應模式工做,弱安全設計不到位,經過簡單修改URL參數、篡改POST字段值就會產生安全性方面的問題。

l 功能弱化,難以實現傳統模式下的特殊功能要求

瀏覽器做爲界面展現的平臺和腳本語言的執行環境,它沒法超越瀏覽器所能支持的功能特性。ActiveX、Flash、Java Servlet都是爲了擴展功能曾經使用的技術,可是由於兼容性、安全性等方面的問題,已經基本被淘汰。

3. 對比分析

從軟件開發和運維最關注的方面進行對比:




C/S


B/S



開發

開發難度


對開發人員要求較高;



開發門檻低;


只要考慮瀏覽器的兼容狀況;


須要考慮無狀態條件下的會話控制;


功能/交互能力


自主性強;

交互方式更豐富;



依賴於瀏覽器;

功能弱化,存在沒法實現的功能;


部署


安裝


必須安裝客戶端程序;配置部署複雜;


只要部署服務器


升級


全部客戶端都要升級


只需更新服務器


運行


操做系統/類型


區分操做系統和運行平臺;



只要有兼容的瀏覽器便可



性能


最大化利用終端性能


性能相對較低


維護



要求高



方便


個性化需求


單獨更新客戶端


不支持



安全性


相對封閉,但也須要認真設計


須要花費精力設計

綜合對比發現,B/S架構勝在開發相對簡單,維護簡單方便;而C/S架構勝在性能高自主性強。在這些方面,短時間內各自佔據着獨有的優點。

採用何種架構,須要對軟件需求進行細緻的瞭解,最終來肯定使用的架構,不能單純的追求技術的先進性。而將來發展趨勢,是將B/S與C/S的優點完美的結合起來,既能以B/S的方式發佈運行,又能同時具備C/S極強的可操做性。
更多技術資訊可關注:gzitcast
相關文章
相關標籤/搜索