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