官术网_书友最值得收藏!

1.3 Web應用程序開發(fā)

由于技術的進步和網(wǎng)絡環(huán)境的進化,Web應用程序開發(fā)的技術也在不斷地進步。在Web應用程序開發(fā)的過程中,存在著不少爭議。當然,這些爭議都是開發(fā)人員對各種技術的看法不同造成的。接下來將簡單介紹這方面的內(nèi)容,使讀者對技術進化過程中的一些問題有所了解。

1.3.1 C/S與B/S之爭

在前面的章節(jié)中已經(jīng)介紹過,在Web應用程序的開發(fā)中,存在著兩種開發(fā)模式,一種是傳統(tǒng)的C/S架構,另一種是近些年興起的B/S架構。

由于硬件成本的降低,再加上應用系統(tǒng)復雜程度的提高,Web應用程序的開發(fā)逐漸轉向到C/S架構。所謂的C/S架構,就是客戶端/服務器端的架構形式。在這種架構方式中,多個客戶端圍繞著一個或者多個服務器,這些客戶端安裝在客戶機上,負責用戶業(yè)務邏輯的處理,在服務器端僅僅對重要的過程和數(shù)據(jù)庫進行處理和存儲,每個服務器端都分擔著服務器的壓力,這些客戶端可以根據(jù)不同的用戶的需求進行定制。C/S這種架構方式的出現(xiàn)大大提高了Web應用程序的效率,給軟件開發(fā)帶來革命性的飛躍。

但是,隨著時間的推移,C/S架構的弊端開始慢慢顯現(xiàn)。在C/S架構中,系統(tǒng)部署的時候需要在每個用戶的機器上安裝客戶端,這樣的處理方式帶來很大的工作量,而且在C/S架構中,軟件的升級也是很麻煩的一件事情,哪怕是再小的一點改動,都得把所有的客戶端全部修改更新。這些致命的弱點決定了C/S結構的命運。在C/S架構模式流行一段時間以后,逐漸被另一種Web應用系統(tǒng)的架構方式所代替。這種新的Web軟件架構的模式就是B/S。

B/S架構就是瀏覽器/服務器的架構形式。在這種架構方式中,采取了基于瀏覽器的策略,簡化了客戶端的開發(fā)工作。在B/S架構的客戶機中,不用安裝客戶端軟件,只要有通用的瀏覽器工具,就可以訪問服務器端提供的服務。在各種操作系統(tǒng)中,都提供了瀏覽器工具,這些瀏覽器工具都是遵循著相同的協(xié)議規(guī)范,所以B/S結構的客戶端在各種系統(tǒng)環(huán)境中都已經(jīng)實現(xiàn)。而且,在瀏覽器訪問服務器的過程中,使用的是HTTP協(xié)議,所以這種方式非常容易就可以穿過防火墻的限制。

而且在B/S結構的服務器端,也不用處理通信相關的問題。這些問題都由Web服務器提供,Web服務器處理用戶的HTTP請求,開發(fā)人員只需要專注開發(fā)業(yè)務邏輯功能即可。總之,Web服務器完成了底層的操作,給應用軟件的開發(fā)提供了基礎的通信服務,從而減輕了開發(fā)人員重復開發(fā)通信相關的功能,從而提高了開發(fā)的效率,降低了B/S結構應用程序開發(fā)的難度。

使用B/S架構,不僅減輕了開發(fā)者的任務,而且軟件的部署和升級維護也變得非常簡單。只需要把開發(fā)的Web應用程序部署在Web服務器中即可,而客戶端根本不需要做任何改動,這是在C/S架構中無法實現(xiàn)的。

但是B/S架構也有自身的一些缺點,例如界面元素單調(diào)。在B/S結構的程序中,失去了桌面應用程序豐富的用戶界面,程序在交互性上沒有C/S架構那么人性化。

在C/S和B/S兩種架構之間,并沒有嚴格的界限,兩種架構沒有好壞之分,使用這兩種架構都可以實現(xiàn)系統(tǒng)的功能。開發(fā)人員可以根據(jù)實際的需要進行選擇。例如需要豐富的用戶體驗,那就選擇C/S架構。在目前的網(wǎng)絡游戲中,基本都是選擇C/S架構。如果更偏重的是功能服務方面的實現(xiàn),就需要選擇B/S架構,這也正是目前絕大部分管理應用系統(tǒng)采用的軟件架構方法。

1.3.2 動態(tài)頁面語言對比

在互聯(lián)網(wǎng)發(fā)展的最初階段,所有的網(wǎng)頁內(nèi)容都是靜態(tài)的HTML網(wǎng)頁。在這種情況下,網(wǎng)站所能實現(xiàn)的任務僅僅是靜態(tài)的信息展示,而不能與客戶產(chǎn)生互動。當然這樣的網(wǎng)站是不能滿足用戶不同的需要的。在現(xiàn)實生活中,用戶的需要總是各種各樣的,這就需要網(wǎng)站或者是Web應用程序具有收集并處理響應用戶需要的功能,而靜態(tài)的HTML是不能滿足這種需要的。為了滿足這種特殊的需要,就有了后來一系列的動態(tài)頁面語言的出現(xiàn)。

所謂的動態(tài)頁面是指可以和用戶產(chǎn)生交互,能根據(jù)用戶的輸入信息產(chǎn)生對應的響應。能滿足這種需求的語言就可以稱為動態(tài)語言。

最初,動態(tài)網(wǎng)頁技術主要使用CGI,現(xiàn)在常用的動態(tài)網(wǎng)頁技術有ASP、JSP、PHP等。下面分別介紹這幾種動態(tài)語言:

(1)CGI

在互聯(lián)網(wǎng)發(fā)展的早期,動態(tài)網(wǎng)頁技術主要使用CGI(共用網(wǎng)關接口)。CGI程序被用來解釋處理表單中的輸入信息,并在服務器中產(chǎn)生對應的操作處理,或者是把處理結果返回給客戶端的瀏覽器,從而可以給靜態(tài)的HTML網(wǎng)頁添加上動態(tài)的功能。但是由于CGI程序的編程比較困難、效率低下,而且修改維護也比較復雜,所以在一段時間以后,CGI逐漸被其他新的動態(tài)網(wǎng)頁技術所替代。

(2)ASP

ASP是微軟公司推出的一種動態(tài)網(wǎng)頁語言,它可以將用戶的HTTP請求傳入到ASP的解釋器中,這個解釋器對這些ASP腳本進行分析和執(zhí)行,然后從服務器中返回處理的結果,從而實現(xiàn)了與用戶交互的功能。ASP的語法比較簡單,對編程基礎沒有很高的要求,所以很容易上手。而且微軟提供的開發(fā)環(huán)境的功能十分強大,這更是降低了ASP程序開發(fā)的難度。但是ASP也有其自身的缺點。ASP在本質(zhì)上還是一種腳本語言,除了使用大量的組件,沒有其他辦法提高效率,而且ASP還只能運行在Windows環(huán)境中,這樣Windows自身的一些限制就制約了ASP的發(fā)揮。這些都是使用ASP無法回避的弊端。

(3)JSP

JSP(Java Server Page)是Sun公司開發(fā)的一種服務器端的腳本語言。自從1999年推出以來,逐步發(fā)展為開發(fā)Web應用的一項重要技術。JSP可以嵌套在HTML中,而且支持多個操作系統(tǒng)平臺,一個用JSP開發(fā)的Web應用系統(tǒng),不需要做任何改動就可以在不同的操作系統(tǒng)中運行。

JSP本質(zhì)上就是把Java代碼嵌套到HTML中,然后經(jīng)過JSP容器的編譯執(zhí)行,可以根據(jù)這些動態(tài)代碼的運行結果生成對應的HTML代碼,從而可以在客戶端的瀏覽器中正常顯示。

由于JSP中使用的是Java的語法,所以Java語言的所有優(yōu)勢都可以在JSP中體現(xiàn)出來,尤其是J2EE中的強大功能,更是成為JSP語言發(fā)展的強大后盾。

(4)PHP

PHP和JSP類似,都是可以嵌套到HTML中的語言。不同之處在于,PHP的語法比較獨特,其中混合了C、Java等多種語法中的優(yōu)秀部分,而且PHP網(wǎng)頁的執(zhí)行速度要比CGI和ASP等語言的快很多。在PHP中,提供了對常見數(shù)據(jù)庫的支持,例如SQL Server、MySQL、Oracle、Sybase等。這種內(nèi)置的方法使PHP中的數(shù)據(jù)庫操作變得異常簡單。而且PHP程序可以在IIS和Apache中運行,提供對多種操作系統(tǒng)平臺的支持。

但是PHP也存在一些劣勢,PHP的開發(fā)運行環(huán)境的配置比較復雜,而且PHP是開源的產(chǎn)品,缺乏正規(guī)的商業(yè)支持。這些因素在一定程度上限制了PHP的進一步發(fā)展。

總之,各種動態(tài)語言都有著自身的優(yōu)勢和劣勢,只有根據(jù)客戶的需求來選擇具體的語言。只要能夠保證系統(tǒng)的性能和功能,選擇什么語言是無關緊要的。

1.3.3 .NET與J2EE之爭

自從.NET和J2EE推出以來,對J2EE和.NET的比較已經(jīng)不是一天兩天的事了。鐘情于Windows的用戶會選擇.NET,而選擇UNIX、Linux的用戶會更鐘情于J2EE,其實這兩種技術都有各自的優(yōu)勢和不足。下面簡單分析一下這兩種技術自身的優(yōu)劣。

1. .NET的優(yōu)點

在Windows平臺的應用程序中,對用戶界面的要求比較高,所以.NET提供了便捷的開發(fā)環(huán)境和工具。在Visual Studio中,用戶的界面都可以通過簡單的拖曳來完成,這種可視化的編程方式在Java中還不是很成熟,.NET的可視化編程環(huán)境是得到一些程序員支持的原因之一。

.NET運行在Windows操作平臺中,而且和Windows一樣,都是微軟開發(fā)的產(chǎn)品。所以,在.NET中可以訪問到操作系統(tǒng)中的各個細節(jié),因此可以調(diào)用系統(tǒng)中的各種功能。對于J2EE的程序來說,這樣的操作就很難實現(xiàn)了。在Java中無法訪問到操作系統(tǒng)底層的細節(jié)。

.NET的優(yōu)點還有很多,在這里不再一一列舉。

2. .NET的局限

.NET只能運行在Windows平臺中,不能跨平臺,這是.NET最大的一個劣勢。另外,.NET是微軟公司的產(chǎn)品,所有的開發(fā)設計僅僅局限在一個公司之內(nèi),而Java雖然是由Sun公司開發(fā),但是在發(fā)展的過程中得到了類似IBM、BEA這樣知名公司的支持,而且還有很多開源力量的支持。這些都是.NET中不可能擁有的。

3. J2EE可以彌補.NET的局限

在J2EE中,可供使用的類庫是非常廣泛的,并且都是非常成熟的。在Java發(fā)展的十多年中,這些類庫的功能經(jīng)過了大量的檢驗和測試,已經(jīng)十分成熟。而且在Java語言的跨平臺特性在這十幾年的發(fā)展中也經(jīng)受住了考驗。在J2EE領域中,有很多開源的資源可供使用,例如Tomcat、JBoss這樣的Web服務器,還有Spring、Hibernate、Struts這樣的開源框架,這些資源都是Java社區(qū)中開源力量的貢獻。這些資源同樣是在.NET中無法享受的。

.NET和J2EE都是企業(yè)級應用系統(tǒng)的解決方案,這兩種解決方案都可以很好地實現(xiàn)應用系統(tǒng)的功能。這兩種解決方案之間并沒有非常明顯的優(yōu)劣區(qū)別。關于.NET和J2EE誰好誰壞類似問題的討論是沒有意義的,在實際的開發(fā)過程中,應該根據(jù)具體的需要來選擇使用哪種技術。例如用戶只要求在Windows系統(tǒng)中使用,并沒有要求跨平臺,那選擇.NET和J2EE都是可以的;如果用戶要求一定在Linux平臺中部署應用系統(tǒng),那J2EE就是一種很好的選擇。所以選擇.NET還是J2EE是由需求而定的,兩種技術沒有優(yōu)劣之分。

主站蜘蛛池模板: 炎陵县| 米泉市| 洞头县| 龙海市| 大港区| 沁源县| 保德县| 古浪县| 南雄市| 门源| 简阳市| 阜南县| 永宁县| 密山市| 万州区| 林口县| 罗山县| 富源县| 高清| 绩溪县| 武穴市| 都昌县| 盐亭县| 镇远县| 当雄县| 宣恩县| 延长县| 黄山市| 蒙城县| 平顶山市| 崇左市| 金堂县| 彭州市| 龙里县| 荔浦县| 淮滨县| 东至县| 名山县| 成都市| 利津县| 睢宁县|