這是一篇在2009年寫的關(guān)于PHP與ASP.NET在速度,安全,性能,優(yōu)勢劣勢,發(fā)展前景、應(yīng)用狀況等方面進(jìn)行全面對比分析的文章,包含了包括Joe等資深的優(yōu)秀編程人員的測試和分析結(jié)果,是一份比較中立和權(quán)威的php與asp.net的權(quán)威分析博文。
思途智旅也有自己程序語言選擇的觀點(diǎn),以及為什么我們最終選擇了PHP程序。
思途旅游網(wǎng)站建設(shè)程序的核心技術(shù)團(tuán)隊曾經(jīng)是資深的C#工程師,以及精通ASP.NET程序工程師,他們曾經(jīng)任職于諾亞舟、新蛋、美國GE以及宏華石油等大型企業(yè)的技術(shù)骨干。我們在對PHP和ASP.NET進(jìn)行多次討論和測試后,思途CMS的程序最終選擇了PHP+MYSQL。
但是,誠如我們的技術(shù)總監(jiān)翟工所講,APS.NET和PHP是各有所長的,不能簡單用好壞,安全與否來評價。再好的語言,由不同的技術(shù)工程師開發(fā)出來,安全,性能也往往是有很大區(qū)別的。
因此,好的程序開發(fā),關(guān)鍵還是在于經(jīng)驗(yàn)的積累,開發(fā)標(biāo)準(zhǔn)的統(tǒng)一、完備的測試,以及開發(fā)者能力強(qiáng)弱等直接相關(guān)。所以不能簡單的說哪個語言程序好,或者哪個不好,這是外行人的說法。
不過,不得不說,針對不同的語言,不同的版本,在同樣的開發(fā)環(huán)境下,也會呈現(xiàn)出不能的優(yōu)勢與劣勢。從這個角度來說,將ASP.NET與PHP拿來比較肯定是有必要的,也正是經(jīng)過了這樣的測試與比較,思途CMS的程序最終選擇了PHP+MYSQL。
總的來說(摘錄:來源:http://www.jb51.net/article/76897.htm
關(guān)于性能:筆者會闡述影響性能的種種因素,其結(jié)果會證明因?yàn)樗俣榷x擇一種編程語言在大多數(shù)情況下是毫無意義的。
關(guān)于可拓展性:筆者會闡述影響可拓展性的因素,但實(shí)際上,只要編程方法正確,兩種語言的可拓展性能都十分強(qiáng)大。
關(guān)于成本和技術(shù)支持:由于 PHP 是開源的,通常運(yùn)行在 LAMP(即 Linux,Apache,MYSQL 和 PHP)這些開源平臺上。因此,在提供最具成本效益的解決方案和提供大量的資源及支持方面,PHP 是優(yōu)于 ASP.NET 的。
關(guān)于平均部署時間(即附加成本):使用 ASP.NET 進(jìn)行編碼需要的代碼量是使用 PHP 的兩倍,因此使用 PHP 部署時間成本更低,速度更快。
其實(shí),高效、易用、快速、更低成本,運(yùn)行平臺的安全性高應(yīng)該是PHP最好的注腳,這就是為什么網(wǎng)頁程序語言選擇中,超過70%的網(wǎng)站程序員選擇了PHP的原因。
國內(nèi)外主流CMS系統(tǒng)都不約而同的選擇的PHP,比如DEDE、ecshop、dz,當(dāng)然包括stourwebcms等等
?
以下是轉(zhuǎn)載的php與asp.net的測試比較文章,相信這樣的專業(yè)文章可以為您選擇電商網(wǎng)站程序語言提供參考。
來源:http://www.cnblogs.com/syblogs/articles/2206547.html
誰是速度之王?
剛剛在9月編程語言排行榜上取得歷史性突破的PHP在Web開發(fā)領(lǐng)域最到的對手可能就是基于微軟.NET技術(shù)的ASP.NET。近日,微軟的Joe Stagner在博客上發(fā)表了一系列文章比較了PHP和ASP.NET性能方面的文章,引起了來自雙方程序員的大量回應(yīng)。Joe表示,他會將這樣的測試持續(xù)下去,并尋求更為合適的方式,以獲得對實(shí)際項(xiàng)目來說盡可能有參考價值的結(jié)論。
Joe在博客中稱,一般來說,作性能測試的目的是要嘗試證明一方比令一方要快。我受雇于微軟,同時編寫PHP和ASP.NET代碼。我在.NET出現(xiàn)之前就在使用PHP,兩個東西我都很喜歡。
所以,我很難說出哪個更好。當(dāng)我說PHP好話時,我的微軟同事們會寫信來批評我,而當(dāng)我發(fā)表傾向于ASP.NET的言論時,我的PHP朋友們會說我是微軟的托。
我進(jìn)行這個測試是因?yàn)槊總€人都對PHP的性能有自己的看法(Windows vs. Linux & 5.2 vs. 5.3),卻沒人能給出明確的數(shù)據(jù)。
ASP.NET比拼PHP的測試環(huán)境如下:
所有的測試都在同一臺機(jī)器上運(yùn)行(擁有4G內(nèi)存和60G 7200轉(zhuǎn)硬盤的Toshiba Tecra M5)。
Ubuntu 9和Windows Server 2008標(biāo)準(zhǔn)版分別安裝于獨(dú)立(但相同)的硬盤中。
Linux使用Apache2,Windows使用IIS 7作為各自的Web服務(wù)器。
雙方的操作系統(tǒng)都進(jìn)行了完整的patch或升級。
雙方的系統(tǒng)和運(yùn)行時都沒有進(jìn)行額外的性能增強(qiáng)。
從實(shí)驗(yàn)結(jié)果上看,PHP在Linux和Windows的執(zhí)行性能各有千秋:
純粹的語句執(zhí)行在Windows上表現(xiàn)更好。
函數(shù)調(diào)用在Windows上更快。
對象的創(chuàng)建和訪問,對于PHP 5.2來說在Linux上更快,但是對于PHP 5.3來說則是Windows更快。
類庫調(diào)用在Linux上快得多(如在Ubuntu上進(jìn)行加密要比Windows要快3到5倍)。
Linux與Windows平臺對比
在Linux上訪問文件性能略高于Windows,不過Windows上文件復(fù)制的性能要比Linux慢60%,可能是ACL高級安全的緣故。
在Linux上訪問MySQL要比Windows快不少,而且在Windows上運(yùn)行PHP 5.3的情況則更為惡劣(不過從下面PostgreSQL的情況上來看,這應(yīng)該是糟糕實(shí)現(xiàn)的緣故)。
PostgreSQL在兩個平臺上的性能非常接近(1000個操作的差距在0.06秒之內(nèi))——無論是PHP 5.3還是PHP 5.2,Windows上表現(xiàn)都略勝一籌。
Windows上PHP 5.2訪問MS SQL Server的性能稍遜于在Linux上訪問MySQL(此時還沒有面向PHP 5.3的SQL Server支持)。
對于純粹的PHP執(zhí)行性能來說,Linux和Windows相差無幾,這不會成為選擇Linux或Windows作為部署平臺的決定性因素。如果你在構(gòu)建一個應(yīng)用程序,那么PostgreSQL可能是更好的選擇。因?yàn)樗趦蓚€平臺上的表現(xiàn)都很優(yōu)秀。
如果你的應(yīng)用程序必須使用MySQL,那么選擇Windows就需要早些計劃擴(kuò)展性問題了(個人認(rèn)為Sun不太可能為Windows優(yōu)化MySQL的性能)。
PHP的第一個版本的SQL Server驅(qū)動程序要比MySQL或PostpreSQL要慢一些,但這應(yīng)該不會成為問題。第二個版本的驅(qū)動器正在開發(fā)之中,它會帶來性能提升。
在Joe看來,全面來看,PHP和IIS團(tuán)隊在執(zhí)行性能上已經(jīng)做的非常成功,接下來就需要各開源程序的團(tuán)隊(Drupal、WordPress、Joomla等等)為各平臺進(jìn)行性能優(yōu)化了。
不過,除了文件復(fù)制操作之外,ASP.NET在性能方面全面于PHP(無論部署在Linux還是Windows上面):
Linux上訪問MySQL的性能稍稍優(yōu)于Windows上訪問SQL Server的性能(使用普通的數(shù)據(jù)類型和SELECT語句)。但是這里的差距幾乎可以忽略不計。
ASP.NET(C#)操作,如對象使用,類庫調(diào)用等等,其性能都遠(yuǎn)高于PHP。對于這個測試結(jié)果,Joe補(bǔ)充道:
我知道我的一些PHP朋友和Linux伙計們要跳出來駁斥我的測試和結(jié)果了。
我一直在思考,這樣的性能比較是否需要加入一些高級的優(yōu)化選項(xiàng)。不過.NET方面也有例如多線程,異步請求,和各種緩存方式可以使用
請注意——我并沒有說“ASP.NET更快,所以你不應(yīng)該使用PHP!”,我使用認(rèn)為,PHP過于簡單導(dǎo)致對某些高級應(yīng)用來說有些舉步維艱,就像ASP.NET在項(xiàng)目早期會有學(xué)習(xí)方面的復(fù)雜性。
對我來說,PHP最令人興奮的地方不是它的語言/平臺,而是成千上萬聰明的PHP開發(fā)人員,以及各種優(yōu)秀的項(xiàng)目(如Drupal、Joomla、WordPress、PHPBB、Nuke等等)。
可以這么認(rèn)為,PHP在Windows和Linux上的性能處于同一個水平上,我現(xiàn)在終于可以為Windows編寫那些我盼望著許多年的PHP類庫了。
Joe還公開了測試代碼。他表示,如果你對這個測試的結(jié)果有疑義,可以親自進(jìn)行這個實(shí)驗(yàn),或是編寫你自己的測試代碼進(jìn)行試驗(yàn)。
文章發(fā)布之后,許多網(wǎng)友對這一測試結(jié)果發(fā)表了看法。Joe基本上逐一回復(fù)了其中的主要觀點(diǎn):
“我使用ASP.NET只是因?yàn)槲蚁矚gVisual Studio IDE”——我個人認(rèn)為Visual Studio是最有生產(chǎn)力的開發(fā)工具。但是,PHP的有不錯的選擇。我使用Zend Studio,PHPEd,Komodo,Delphi for PHP,這些都很不錯。我討厭Eclipse,不過Zend也在這方面為PHP開發(fā)做了不少擴(kuò)展。
應(yīng)該比較ASP的性能——不用了,謝謝。舊式的ASP與目前的PHP與ASP.NET差距太大了。做這種比較,似乎是在建議使用ASP開發(fā)新項(xiàng)目,我強(qiáng)烈不建議你這么做。
32位與64位系統(tǒng)對比
32位與64位系統(tǒng)之間的比較——這些測試的目的并不是為了體現(xiàn)64位系統(tǒng)上的性能差距。今后的測試我會增加64位的場景。
“PHP丑陋至極”——哦,我不同意。舊式ASP要丑陋多了。你可以寫出非??膳露舐腜HP代碼,也可以寫出丑陋而可怕的C#或VB代碼。同樣,你也可以寫出優(yōu)雅的C++樣式的PHP。這完全只和開發(fā)人員的技能有關(guān)。
應(yīng)該使用Windows上的Apache進(jìn)行測試——Apache是Linux上的服務(wù)器,不過我認(rèn)為如果你在Windows上不使用IIS 7則會損失太多太多東西了。
“有辦法在Win2K8中,在不損失安全性的前提下加快文件復(fù)制性能嗎?”——似乎不行。我認(rèn)為這涉及到Windows服務(wù)器上的ACL系統(tǒng)。我以后可能會測試通過數(shù)據(jù)流讀取文件的性能,有些東西的性能可能會有所改善。不過,Web應(yīng)用程序一般不會編程來復(fù)制大量文件。
“PHP一直是,也永遠(yuǎn)只是一個半專業(yè)性質(zhì)的環(huán)境”——這種說法狗屁不通。PHP平臺上有許多專業(yè)的,高質(zhì)量的應(yīng)用程序,也有很多我非常尊敬的開發(fā)人員。是否專業(yè)是開發(fā)人員的問題,不是PHP或ASP.NET的問題。
“我認(rèn)為比較沒有opcode緩存的PHP很不公平,.NET是編譯執(zhí)行的,而PHP需要每次都解釋并‘編譯’頁面”——我同意這個測試可能不夠完整,但是我不認(rèn)同這個邏輯。我測試PHP的方式,就和下載安裝的方式一樣。我的虛擬主機(jī)也沒有安裝op-code緩存。而事實(shí)上,ASP.NET自帶這個特性也并不意味著測試是不公平的,這是因?yàn)镻HP缺少這個特性——不過這個要求很合理,我正在準(zhǔn)備新的測試。
“說PHP不是一個‘專業(yè)的’語言很沒道理,因?yàn)閹缀跛凶畲蟮恼军c(diǎn)都是用PHP構(gòu)建的”——這種說法是沒道理,不過說那些站點(diǎn)“幾乎都是”用PHP構(gòu)建的也是錯誤的。有些是,有些不是。
如果你們看到這一數(shù)據(jù)之后對ASP.NET信心倍增我自然很高興。如果我不認(rèn)為.NET是開發(fā)Web應(yīng)用程序來說是一種更好的選擇——至少不屬于其它平臺,那么我也不會在微軟工作了。
但是……如果你因?yàn)檫@些數(shù)據(jù)而忽視PHP,也是錯誤且幼稚的行為。
從純技術(shù)角度來說,我認(rèn)為.NET遠(yuǎn)比PHP強(qiáng)大,但這并不意味著PHP不夠強(qiáng)大。在我看來,PHP的力量體現(xiàn)在眾多的應(yīng)用程序以及可用的框架。
大約一周以后,Joe公開了第二次測試的結(jié)果。與前一個測試相比,第二個測試主要有以下兩個改變:
為Linux和Windows上安裝了op-code緩存,并重新運(yùn)行了大部分測試。
由于一些依賴項(xiàng)的問題,PHP 5.3 + APC的測試平臺變成了Debain 5操作系統(tǒng)。
對于第二次測試及其結(jié)果,Joe解釋到:
從結(jié)果上看,Ubuntu和Debian上運(yùn)行PHP的性能差距可以忽略不計。部分條目的性能有些細(xì)小的改進(jìn),有些則有25%的提高,但是總體來說其效果比我想象中要來得低。
使用APC之后,一些條目的運(yùn)行反而變慢了,不過我認(rèn)為這只是機(jī)器所造成的誤差。請注意,表格中顯示的不是第一次的結(jié)果,都是經(jīng)過兩次刷新,確認(rèn)是在緩存命中時得到的結(jié)果。
我認(rèn)為現(xiàn)在的測試非常公平。
空的循環(huán)測試和空的函數(shù)執(zhí)行非常重要,因?yàn)檫@反映了語言或平臺的基礎(chǔ)消耗。這是處頁面?zhèn)鬏數(shù)刃阅荛_銷外的性能消耗,是一個重要的考慮方面。
我的一些PHP朋友也認(rèn)可這個測試的準(zhǔn)確性,不過給出了非常有見解的補(bǔ)充:
ASP.NET在性能上的不會對我有什么影響。PHP是我的最愛,我的應(yīng)用程序已經(jīng)足夠快了。沒錯,ASP.NET在基礎(chǔ)性能上是比較快,但是我的應(yīng)用程序可以通過優(yōu)秀的頁面實(shí)現(xiàn)和JavaScript實(shí)踐把這部分性能補(bǔ)回來。
此外,根據(jù)上一次實(shí)驗(yàn)的結(jié)果,在Windows平臺上運(yùn)行PHP時,在MySQL和文件的訪問上有一些性能問題,微軟許多團(tuán)隊都向我獲取了相關(guān)信息。希望這些數(shù)據(jù)都夠轉(zhuǎn)變?yōu)榍袑?shí)的改進(jìn)。
Joe表示,他將收集大家認(rèn)為更公平,更有意義的測試場景。以下是他所計劃的測試項(xiàng)目:
實(shí)際頁面測試:循環(huán),函數(shù)調(diào)用和對象操作是一類測試,不過頁面的整體呈現(xiàn)則是另一種有意義的測試。
負(fù)載測試:哪一個環(huán)境可以同時處理更大量的請求。
在負(fù)載測試中,哪一方的性能會下降地更快。
在各種情況下,64位平臺的表現(xiàn)如何。
國內(nèi)也曾經(jīng)進(jìn)行過PHP在Linux和Windows平臺上的性能測試。微軟在WordCamp China 2009大會上公開了之前與康盛創(chuàng)想合作進(jìn)行的性能評估結(jié)果:在Windows Server 2008 + IIS上運(yùn)行PHP,從平均相應(yīng)時間,每秒處理的請求數(shù),以及數(shù)據(jù)吞吐量等多方便均優(yōu)于Linux + Apache的托管方式。
asp.net和php哪個更好
asp.net是微軟的東西,他的發(fā)展前途取決于微軟的態(tài)度。
在.net之前,微軟的是ASP。在微軟的大力推廣下,其看起來還是很有前途的。但現(xiàn)在,微軟想推廣asp.net,而ASP成了其障礙。所以從Windows Server 2003開始,微軟對ASP做了許多限制,比如上傳文件不能超過200KB等。再看看現(xiàn)在,微軟為了推廣Windows Vista以及最新的Windows 7,對Windows XP做了些什么,直接對普通用戶停止了技術(shù)支持,就是為了迫使你更換。
如果以后,微軟有了比.net更好的東西。微軟估計會對.net做類似的限制,強(qiáng)制用戶升級。
PHP是完全開源的,其需求更貼近日常的應(yīng)用,代碼風(fēng)格類似于C語言,比較容易學(xué)習(xí)。
速度方面,雖然PHP不是經(jīng)過編譯的,但在Linux下的實(shí)際應(yīng)用的執(zhí)行效率肯定要比Windows下的.net快。
運(yùn)行時的安全性PHP肯定要比微軟的.net要高。不過通常代碼都是沒有保護(hù)的。通常需要用商業(yè)的Zend軟件來加密。當(dāng)然這個加密的過程也是種編譯的過程。保護(hù)了代碼的同時,還提高了執(zhí)行速度。新的Zend的加密算法,目前還沒有成功破解的。而.net如果只做單純的編譯,是很容易被反編譯回來的。
PHP目前有兩個支線,一個PHP4、一個是PHP5。兩個支線都在共同的維護(hù)中。這保證過去使用PHP4的系統(tǒng)仍然能保證持續(xù)的良好的安全性和功能的更新。
ASP.NET與PHP哪個更有發(fā)展前途一點(diǎn)?
簡 介
ASP全名Active Server Pages,是一個WEB服務(wù)器端的開發(fā)環(huán)境,利用它可以產(chǎn)生和運(yùn)行動態(tài)的、交互的、高性能的WEB服務(wù)應(yīng)用程序。ASP采用腳本語言VBScript(Java script)作為自己的開發(fā)語言。
PHP是一種跨平臺的服務(wù)器端的嵌入式腳本語言。它大量地借用C,Java和Perl語言的語法, 并耦合PHP自己的特性,使WEB開發(fā)者能夠快速地寫出動態(tài)生成頁面。它支持目前絕大多數(shù)數(shù)據(jù)庫。還有一點(diǎn),PHP是完全免費(fèi)的,不用花錢,你可以從PHP官方站點(diǎn)(http: //www.php.net)自由下載。而且你可以不受限制地獲得源碼,甚至可以從中加進(jìn)你自己需要的特色。
JSP是Sun公司推出的新一代站點(diǎn)開發(fā)語言,他完全解決了目前ASP,PHP的一個通病——腳本級執(zhí)行(據(jù)說PHP4也已經(jīng)在Zend的支持下,實(shí)現(xiàn)編譯運(yùn)行)。Sun公司借助自己在Java上的不凡造詣,將Java從Java應(yīng)用程序和Java Applet之外,又有新的碩果,就是JSP——Java Server Page。Jsp可以在Serverlet和JavaBean的支持下,完成功能強(qiáng)大的站點(diǎn)程序。
三者都提供在 HTML代碼中混合某種程序代碼、由語言引擎解釋執(zhí)行程序代碼的能力。但JSP代碼被編譯成 Servlet并由Java虛擬機(jī)解釋執(zhí)行,這種編譯操作僅在對JSP頁面的第一次請求時發(fā)生。在ASP 、PHP、JSP環(huán)境下,HTML代碼主要負(fù)責(zé)描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。普通的 HTML頁面只依賴于Web服務(wù)器,而ASP 、PHP、JSP頁面需要附加的語言引擎分析和執(zhí)行程序代碼。程序代碼的執(zhí)行結(jié)果被重新嵌入到HTML代碼中,然后一起發(fā)送給瀏覽器。ASP 、PHP、JSP三者都是面向Web服務(wù)器的技術(shù),客戶端瀏覽器不需要任何附加的軟件支持。
技術(shù)特點(diǎn)
ASP:
使用VBScript 、 JScript等簡單易懂的腳本語言,結(jié)合HTML代碼,即可快速地完成網(wǎng)站的應(yīng)用程序。
無須compile編譯,容易編寫,可在服務(wù)器端直接執(zhí)行。
使用普通的文本編輯器,如Windows的記事本,即可進(jìn)行編輯設(shè)計。
與瀏覽器無關(guān)(Browser Independence), 用戶端只要使用可執(zhí)行HTML碼的瀏覽器,即可瀏覽Active Server Pages所設(shè)計的網(wǎng)頁內(nèi)容。Active ServerPages 所使用的腳本語言(VBScript 、 Jscript)均在WEB服務(wù)器端執(zhí)行,用戶端的瀏覽器不需要能夠執(zhí)行這些腳本語言。
Active Server Pages能與任何ActiveX scripting語言相容。除了可使用VB Script或JScript語言來設(shè)計外,還通過plug-in的方式,使用由第三方所提供的其他腳本語言,譬如REXX 、Perl 、Tcl等。腳本引擎是處理腳本程序的COM(Component Object Model) 物件。
可使用服務(wù)器端的腳本來產(chǎn)生客戶端的腳本。
ActiveX Server Components(ActiveX 服務(wù)器元件 )具有無限可擴(kuò)充性。
可以使用Visual Basic 、Java 、Visual C++ 、COBOL等編程語言來編寫你所需要的ActiveX Server Component 。
PHP:
數(shù)據(jù)庫連接
PHP可以編譯成具有與許多數(shù)據(jù)庫相連接的函數(shù)。PHP與MySQL是現(xiàn)在絕佳的組合。你還可以自己編寫外圍的函數(shù)去間接存取數(shù)據(jù)庫。通過這樣的途徑當(dāng)你更換使用的數(shù)據(jù)庫時,可以輕松地更改編碼以適應(yīng)這樣的變化。PHPLIB就是最常用的可以提供一般事務(wù)需要的一系列基庫。但PHP提供的數(shù)據(jù)庫接口支持彼此不統(tǒng)一,比如對Oracle, MySQL,Sybase的接口,彼此都不一樣。這也是PHP的一個弱點(diǎn)。
面向?qū)ο缶幊?/p>
PHP提供了類和對象?;趙eb的編程工作非常需要面向?qū)ο缶幊棠芰ΑHP支持構(gòu)造器、提取類等。
JSP:
將內(nèi)容的生成和顯示進(jìn)行分離
使用JSP技術(shù),Web頁面開發(fā)人員可以使用HTML或者XML標(biāo)識來設(shè)計和格式化最終頁面。使用JSP標(biāo)識或者小腳本來生成頁面上的動態(tài)內(nèi)容。生成內(nèi)容的邏輯被封裝在標(biāo)識和JavaBeans組件中,并且捆綁在小腳本中,所有的腳本在服務(wù)器端運(yùn)行。如果核心邏輯被封裝在標(biāo)識和Beans中,那么其他人,如Web管理人員和頁面設(shè)計者,能夠編輯和使用JSP頁面,而不影響內(nèi)容的生成。
在服務(wù)器端,JSP引擎解釋JSP標(biāo)識和小腳本,生成所請求的內(nèi)容(例如,通過訪問JavaBeans組件,使用JDBCTM技術(shù)訪問數(shù)據(jù)庫,或者包含文件),并且將結(jié)果以HTML(或者XML)頁面的形式發(fā)送回瀏覽器。這有助于作者保護(hù)自己的代碼,而又保證任何基于HTML的Web瀏覽器的完全可用性。
強(qiáng)調(diào)可重用的組件
絕大多數(shù)JSP頁面依賴于可重用的,跨平臺的組件(JavaBeans或者Enterprise JavaBeans組件)來執(zhí)行應(yīng)用程序所要求的更為復(fù)雜的處理。開發(fā)人員能夠共享和交換執(zhí)行普通操作的組件,或者使得這些組件為更多的使用者或者客戶團(tuán)體所使用。基于組件的方法加速了總體開發(fā)過程,并且使得各種組織在他們現(xiàn)有的技能和優(yōu)化結(jié)果的開發(fā)努力中得到平衡。
采用標(biāo)識簡化頁面開發(fā)
Web頁面開發(fā)人員不會都是熟悉腳本語言的編程人員。JavaServer Page技術(shù)封裝了許多功能,這些功能是在易用的、與JSP相關(guān)的XML標(biāo)識中進(jìn)行動態(tài)內(nèi)容生成所需要的。標(biāo)準(zhǔn)的JSP標(biāo)識能夠訪問和實(shí)例化JavaBeans組件,設(shè)置或者檢索組件屬性,下載Applet,以及執(zhí)行用其他方法更難于編碼和耗時的功能。
通過開發(fā)定制化標(biāo)識庫,JSP技術(shù)是可以擴(kuò)展的。今后,第三方開發(fā)人員和其他人員可以為常用功能創(chuàng)建自己的標(biāo)識庫。這使得Web頁面開發(fā)人員能夠使用熟悉的工具和如同標(biāo)識一樣的執(zhí)行特定功能的構(gòu)件來工作。
JSP技術(shù)很容易整合到多種應(yīng)用體系結(jié)構(gòu)中,以利用現(xiàn)存的工具和技巧,并且擴(kuò)展到能夠支持企業(yè)級的分布式應(yīng)用。作為采用Java技術(shù)家族的一部分,以及Java 2(企業(yè)版體系結(jié)構(gòu))的一個組成部分,JSP技術(shù)能夠支持高度復(fù)雜的基于Web的應(yīng)用。
由于JSP頁面的內(nèi)置腳本語言是基于Java編程語言的,而且所有的JSP頁面都被編譯成為Java Servlet,JSP頁面就具有Java技術(shù)的所有好處,包括健壯的存儲管理和安全性。
作為Java平臺的一部分,JSP擁有Java編程語言“一次編寫,各處運(yùn)行”的特點(diǎn)。隨著越來越多的供應(yīng)商將JSP支持添加到他們的產(chǎn)品中,您可以使用自己所選擇的服務(wù)器和工具,更改工具或服務(wù)器并不影響當(dāng)前的應(yīng)用。
應(yīng)用范圍
ASP是Microsoft開發(fā)的動態(tài)網(wǎng)頁語言,也繼承了微軟產(chǎn)品的一貫傳統(tǒng)——只能運(yùn)行于微軟的服務(wù)器產(chǎn)品,IIS(Internet Information Server) (windows NT)和PWS(Personal Web Server)(windows 98)上。Unix下也有ChiliSoft的插件來支持ASP,但是ASP本身的功能有限,必須通過ASP+COM的組合來擴(kuò)充,Unix下的COM實(shí)現(xiàn)起來非常困難。
PHP3可在Windows,Unix,Linux的Web服務(wù)器上正常運(yùn)行,還支持IIS,Apache等通用Web服務(wù)器,用戶更換平臺時,無需變換PHP3代碼,可即拿即用。
JSP同PHP3類似,幾乎可以運(yùn)行于所有平臺。如Win NT,Linux,Unix. NT下IIS通過一個插件,例如JRUN或者ServletExec,就能支持JSP。著名的Web服務(wù)器Apache已經(jīng)能夠支持JSP。由于Apache廣泛應(yīng)用在NT、Unix和Linux上,因此JSP有更廣泛的運(yùn)行平臺。雖然現(xiàn)在NT操作系統(tǒng)占了很大的市場份額,但是在服務(wù)器方面Unix的優(yōu)勢仍然很大,而新崛起的Linux更是來勢不小。從一個平臺移植到另外一個平臺,JSP和JavaBean甚至不用重新編譯,因?yàn)镴ava字節(jié)碼都是標(biāo)準(zhǔn)的與平臺無關(guān)的。
性能比較
有人做過試驗(yàn),對這三種語言分別做循環(huán)性能測試及存取Oracle數(shù)據(jù)庫測試。
在循環(huán)性能測試中,JSP只用了令人吃驚的四秒鐘就結(jié)束了20000*20000的循環(huán)。而ASP、PHP測試的是2000*2000循環(huán)(少一個數(shù)量級),卻分別用了63秒和84秒。(參考PHPLIB)。
數(shù)據(jù)庫測試中,三者分別對 Oracle 8 進(jìn)行 1000 次 Insert,Update,Select和Delete: JSP 需要 13 秒,PHP 需要 69 秒,ASP則 需要 73 秒。 前景分析 目前在國內(nèi)PHP與ASP應(yīng)用最為廣泛。而JSP由于是一種較新的技術(shù),國內(nèi)采用的較少。但在國外,JSP已經(jīng)是比較流行的一種技術(shù),尤其是電子商務(wù)類的網(wǎng)站,多采用JSP。
采用PHP的網(wǎng)站如新浪網(wǎng)(sina)、中國人(Chinaren)等,但由于PHP本身存在的一些缺點(diǎn),使得它不適合應(yīng)用于大型電子商務(wù)站點(diǎn),而更適合一些小型的商業(yè)站點(diǎn)。
首先,PHP缺乏規(guī)模支持。其次,缺乏多層結(jié)構(gòu)支持。對于大負(fù)荷站點(diǎn),解決方法只有一個:分布計算。數(shù)據(jù)庫、應(yīng)用邏輯層、表示邏輯層彼此分開,而且同層也可以根據(jù)流量分開,組成二維陣列。而PHP則缺乏這種支持。還有上面提到過的一點(diǎn),PHP提供的數(shù)據(jù)庫接口支持不統(tǒng)一,這就使得它不適合運(yùn)用在電子商務(wù)中。
ASP和JSP則沒有以上缺陷,ASP可以通過Microsoft Windowsd的COM/DCOM獲得ActiveX規(guī)模支持,通過DCOM和Transcation Server獲得結(jié)構(gòu)支持;JSP可以通過SUN Java的Java Class和EJB獲得規(guī)模支持,通過EJB/CORBA以及眾多廠商的Application Server獲得結(jié)構(gòu)支持。
三者中,JSP應(yīng)該是未來發(fā)展的趨勢。世界上一些大的電子商務(wù)解決方案提供商都采用JSP/Servlet。比較出名的如IBM的E-business,它的核心是采用JSP/Servlet的Web Sphere;西方另外一個非常著名的電子商務(wù)軟件提供商,Intershop,它原來的產(chǎn)品Intershop1,2, 3, 4占據(jù)了主要的電子商務(wù)軟件份額。
綜上所述,jsp應(yīng)該更有前途!
PHP與ASP.NET優(yōu)劣勢分析
不管你是不是已經(jīng)選擇了PHP,根據(jù)它在如下表格中在價格、速度、效率、安全性、平臺支持性和開源與否上的表現(xiàn),我們都能判斷出它的強(qiáng)項(xiàng)是遠(yuǎn)勝于弱點(diǎn)的。唯一不足的是缺少面向?qū)ο蟮闹С帧H欢@是個相對次要的缺陷,雖然不可忽視語言的結(jié)構(gòu),可是最終來說,優(yōu)秀的編碼還是歸結(jié)于反復(fù)實(shí)踐、執(zhí)行、好習(xí)慣和紀(jì)律。
價格:我不會單純考量首次投資的價格,拿PHP來說,顯然是免費(fèi)的,但我們也要考慮開發(fā)、維護(hù)和調(diào)試的成本,你可能還要購買Zend優(yōu)化引擎。對于ASP,你在一開始就要投資購買產(chǎn)品,而且你還會在額外的技術(shù)上開銷,比如購買圖形處理的類庫,或是其它。但從長遠(yuǎn)來看,PHP不會要求你去繳納升級費(fèi)用或是購買更多的license。任何曾經(jīng)接觸過license的人都會知道公司往往會在確保產(chǎn)品的兼容性上花費(fèi)大量時間和金錢。此外,發(fā)現(xiàn)bug并得到修復(fù)的反饋處理情況也不盡相同,這其實(shí)也可換算為時間的消耗,進(jìn)而影響到整個開發(fā)的成本。
速度和效率:就像我前面所提到的,ASP.NET是一個允許你使用多種不同編程語言的框架。此外,它還號稱擁有出色的面向?qū)ο缶幊棠P?。確實(shí)如此,可是這卻帶來了速度上的降低。談到它的這些優(yōu)點(diǎn),對于相同功能的頁面來說,比起PHP, 運(yùn)行于ASP的頁面需要其服務(wù)器分析、執(zhí)行更多的代碼。而PHP是“快餐型”的解決方案,先將功能搞定,還有很多健壯性上的問題可以留到2.0或是3.0里進(jìn)行補(bǔ)充,而且它的核心代碼得到編譯的優(yōu)化,程序可以高速運(yùn)行。速度并非唯一的考量,內(nèi)存的耗用也很重要。
安全性:ASP.NET運(yùn)行于IIS之上,這是個曾無數(shù)次遭受攻擊的系統(tǒng),幾乎每周IT的新聞上都會有類似消息。實(shí)際上,它已成為一項(xiàng)負(fù)債,不管整個市場投了多少美元在上面,很多IT的專業(yè)人士已經(jīng)拒絕將他們的網(wǎng)絡(luò)暴露于IIS Web服務(wù)器之下。而PHP與Apache工作在一起,它擁有良好的速度、可靠性的表現(xiàn),還有過硬的安全性。
平臺支持性:ASP.NET起初運(yùn)行于IIS,現(xiàn)在也可以運(yùn)行于Apache,而Apache能運(yùn)行于所有平臺。PHP天生就是設(shè)計運(yùn)行于Apache上,所以你有很多被證明是可靠的平臺去選擇。
開源與否:開源并非只是那些理想主義程序員們的專利,也不是那些想要在license上節(jié)省幾十美元的公司所特有的。當(dāng)你碰到所購買的軟件本身的bug的時候,開源可就是天賜良品。
無論是用ASP.NET還是PHP,都可能有很多用戶用你的軟件并發(fā)現(xiàn)bug。對于ASP.NET,這些bug就要經(jīng)過一個官僚的過程來告知,修復(fù),驗(yàn)證,然后再等到下一個補(bǔ)丁時發(fā)布。而PHP的修復(fù)和發(fā)布都很快。任何看過開源開發(fā)的人都知道新的產(chǎn)品發(fā)布或是補(bǔ)丁經(jīng)常是幾天內(nèi)的事情而不是商業(yè)軟件那樣的幾周或幾個月。如果你認(rèn)為那還不夠快的話,如果你愿意,你也可以自己直接修復(fù)。
技術(shù)分析:.NET的優(yōu)勢與劣勢
.NET Framework自2002年3月在日本國內(nèi)上市以來,至今已一年有余。據(jù)估計標(biāo)準(zhǔn)集成.NET Framework的OS--Windows Server 2003將于2003年5月在日本上市。隨著.NET環(huán)境的完善,作為足以抗衡Java的系統(tǒng)構(gòu)筑基礎(chǔ),開發(fā)人員需要認(rèn)識.NET Framework。下面筆者就來分析一下.NET的優(yōu)勢與劣勢。
XML Web服務(wù)并未成為普及.NET的導(dǎo)火索
此前人們一直在想:“對.NET來說,是否存在不同于Java的、獨(dú)特的應(yīng)用領(lǐng)域和市場?”。
業(yè)內(nèi)普遍認(rèn)為,微軟新一代系統(tǒng)構(gòu)筑環(huán)境--.NET Framework是在研究Java的基礎(chǔ)上開發(fā)出來的。不僅功能和架構(gòu)相似,而且由于是在Java之后開發(fā)出來的,因此Java所沒有的功能更是隨處可見。比如在Web應(yīng)用中實(shí)現(xiàn)事件驅(qū)動型應(yīng)用程序功能等。
不過雖說如此,如果只是告訴用戶“.NET Framework比Java好得多”,那么Java開發(fā)人員特意轉(zhuǎn)而使用.NET Framework的動機(jī)不會太強(qiáng)。
由于Java已經(jīng)先行積累了廣泛的應(yīng)用成果,積累了很多足以彌補(bǔ)其缺點(diǎn)的經(jīng)驗(yàn)以及平臺工具。只要不出現(xiàn)Java難以應(yīng)用的用途和市場,那么.NET Framework就很難阻止Java的進(jìn)一步發(fā)展。
.NET的優(yōu)勢:企業(yè)信息系統(tǒng)部門可自行編程
剛開始,微軟就把易于開發(fā)XML Web服務(wù)作為.NET的優(yōu)勢而大加宣傳。以XML Web服務(wù)為前提而設(shè)計的.NET與Web服務(wù)具有極高的親和性。但XML Web服務(wù)的產(chǎn)生卻比較晚。盡管業(yè)內(nèi)對它的期待和關(guān)注程度較高,但由于可充分利用XML Web服務(wù)的“可賺錢的”業(yè)務(wù)模式尚未確立,所以目前與Web站點(diǎn)相比其市場仍微不足道。其中,Java方面也正在加緊完善便于開發(fā)XML Web服務(wù)的功能。
那么,是否存在.NET的獨(dú)特用途呢?筆者通過采訪所得到的一個答案是:.NET開發(fā)工具--Visual Studo.NET的易用性使得它在Java很難實(shí)現(xiàn)的“用戶企業(yè)(信息系統(tǒng)部門)也可編程的系統(tǒng)”上超人一頭。筆者認(rèn)為可能還存在其他這樣的領(lǐng)域。當(dāng)然,盡管.NET的標(biāo)準(zhǔn)語言VB.NET和C#都與Java一樣復(fù)雜,但是Visual Studo.NET卻很好地消除了這種復(fù)雜性。
比如,日本蘭碧兒(NOEVIR)只靠自己的信息系統(tǒng)部門就完成了Web代理店支援系統(tǒng)的從企劃到編程的全部工作。日本一家系統(tǒng)集成商曾表示,此前導(dǎo)入Java系統(tǒng)的用戶企業(yè)中“選用.NET的信息系統(tǒng)部門就有望自行開發(fā)或?qū)ο到y(tǒng)進(jìn)行修改”。
筆者認(rèn)為,由于Java本身較為復(fù)雜,且不易學(xué)習(xí)掌握,因此“用戶企業(yè)只負(fù)責(zé)企劃,而將編程工作完全委托給集成商的現(xiàn)象非常普遍”。
在COBOL和VB(客戶商/服務(wù)器)的全盛時期,信息系統(tǒng)部門自己編程、對系統(tǒng)進(jìn)行部分修改和功能追加是很正常的事情。如果連細(xì)小的系統(tǒng)修改都要外包,那么系統(tǒng)的維護(hù)成本自然會很高,因此就將失去靈活性。甚至于還有可能削弱信息系統(tǒng)部門的業(yè)務(wù)能力。說到企劃,聽起來好聽,但如果連大體的情況也不了解,恐怕與開發(fā)商交涉都很困難。這也許就是Java的一個“弊端”吧。
此外,“成本比Unix低”以及“可以充分利用Windows技術(shù)資源”等原因也在加速.NET Framework的普及。作為客戶端/服務(wù)器系統(tǒng)的開發(fā)環(huán)境,VB的后續(xù)語言--.NET中的“Windows Form”最具競爭力。越來越多的系統(tǒng)集成商開始選擇這一工具構(gòu)筑系統(tǒng)。
.NET的劣勢:應(yīng)用成果少、開放性差
反過來說,.NET的劣勢則在于在大型系統(tǒng)中的應(yīng)用成果少、缺乏“開放性”。
對于應(yīng)用成果來說,今后其數(shù)量將會不斷增加。據(jù)悉,日本Kabu.com證券將在2003年度內(nèi)利用.NET Framework全面重新構(gòu)筑該公司目前利用ASP構(gòu)筑的系統(tǒng)。
在“開放性”方面又將會如何呢?Java普及的主要因素很多,但筆者認(rèn)為其中最關(guān)鍵的在于“開放性”。由于可各種OS上運(yùn)行,而且很多開發(fā)商還提供了Web應(yīng)用服務(wù)器和開發(fā)工具,因此用戶可以隨意選擇。而開發(fā)商則通過在功能和性能方面相互競爭來不斷提高產(chǎn)品水平。
而.NET Framework怎么樣呢?只要想應(yīng)用于業(yè)務(wù)系統(tǒng)中,其OS實(shí)際上則只能限于Windows。盡管微軟已經(jīng)提供了FreeBSD版.NET Framework,但其目的僅限于學(xué)術(shù)研究。
今后人們所能期待的是Mono Project。Mono Project是指完全獨(dú)立于微軟、正在開發(fā)開放源碼版.NET Framework的計劃。主導(dǎo)該計劃的是一家名為Ximian的Linux企業(yè),這家公司成功地開發(fā)了Linux標(biāo)準(zhǔn)桌面環(huán)境GNOME,目前已受到業(yè)界的廣泛關(guān)注。
2003年1月該計劃還發(fā)布了運(yùn)行Web應(yīng)用程序ASP.NET的Web服務(wù)軟件XSP。盡管很多功能仍在開發(fā)之中,但目前開發(fā)工作進(jìn)展順利。目前正面向Linux和Windows進(jìn)行開發(fā)。據(jù)Mono Project稱,由于該軟件依賴于Linux的部分不多,因此能夠輕松地向其他UNIX OS移植。
能否形成像Mono一樣的開放環(huán)境將是.NET普及的關(guān)鍵所在。微軟目前已經(jīng)向業(yè)界標(biāo)準(zhǔn)化機(jī)構(gòu)ECMA(歐洲計算機(jī)制造商協(xié)會)提交了.NET標(biāo)準(zhǔn),此舉表明微軟將采用開放標(biāo)準(zhǔn)。但目前尚不清楚此舉只是單純的一種姿態(tài),還是真的要開放.NET。這就要看微軟今后是否能夠繼續(xù)公開足夠的相關(guān)標(biāo)準(zhǔn)和信息了。
ASP.NET和PHP性能對比
經(jīng)過一些篩選,只選擇一些代表性的看法進(jìn)行翻譯, 對于英文不是太好的朋友比較有用, 如果有翻譯和知識點(diǎn)上的錯誤,請指出。
首先, 排除偏激和未經(jīng)測試的看法, 讓我們來看看interscape和ttuttle怎么說
interscape(MVP) :
PHP是一個腳本語言, 而ASP.NET是一個面向?qū)ο螅?編譯性的語言。你不能讓PHP在一個WINDOWS程序中運(yùn)行, 但是你可以拷貝ASP.NET的代碼并把它放到WINFORM程序里面, 而不用太大的修改。 但是如果你要談及所有情況下的性能, 也許PHP會好一些, 不過我會為WEB開發(fā)選擇OOP(面向?qū)ο缶幊蹋┒皇莝tep-thru(順序編程)腳本編程方式。
ttuttle:
我不想去做任何專橫武斷(outrageous)的聲明, 但是讓我們來看一下一些事實(shí):
PHP已經(jīng)被證明比ASP3.0稍微快一些
ASP.NET比ASP3.0快3~5倍(一種類似于PHP的解析性腳本語言)(注:ttuttle這句出自于http://www.asp.net/whitepaper/whyaspnet.aspx)
ASP.NET可以存放在緩存(Output Caching)中, 當(dāng)頁面第一次被訪問和編譯后, 它可以從緩存中得到。 沒有任何頁面處理器會比緩存更快。
在默認(rèn)安裝下,ASP.NET是編譯性語言, 而PHP和ASP3.0則是解釋性語言。
面對這兩種孑然不同的解釋, 我再來看看ScottGu和 wysiwyg 還有 Xanderno怎么說
ScottGu(http://www.asp.net s的版主):
ASP.NET是編譯性質(zhì)而不是解釋性質(zhì)的。 所以語句可以被轉(zhuǎn)換為更快的執(zhí)行時間。
而PHP方面也有ZEND在出售其收費(fèi)的編譯器ADD-ON.
然而, 我們已經(jīng)看到Nile benchmark(注:一種測試的性能基準(zhǔn),可以參看其白皮書http://www.gotdotnet.com/team/compare/Nile %20Benchmark%20Results.doc)中, ASP.NET和SQL這種組合的速度比PHP和MYSQL快 2~3倍, 且近乎5倍快于PHP和ORACLE的運(yùn)行效率(即便ZEND編譯器和緩存器已經(jīng)安裝)
wysiwyg:
雖然這個主題是ASP.NET VS PHP, 但是我來說一下我測試的事實(shí)卻是 ASP要稍快于
ASP.NET在ASP中, 這段代碼用了2秒
...................
.....store order info in myRS.....
.....store customer info in myTable.....
....................
Do while not myRS.eof
myTable.open "select customername from tblCustomer where customerID=" &
myRS.fields("CustomerID", myConnection
myArray(0,ubound(myArray,2))=myRS.fields("Ordernumber"
myArray(1,Ubound(myArray,2))=myRS.fields("OrderDate"
myArray(2,Ubound(myArray,2))=myTable.fields("CustomerName"
myTable.close
myRS.movenext
loop
而ASP.NET用了40秒
trace.warn("open conn: " & now)
...................
.....store order info in datatable myDataTable.....
.....store customer info in datatable myCustomer.....
....................
myDataView=new DataView(myCustomer)
for each myRow in myDataTable.rows
myDataview.rowFilter="CustomerID=" & myRow("CustomerID"
myRow("CustomerName"=myDataview(0).row("Customername"
next
trace.warn("finish looping: " & now)
我很希望自己的結(jié)果是ASP.NET快于ASP, 但是確相反, 誰能告訴我為什么??
?。ㄗⅲ?wysiwyg認(rèn)為他自己做是測試,但是沒有說明計算機(jī)和操作系統(tǒng)和測試環(huán)境的詳細(xì)情況,也沒說明是否屬于哪一級別的壓力測試)
Xanderno:
在我的不完善的測試中, 采用ACT 作為一種方法。 在一臺配置低機(jī)器上面, 用ASP通過
一個SQL SERVER上的數(shù)據(jù)庫獲取數(shù)據(jù), 每秒種我可以獲得10~15頁數(shù)據(jù) 。 同樣的函數(shù), 用ASP.NET, 每秒種我卻可以獲得30~40頁數(shù)據(jù), 使用輸出緩存(output caching)后,
它上升為120頁/秒。
微軟提供一系列壓力測試工具。 VS.NET企業(yè)版便有ACT, 如果你沒有VS企業(yè)版, WACT也是一種可行的方法.WAST website --http://webtool.rte.microsoft.com/
============================
從以上三人的看法, 也許大家已經(jīng)得出較為正確的答案。 然而這些并不是第一次在ASP.NET和PHP運(yùn)行效率的討論。其他討論, 還可以參看Debate - .NET V. PHP: Top 6 Reasons to Use NET(http://www.sitepoint.com/article/871)
還有Top 10 .NET Myths Exposed(http://www.webmasterbase.com/article/870)。
當(dāng)然你有時間, 還可以看看由Owendo Technology做的Web Application Server Panorama(Web應(yīng)用程序服務(wù)器全景)報告。這是一篇長達(dá)279頁的報告。(http://e-serv.ebizq.net/shared/goldclub.jsp?owendo_1b.html )。
此外,還有人問了這樣一個問題"VB.NET和C#哪個更快?"
Daniel P. 這樣回答: 他們并沒有區(qū)別, VB.NET和C#都是轉(zhuǎn)換成 IL-Code(中間語言代碼)---用來編譯主程序的。
?。ㄗⅲ?這種說法不一定正確, 兩者的編譯器是不一樣的, 而且這個結(jié)論也沒有經(jīng)過嚴(yán)格的壓力測試)
最后, 也許大家總是覺得程序員之間這種討論看起來很funny, 很多人總是帶有主觀性進(jìn)行討論, 連一些編程大師級的老外也像小孩子一樣在爭論。 但是沒有自己所愛的語言, 沒有這種狂熱又怎會有技術(shù)的進(jìn)步。
文章轉(zhuǎn)摘自:http://www.cnblogs.com/syblogs/articles/2206547.html
?
贊
7
有一點(diǎn)幫助
0
沒有幫助
參與評論