摘要
在現今的軟件行業當中,如何優化技術方案以提供更好的用戶體驗和更高的服務質量,是每一個開發商所關注的核心問題。其中,網絡系統架構模式的選擇是決定軟件性能、可用性以及后續升級維護難易程度的關鍵因素。但是對于很多非技術背景的客戶來說,網絡系統架構似乎是一個神秘而復雜的概念。
為了幫助大家更好地理解這個問題,在本次宙思科普小課堂當中,我們將以通俗易懂的語言、生動有趣的QA互動模式(“Question and Answering”,Q是客戶提問,A是科普解答),為大家介紹兩種最常見的網絡系統架構模式:B/S架構和C/S架構。這兩種架構在軟件開發和實際應用中各有優勢和局限性,但都在特定的場景下發揮了重要的作用。希望通過本文,我們能一起探索這兩種架構的魅力,并了解它們在實際項目中的應用。
B/S和C/S架構的概念與區分方法
Q:我們單位最近想定制一款軟件,來實現某項三維可視化業務的需求。但是對于軟件的開發與應用,我們沒有很專業和深入的認知。聽說在網絡架構設計方面,存在著B/S和C/S兩種架構模式。這兩者的概念分別是什么?
A:B/S架構和C/S架構是目前在軟件開發領域,最為常見的兩種網絡系統架構模式。所謂B/S架構,就是“瀏覽器和服務器架構模式”。它的基本特征,是以瀏覽器(Browser)作為獲取服務的入口,通過服務器(Server)提供數據存儲和計算等服務。
而C/S架構,則是“客戶端和服務器架構模式”。它的基本特征,是以客戶端(Client)作為獲取服務的界面,通過服務器(Server)提供數據處理和業務邏輯等服務。
Q:所以B/S架構和C/S架構的核心區分點,就在于獲取服務的途徑和入口存在著差異,可以這樣理解嗎?
A:對。要分辨一個網絡系統是B/S架構還是C/S架構,其實并不復雜,只要把握住“獲取服務的入口”,就可以進行有效的區分。簡而言之,用戶打開瀏覽器來獲取軟件服務的,就是B/S架構;打開應用程序來獲取服務的,則是C/S架構。這里有兩個例子,可以幫助您更好地理解這兩種架構的表現形式。
Beta是一個計算系統。開發者搭建了一個網站,用戶用瀏覽器打開網站后就會以遠程桌面的形式打開Windows自帶的計算器,所有的計算操作都是通過計算器完成的。那么這個Beta計算系統是什么架構呢?可以看出,由于用戶進入計算機系統的方式是打開瀏覽器,因此這是一個典型的B/S架構。
Delta是一個收款系統。開發者使用開源的瀏覽器作為基礎打包了一個程序,用戶每次打開這個程序就會跳轉到支付寶網站的頁面,然后支付操作都是通過支付寶網站完成的。那么這個Delta收款系統,使用的又是什么框架呢?根據介紹,用戶進行支付操作的首要步驟是打開程序,因此這是一個典型的C/S架構。
B/S和C/S架構的優缺點
Q:這么看來,B/S架構和C/S架構還是挺容易區分的。我還想再深入了解一下,對于我們軟件使用方而言,B/S架構和C/S架構分別具有什么樣的優勢和不足之處呢?哪種網絡系統架構比較適合我們的工作開展?
A:選擇何種網絡系統架構作為軟件的設計基底,本質上還是要根據客戶單位的需求。針對不同的功能和目標,我們會為其提供一套精準的系統解決方案??陀^而言,B/S架構和C/S架構都有其獨特的優缺點,它們主要表現在以下的方面。
首先來談談B/S架構。B/S架構的搭建具有著鮮明的網絡技術特征,與人們日常的網絡使用需求高度重合。一次開發即能適配多個系統,無須安裝客戶就能立即使用,是B/S架構核心的優點。在這種架構下,用戶工作界面是通過WWW瀏覽器來實現的。當然,也正是因為這個原因,B/S架構不可避免地受瀏覽器性能限制,導致軟件性能優化困難,這是其弊端。
B/S架構示意圖
有別于B/S架構的邏輯和原理,C/S架構是一種分布式應用結構。在這種架構中,客戶端負責前端的用戶交互,而服務器則負責處理請求、數據管理、計算等后端任務。C/S架構的優點是明顯的,一方面它能有效分散計算負載,另一方面由于服務器端的改變不會影響到客戶端,因此它更便于維護和更新。當然,在這種架構之下,由于客戶端和服務器緊密地連結在一起,因此服務器一旦出現故障,會導致客戶端無法使用的問題,這是其最為致命的問題。
C/S架構示意圖
聚焦三維B/S架構的實現方式
Q:聽了你對B/S和C/S架構的介紹以后,我對其中的B/S架構特別感興趣,因為它看起來能夠快速地響應我們本次三維可視化項目的需求,有利于讓單位里的員工更加便捷、輕松地使用這款軟件,無須大費周章地在每一臺電腦上面安裝應用程序。那么我想知道,通過B/S架構的軟件來實現三維可視化的功能,都有哪幾種方式?
A:從軟件開發的角度而言,目前三維B/S架構的實現方式,有WebGL和云渲染這兩種手段。
WebGL是Web Graphics Library的簡寫,一般譯作“Web圖形庫”。這種三維B/S架構的實現方式,說白了其實是一種3D繪圖協議,它相當于制定了一個標準,讓所有的瀏覽器都提供統一的3D繪圖API接口。而云渲染的基本概念,則是在服務器上運行3D程序,通過網絡一方面將用戶輸入傳輸給服務器,另一方面將服務器渲染好的圖像傳輸給用戶。應當說,這兩者的技術,存在著本質上的差異。
基于WebGL技術的宙思軟件:數據中心可視化管理系統
Q:它們的差異性主要體現在什么地方?
A:WebGL的技術本質,是瀏覽器通過網絡將三維模型和腳本從服務器下載到自身當中,隨后在用戶設備上將三維模型渲染出來。而云渲染的技術本質,其實是一種遠程桌面和云桌面,將服務器渲染好的圖像傳輸給用戶。
也正是因為二者的技術本質存在著差異,因此在部署方式上也會有所不同。通常來說,WebGL的部署方式,是在服務器上放置我們的資源包,讓用戶通過網絡訪問下載,這種服務形式我們稱之為ToB。而云渲染的部署方式相對來說要復雜一點,首先我們要找到一家云渲染服務商,隨后將程序上傳到服務商的服務器上面并生成一個訪問網址,再將服務商給的網址發送給客戶進行訪問。
云渲染的部署需要找到專業的服務商
Q:那按照這種思路去制作軟件的話,是不是云渲染的成本要比WebGL更為高昂?畢竟云渲染的技術需要額外找服務商來實現。
A:就目前市場的價格水平而言,實現云渲染所要花費的成本確實會比較高,這是它最為顯著的短板。自己部署單云渲染框架軟件要花費10萬元左右,硬件設備的價格另算(一般100萬元以上)。當然,也可以采取按時按路收費的租賃模式,通俗地理解,相當于服務商為用戶提供網吧服務,粗略計算每個用戶每小時花費1元左右。
不過,云渲染也有著一些WebGL無可比擬的優勢。一方面云渲染的開發難度要比WebGL低,它的開發難度僅等同于開發PC程序;另一方面它真正實現了“一次開發、全平臺使用”的目標;最后其渲染效果與用戶設備無關,有效地擺脫了用戶自身設備所帶來的局限性。
Q:這么看來,在項目預算足夠充足的情況下,云渲染的技術能夠大幅提升軟件使用方的用戶體驗啊,而且也能壓縮產品的交付周期,讓軟件更快地上線。
A:確實如此,因此這種技術也逐漸廣泛地被應用起來。
云渲染云架構圖
Q:關于云渲染技術,我現在已經有了一個大致的認識了。最后我還想了解一下,作為一種在瀏覽器端運行的技術,WebGL在實現三維渲染時,相較于云渲染,有哪些優勢和可能面臨的困境?
A:由于云渲染的成本較高,WebGL目前還是比較主流的三維B/S架構實現方式。它的優點一是就在于運維費用低,用戶只需要支出大概10元/年/G的一個費用,就能夠享受地網絡存儲服務;二是運行時基本不受網絡影響,這得益于它“下載到本地后再展開運行”的技術邏輯。
當然,WebGL也有著一些不可避免的缺點,例如軟件性能會受到瀏覽器限制(無法渲染大場景,不同瀏覽器所呈現的效果也不一樣)以及用戶設備的影響。與此同時,WebGL開發難度過大,也是它無法回避的一個問題,諸如開發調試極為耗時、一旦遇到瀏覽器相關的問題就缺乏有效的解決辦法、可用插件過少等一系列的問題,都使得WebGL在未來的發展面臨著諸多挑戰。
WebGL技術目前仍是較為主流的B/S架構實現方式
從行業升級和技術應用的整體趨勢而言,應當說,云渲染是B/S架構的未來發展方向——當云渲染服務器的數量足夠多時,資源調配將變得易于實現(相當于共享電腦),這意味著會有效降低用戶的成本,甚至變得比個人購買電腦更加便宜;另一方面,隨著國內網速不斷提高、上網費用逐步下降的客觀狀況,云渲染未來的部署成本也將得到有效控制。
我們完全有理由相信,當技術水平和開發成本二者達到一個較好的平衡以后,未來,云渲染的應用將越來越廣泛,極有可能會成為三維B/S架構的核心實現方式!這既是技術發展的總體趨勢,也是我們為客戶提供優質體驗的努力方向!