1.1 程序開發(fā)架構(gòu)
1.1.1C/S體系結(jié)構(gòu)介紹
- C/S是Client/Server的縮寫备徐,即客戶端/服務(wù)器結(jié)構(gòu)寓盗。
- 在這種結(jié)構(gòu)中叮阅,服務(wù)器 通常采用高性能的機(jī)或工作站,并采用大型數(shù)據(jù)庫系統(tǒng)(如Oracle或SQLServer)
- 客戶端 則需要安裝專用的客戶端軟件龄句,如圖下所示回论。
-
這種結(jié)構(gòu)可以充分利用兩端硬件環(huán)境的優(yōu)勢(shì),將任務(wù)合理分配到客戶端和服務(wù)器分歇,從而降低了系統(tǒng)的通信開銷傀蓉。在2000年以前,C/S結(jié)構(gòu)占據(jù)網(wǎng)絡(luò)程序開發(fā)領(lǐng)域的主流职抡。
image.png
1.1.2 B/S體系結(jié)構(gòu)介紹
- B/S是Brower/Server的縮寫葬燎。即瀏覽器/服務(wù)器結(jié)構(gòu)。
- 在這種結(jié)構(gòu)中缚甩,客戶端不需要開發(fā)任何用戶界面谱净,而統(tǒng)一采用如IE和Firefox等瀏覽器,向服務(wù)器發(fā)送請(qǐng)求擅威,由Web服務(wù)器進(jìn)行處理壕探。并將處理結(jié)果逐級(jí)傳回客戶端.如下圖所示。
- 這種結(jié)構(gòu)利用不斷成熟和普及的瀏覽器技術(shù)實(shí)現(xiàn)原來需要復(fù)雜專用軟件才能實(shí)現(xiàn)的強(qiáng)大功能郊丛,從而節(jié)約了開發(fā)成本李请,是一種全新的軟件體系結(jié)構(gòu)。
- 這種體系結(jié)構(gòu)已經(jīng)成為當(dāng)今應(yīng)用軟件的首選體系結(jié)構(gòu)厉熟。
1.1.3 兩種體系結(jié)構(gòu)的比較
C/S結(jié)構(gòu)和B/S結(jié)構(gòu)是當(dāng)今世界網(wǎng)紹程序開發(fā)體系結(jié)構(gòu)的兩大主流.目前导盅,這兩種結(jié)構(gòu)都有自己的市
場(chǎng)份和客戶群。但是庆猫,這兩種體系結(jié)構(gòu)又各有各的優(yōu)點(diǎn)和缺點(diǎn)认轨,下面將從以下3個(gè)方面進(jìn)仃比較說明。
1.分發(fā)和堆護(hù)成本方面
- C/S構(gòu)的開發(fā)和維護(hù)成本都比B/S高月培。
- 采用C/S結(jié)構(gòu)時(shí)嘁字,對(duì)于不同客戶端要開發(fā)不同的程序,而且軟件的安裝杉畜、調(diào)試和升均需要在所有的客戶機(jī)上進(jìn)行纪蜒。例如,如果一個(gè)企業(yè)共有10個(gè)客戶站點(diǎn)使用一套C/S結(jié)構(gòu)的軟件此叠,則這10個(gè)客戶站點(diǎn)都需要安裝客戶端程序·當(dāng)這套軟件進(jìn)行了哪怕很微小的改動(dòng)后纯续,系統(tǒng)維護(hù)員都必須將客戶端原有的軟件卸載,再安裝新的版本并進(jìn)行配置灭袁,最可怕的是客戶端的維護(hù)工作必須不折不扣地進(jìn)行10次猬错。若某個(gè)客戶端忘記進(jìn)行這樣的更新,則該客戶端將會(huì)因軟件版本不一致而無法工作茸歧。
- 而B/S結(jié)構(gòu)軟件倦炒,則不必在客戶端進(jìn)行安裝及維護(hù)。如果將前面企業(yè)的C/S結(jié)構(gòu)的軟件換成B/S結(jié)構(gòu)软瞎。這樣在軟件升級(jí)后逢唤。系統(tǒng)維護(hù)員 只需要將服務(wù)器的軟件升級(jí)到最新版本,對(duì)于其他客戶端涤浇,只要重新登錄系統(tǒng)即可使用最新版本的軟件鳖藕。
2.客戶負(fù)載
- C/S結(jié)構(gòu)的客戶端不僅負(fù)責(zé)與用戶的交互,收集用戶信息只锭,而且還需要完成通過網(wǎng)絡(luò)向服務(wù)器請(qǐng)求
對(duì)數(shù)據(jù)庫著恩、電子表格或文檔等信息的處理工作。由此可見蜻展。應(yīng)用程序的功能越復(fù)雜页滚,客戶斕程序也就
越龐大,這也給軟件的維護(hù)工作帶來了很大的困難铺呵。 - 而B/S結(jié)構(gòu)的客戶端把事務(wù)處理邏輯部分交給了服務(wù)器裹驰,由服務(wù)器進(jìn)仃處理,客戶端只需要進(jìn)行顯示片挂,這樣幻林,將使應(yīng)用程帛服務(wù)器的運(yùn)行數(shù)據(jù)負(fù)荷較重,一旦發(fā)生服務(wù)器“崩潰”等問題音念,后果不堪設(shè)想沪饺。因此,許多單位都備有數(shù)據(jù)庫存儲(chǔ)服務(wù)器闷愤,以防萬一整葡。
3.安全性
- C/S結(jié)構(gòu)適用于專人使用的系統(tǒng),可以通過嚴(yán)格的管理派發(fā)軟件.達(dá)到保證系統(tǒng)安全的目的讥脐,這樣的軟件相對(duì)來說安全性比較高遭居。
- 而對(duì)于B/S結(jié)構(gòu)的軟件啼器,由于使用的人數(shù)較多,且不固定俱萍。相對(duì)來說安全性就會(huì)低些端壳。
由此可見,B/S相對(duì)于C/S來說具有更多的優(yōu)勢(shì)枪蘑,今大量的應(yīng)用程序開始轉(zhuǎn)移到應(yīng)用B/S結(jié)構(gòu)损谦,
許多軟件公司也爭(zhēng)相開發(fā)B/S版的件,也就是Web應(yīng)用程序岳颇。隨著Internet的發(fā)展照捡,基于HTTP協(xié)
議和HTML標(biāo)準(zhǔn)的Web應(yīng)用呈幾何數(shù)量級(jí)的增長,而這些Web應(yīng)用又是由各種Web技術(shù)所開發(fā)的话侧。
1.2 Web應(yīng)用程序的工作原理
Web應(yīng)用程序大體上可以分為兩種栗精,即靜態(tài)網(wǎng)站和動(dòng)態(tài)網(wǎng)站。早期的web應(yīng)用主要是靜態(tài)頁面的
瀏覽掂摔,即靜態(tài)網(wǎng)站术羔。這些網(wǎng)站使用HTML語言來編寫,放在Web服務(wù)器上乙漓,用戶使用瀏覽器通過HTTP協(xié)議請(qǐng)求服務(wù)器上的Web頁面级历,服務(wù)器上的Web服務(wù)器將接收到的用戶請(qǐng)求處理后,再發(fā)送給客戶端瀏覽器叭披,顯示給用戶寥殖。整個(gè)過程如圖1.3所示
隨著網(wǎng)絡(luò)的發(fā)展,很多線下業(yè)務(wù)開始向網(wǎng)上發(fā)展涩蜘,基于Internet的web應(yīng)用也變得越來越復(fù)雜嚼贡,用戶所訪問的資源已不能只是局限于服務(wù)器上保存的靜態(tài)網(wǎng)頁,更多的內(nèi)容需要根據(jù)用戶的請(qǐng)求動(dòng)態(tài)生成頁面信息同诫,即動(dòng)態(tài)網(wǎng)站粤策。這些網(wǎng)站通常使用HTML語言和動(dòng)態(tài)腳本語言(如JSP、ASP或是PHP等)編寫误窖,并將編寫后的程序部署到Web服務(wù)器上叮盘,由Web服務(wù)器對(duì)動(dòng)態(tài)腳本代碼進(jìn)行處理,并轉(zhuǎn)化為瀏覽器可解析的HTML代碼霹俺,返回給客戶端瀏覽器柔吼,顯示給用戶。整個(gè)過程如圖1.4所示丙唧。
1.3 Web應(yīng)用技術(shù)
在開發(fā)Web應(yīng)用程序時(shí)通常需要應(yīng)用 客戶端 和 服務(wù)區(qū) 兩方面的技術(shù)愈魏。 客戶端 應(yīng)用的技術(shù)主要用于 展現(xiàn)信息內(nèi)容 ,而 服務(wù)器 應(yīng)用的技術(shù)則主要用于進(jìn)行 業(yè)務(wù)邏輯的處理 和 數(shù)據(jù)庫的交互 等。
1.3.1 客戶端應(yīng)用的技術(shù)
- HTML語言
- CSS
- Flash
- 客戶端腳本技術(shù)
HTML語言不區(qū)分大小寫培漏,這一點(diǎn)與Java不同溪厘,例如HTML標(biāo)記<body></body>也可以寫為<BODY></BODY>。
在網(wǎng)中用CSS樣式不僅可以 美化頁面北苟,而且可以 優(yōu)化網(wǎng)頁速度 桩匪。因?yàn)镃SS樣式表文件只是簡(jiǎn)單的文本格式打瘪,不需要安裝額外的第三方軟件友鼻。另外,由于CSS提供了很多還效果從而 避免使用大量的圖片 闺骚,這樣將 大大縮小文件的體積彩扔,提高下載速度。
1.3.2 服務(wù)器端應(yīng)用的技術(shù)
- CGI
- ASP
- PHP
- ASP.NET
- JSP
1.4 常用網(wǎng)上下載資源
- JDK官方網(wǎng)站
http://www.oracle.com - Web服務(wù)器Tomcat的官方網(wǎng)站
http://tomcat.apache.org - IDE工具Eclipse的官方網(wǎng)站
http://www.eclipse.org - 開源數(shù)據(jù)庫MySQL的官方網(wǎng)站
http://www.mysql.com - JSTL標(biāo)準(zhǔn)標(biāo)簽庫的下載網(wǎng)站
http://tomcat.apache.org/taglibs/standard/