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