隨着網絡技術的不斷髮展,單機的軟件程序已難以知足網絡計算機的需求。爲此,各類各樣的網絡程序開發體系結構應運而生。其中,運用最多的網絡應用程序開發體系結構能夠分爲兩種,一種是基於客戶端/服務器的C/S結構,另外一種就是基於瀏覽器/服務器的B/S結構。下面將對這兩種結構進行介紹。前端
C/S體系結構介紹java
C/S是Client/Server的縮寫,即客戶端/服務器結構。在這種結構中,服務器一般採用高性能的PC機或工做站,並採用大型數據庫系統(如Oracle或SQL Server),客戶端則須要安裝專用的客戶端軟件。這種結構能夠充分利用兩端硬件的優點,將任務合理地分配到客戶端和服務器,從而下降了系統的通訊開銷。在2000年之前,C/S結構佔據網絡程序開發領域的主流。C/S結構由美國Borland公司最先研發。數據庫
B/S體系結構介紹後端
隨着Web2.0時代的到來,互聯網的網絡架構已經從傳統的C/S架構轉變爲更加方便、快捷的B/S架構,B/S架構大大簡化了用戶使用網絡應用的難度,這種人人都能上網、人人都能使用網絡上提供的服務的方法也進一步推進了互聯網的繁榮。瀏覽器
B/S架構帶來了如下兩方面的好處。緩存
● 客戶端使用統一的瀏覽器(Browser)。因爲瀏覽器具備統一性,它不須要特殊的配置和網絡鏈接,有效地屏蔽了不一樣服務提供商提供給用戶使用服務的差別性。另外,最重要的一點是,瀏覽器的交互特性使得用戶使用它很是簡便,且用戶行爲的可繼承性很是強,也就是用戶只要學會了上網,無論使用的是哪一個應用,一旦學會了,在使用其它互聯網服務時一樣具備了使用經驗,由於它們都基於一樣的瀏覽器操做界面。安全
● 服務端(Server)基於統一的HTTP協議。和傳統的C/S架構使用自定義的應用層協議不一樣,B/S架構使用的都是統一的HTTP協議。使用統一的HTTP也爲服務提供商簡化了開發模式,使得服務端開發者能夠採用相對規範的開發模式,這樣能夠大大節省開發成本。因爲使用統一的HTTP協議,因此基於HTTP協議的服務器就有不少,如Apache、IIS、Nginx、Tomcat、JBoss等,這些服務器能夠直接拿來使用,不須要服務開發者單獨來開發。不只如此,連開發服務的通用框架都不須要單獨開發,服務開發者只須要關注提供服務的應用邏輯,其它一切平臺和框架均可以直接拿來使用,因此B/S架構一樣簡化了服務器提供者的開發,從而出現了愈來愈多的互聯網服務。服務器
B/S網絡架構從前端到後端都獲得了簡化,都基於統一的應用層協議HTTP來交互數據,與大多數傳統的C/S互聯網應用程序採用的長鏈接的交互模式不一樣,HTTP採用無狀態的短鏈接的通訊方式,一般狀況下,一次請求就完成了一次數據交互,一般也對應一個業務邏輯,而後此次通訊鏈接就斷開了。採用這種方式是爲了可以同時服務更多與用戶,由於當前互聯網應用天天都會處理上億次的用戶請求,不可能每一個用戶訪問一次後就一直保持這個鏈接。網絡
基於HTTP協議自己的特色,目前的B/S網絡架構大多采用如圖1.1所示的架構設計,即要知足海量用戶的訪問請求,又要保持用戶請求的快速響應,因此如今的網絡架構也愈來愈複雜。架構
圖1 CDN架構圖
當一個用戶在瀏覽器裏輸入java.itxdl.cn這個URL時,將會發生不少操做。首先它會請求DNS把這個域名解析成對應的IP地址,而後根據這個IP地址在互聯網上找到對應的服務器,向這個服務器發起一個get請求,由這個服務器決定返回默認的數據資源給訪問的用戶。在服務器端實際上還有很複雜的業務邏輯:服務器可能有不少臺,到底指定那臺服務器來處理請求,這須要一個負載均衡設備來平均全部用戶的請求;還有請求的數據是存儲在分佈式緩存裏仍是一個靜態文件中,或是在數據庫裏;當數據返回瀏覽器時,瀏覽器解析數據發現還有一些靜態資源(如CSS、JS或者圖片資源)時又會發起另外的HTTP請求,而這些請求極可能會在CDN上,那麼CDN服務器又會處理這個用戶的請求,大致上一個用戶會涉及這麼多的操做。每個細節都會影響這個請求最終是否會成功。
無論網絡架構如何變化,始終有一些固定不變的原則須要遵照。
● 互聯網上全部的資源都要用一個URL來表示,URL就是統一資源定位符,若是你要發佈一個服務或者一個資源到互聯網上,讓別人可以訪問到,那麼你首先必需要有一個世界上獨一無二的URL。不要小看這個URL,它幾乎包含了整個互聯網架構的精髓。
● 必須基於HTTP協議與服務器端交互。無論你要訪問的是國內的仍是國外的數據,是文本數據仍是流媒體,都必須按照套路出牌,也就是都得采用統一打招呼的方式,這樣人家纔會明白要的是什麼。
● 數據展現必須在瀏覽器中進行。當獲取到數據資源後,必須在瀏覽器上才能恢復它的容貌。
兩種體系結構的對比
C/S結構和B/S結構是當今世界網絡程序開發體系結構的兩大主流。目前,這兩種結構都有本身的市場份額和客戶羣。可是,這兩種體系結構又各有各的優勢和缺點,下面將從3個方面進行比較說明。
1.開發和維護成本方面
C/S結構的開發和維護成本都比B/S高。採用C/S結構時,對於不一樣客戶端要開發不一樣的程序,並且軟件的安裝、調試和升級均須要在全部的客戶機上進行。例如,若是一個企業共有10個客戶站點使用一套C/S結構的軟件,則這10個客戶站點都須要安裝客戶端程序。當這套軟件進行了哪怕很微小的改動後,系統維護員都必須將客戶端原有的軟件卸載,再安裝新的版本進行配置,最可怕的是客戶更新不及時,致使版本不一致而沒法工做。而B/S結構的軟件,則沒必要在客戶端進行安裝及維護。若是將前面企業C/S結構的軟件換成B/S結構,則在軟件升級後,系統維護員只須要將服務器的軟件升級到最新版本,對於其餘客戶端,只要從新登陸系統,便可使用最新版本的軟件。
2.客戶端負載
C/S結構的客戶端不只負責與用戶的交互,收集用戶信息,並且還須要完成經過網絡向服務器請求對數據庫、電子表格或文檔等信息的處理。因而可知,應用程序的功能越複雜,客戶端程序也就越龐大,這也給軟件的維護工做帶來了很大的困難。而B/S結構的客戶端把事務處理邏輯部分交給了服務器,由服務器進行處理,客戶端只須要進行顯示,這樣將使應用程序服務器的運行數據負荷較重,一旦發生服務器「崩潰」等問題,後果將不堪設想。所以,許多單位都設有數據庫存儲服務器,以防萬一。
3.安全性
C/S結構適用於專人使用的系統,能夠經過嚴格的管理派發軟件,達到保證系統安全的目的,這樣的軟件相對來講安全性比較高。而對於B/S結構的軟件,因爲使用的人數較多且不固定,相對來講安全性就會低些。
因而可知,B/S相對於C/S來講具備更多的優點,現今大量的應用程序開始應用B/S結構,許多軟件公司也爭相開發B/S版本軟件,也就是Web應用程序。隨着Internet的發展,基於HTTP協議和HTML標準的Web應用呈集合數量級的增加,而這些Web應用正是由各類Web技術所開發的。