明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

ASP.NET、JSP及PHP之間的抉擇

[摘要]由于我常接是ASP、JSP及PHP的項(xiàng)目,所以正開始寫一系列的文章來比較它們之間的差別,當(dāng)我寫到一半時(shí),ASP+被宣布了,所以我不得不重新開始審視這個(gè)問題。我正在同時(shí)做一個(gè)JSP項(xiàng)目和一個(gè)ASP項(xiàng)目,后者十分有趣,因?yàn)樗_始是采用ASP3.0,但當(dāng)項(xiàng)目結(jié)束后我將會(huì)轉(zhuǎn)換為ASP+。到那時(shí)我將可以對(duì)A...

由于我常接是ASP、JSP及PHP的項(xiàng)目,所以正開始寫一系列的文章來比較它們之間的差別,當(dāng)我寫到一半時(shí),ASP+被宣布了,所以我不得不重新開始審視這個(gè)問題。我正在同時(shí)做一個(gè)JSP項(xiàng)目和一個(gè)ASP項(xiàng)目,后者十分有趣,因?yàn)樗_始是采用ASP3.0,但當(dāng)項(xiàng)目結(jié)束后我將會(huì)轉(zhuǎn)換為ASP+。到那時(shí)我將可以對(duì)ASP+有更近的考察,并提供更好的ASP+和JSP的比較。本文是我目前對(duì)ASP+的一些認(rèn)識(shí)和看法,并分析了它對(duì)于象我這樣的普通開發(fā)人員可能會(huì)產(chǎn)生的影響。
通過最初步的比較,我發(fā)現(xiàn):
1) 面向?qū)ο笮?
ASP+將C#作為一種面向?qū)ο笳Z言,在很多方面來看,C#將成為微軟的與Java相似的語言。
C#另一個(gè)有趣的地方是所有對(duì)象都自動(dòng)變成為COM對(duì)象。如果C#能取得很大的市場份額,那么它將給ASP+帶來類似于Java的功能,并且具備更快的性能,因?yàn)樗梢院蚖indows環(huán)境緊密集成。C#是ASP+開發(fā)中一個(gè)最重要的功能,微軟會(huì)將C#發(fā)展成為Java的強(qiáng)勁對(duì)手。這也是微軟.Net框架的一個(gè)重要組成部分。我認(rèn)為C#是微軟在編程市場上擊敗對(duì)手的主要工具。我期待著微軟能在這個(gè)產(chǎn)品后面傾注全力,這樣,C#可以成為許多程序員的又一種選擇。C#的誕生無疑將進(jìn)一步加劇微軟和Sun產(chǎn)品的戰(zhàn)線,但這對(duì)用戶是有利的,他們可以選擇兩者之一來開發(fā)新的應(yīng)用。
2) 數(shù)據(jù)庫連接:
ASP另一個(gè)亮點(diǎn)是它使用ADO對(duì)象、ODBC、OLE-DB和事務(wù)處理管理器。因此ASP Web數(shù)據(jù)庫應(yīng)用開發(fā)特別簡單。ASP+發(fā)展了更多的功能,因?yàn)橛辛薃DO+!ADO+帶來了更強(qiáng)大更快速的功能。JSP和JDBC目前在易用性和性能上同ASP/ADO相比已有些落后,當(dāng)新版本ASP+/ADO+出現(xiàn)后這樣的差別會(huì)更明顯。所以我個(gè)人希望SUN應(yīng)盡快能花大力氣來追趕ASP+/ADO+的組合。
3)大型站點(diǎn)應(yīng)用:
ASP+將對(duì)大型站點(diǎn)(web farms)有更好的支持。事實(shí)上,微軟已經(jīng)在這方面付出了巨大的努力。 ASP+可以讓你考慮到多服務(wù)器(multiple servers)的場合,當(dāng)你需要更強(qiáng)大的功能時(shí),僅僅只需要增加一臺(tái)服務(wù)器。整個(gè).Net框架已經(jīng)充分地提供了這個(gè)方法。ASP+提供了外部會(huì)話狀態(tài)(external session state)來提供內(nèi)置式web farm的支持。另外,由于請(qǐng)求的各組件相互間經(jīng)過了充分的優(yōu)化,所以速度很快。
于是ASP+現(xiàn)在可以在大型項(xiàng)目方面與JSP一樣具有等同的能力。而ASP+還有價(jià)格方面的優(yōu)勢,因?yàn)樗械慕M件將是服務(wù)器操作系統(tǒng)的一部分。對(duì)于JSP,你需要購買昂貴的應(yīng)用服務(wù)器群來達(dá)到同樣的目的。
4) ASP+還提供更多的其它方面的新特性
例如: 
內(nèi)置的對(duì)象緩存和頁面結(jié)果緩存。 
內(nèi)置的XML支持,可用于XML數(shù)據(jù)集的簡單處理。 
服務(wù)器控制提供了更充分的交互式控制。 
  由此可見,ASP+確實(shí)對(duì)ASP進(jìn)行了較大的發(fā)展。在我審視完ASP+后,我的初步結(jié)論是:我未來項(xiàng)目主要還是要采用基于Java/JSP的技術(shù)。這有以下三個(gè)理由:
1) 要真正發(fā)揮ASP+潛力,你要使用C#或vb.net。這兩種語言將成為ASP+標(biāo)準(zhǔn)的核心的腳本語言。這對(duì)ASP的未來發(fā)展很有好處。而我向來不喜歡用當(dāng)前的Visual Basic來制作com對(duì)象。新的ASP+核心腳本語言更能發(fā)揮ASP+的價(jià)值。
顯然,所有這些ASP+的新進(jìn)展促使我對(duì)今后語言選擇做一個(gè)決定,它將占據(jù)我未來的無數(shù)時(shí)間和努力。
回想起來,當(dāng)Java開始發(fā)展起來時(shí)我正好學(xué)習(xí)了Java,那時(shí)我預(yù)感到這將是圍繞我未來程序生涯的語言。于是,JSP理所當(dāng)然地成為了我在web開發(fā)中的第一選擇。
現(xiàn)在我已經(jīng)是一個(gè)JSP fan,除非微軟能夠?qū)⑽艺麄(gè)扭轉(zhuǎn)過去,我感覺到自己正面臨ASP+的巨大挑戰(zhàn)。
2) ASP+依然完全鎖定在微軟的操作系統(tǒng)中。JSP比ASP+擁有更大的范圍,它在別的服務(wù)器配置中也有很好的伸縮性。雖然Windows 2000 的優(yōu)越性日益顯露,但這對(duì)開發(fā)人員不構(gòu)成問題。
3) 我并不能確信是否我能認(rèn)同ASP+結(jié)構(gòu)的各種方面,這需要更深入的分析,所以,我很猶豫。也許直到我使用了1-2個(gè)月后才會(huì)改變看法?偟膩碚f,這需要在一個(gè)很高的層次來看待這個(gè)beta產(chǎn)品。
而作為一個(gè)ASP開發(fā)人員,ASP+也讓我要停下來反思一下。未來8個(gè)月的ASP新項(xiàng)目將變得很困難。為什么?因?yàn)?nbsp;ASP+和C# 帶來了一個(gè)難題,它們要到2001年才正式提供。而很多性能方面的要求現(xiàn)在就需要確定。由于ASP+只是一個(gè)beta軟件,所以現(xiàn)在我的第一個(gè)選擇反而很簡單了,F(xiàn)在的項(xiàng)目就采用ASP3.0。我認(rèn)為各種beta版的語言都不太可信。
但我不能忽視ASP+,因?yàn)樗芸炀鸵瞥觯⒋砹薃SP的未來。ASP項(xiàng)目的管理者還需要考慮到未來的可平滑移植性及付出的時(shí)間代價(jià)等。另一個(gè)結(jié)果則是,這使得在近期使用PHP和JSP來代替ASP變得更可靠一些。
總的來說
1) 如果使用ASP+,你將花費(fèi)額外的時(shí)間學(xué)一些新的工具。
2) 新的工具有待于版本化,所以為什么不先關(guān)注于目前存在的東西?
3) ASP+將來會(huì)擁有的特性JSP已經(jīng)擁有。
4) ASP+將你鎖定到純Microsoft的體系中。
最后,我預(yù)測會(huì)有很多人加入到PHP和JSP的行列?墒牵匀粫(huì)有一部分人會(huì)受到ASP+給業(yè)界帶來的激動(dòng)所感染。我從沒看到一個(gè)beta編程產(chǎn)品會(huì)帶來如此的震撼!
同時(shí),我還注意到一篇討論.net的文章中也提到了同樣的問題:
ASP+以自由軟件作為開始,現(xiàn)在已經(jīng)漸漸成為Microsoft的.Net框架的基石之一。Sun應(yīng)該從中得到教訓(xùn)。特別注意的是,你需要許可證才能升級(jí)到ASP+,因?yàn)樗吞嗟漠a(chǎn)品集成在一起了。.Net框架太大了。在假定某個(gè)產(chǎn)品可以成為真正的產(chǎn)品之前,我通常等待它的第一個(gè)service pack。所以,即使ASP+已經(jīng)在2001第一季度被版本化,我仍然要等到2001第二季度。
當(dāng)然,因?yàn)锳SP+ 已經(jīng)產(chǎn)生了如此的激動(dòng)人心,一旦推出,很多商店都會(huì)馬上提供ASP+。
事實(shí)上我早已經(jīng)使用beta版ASP+! 我發(fā)現(xiàn)它使用 .aspx 后綴,這使我我感覺Microsoft會(huì)在近期推出第一個(gè)ASP+的service pack。
下一年里,我們將看到在這個(gè)巨大的市場上Sun和Microsoft如何展開決戰(zhàn),而程序員們又將做出什么樣的選擇呢?