盤點(diǎn) PHP 和 ASP.NET 的10大對(duì)比环疼!

【編者按】本文主要針對(duì)開源 PHP 和非開源的 ASP.NET 在性能、成本呜投、可擴(kuò)展性加匈,技術(shù)支持和復(fù)雜性等方面進(jìn)行比較。

在網(wǎng)上論壇仑荐,總是有成百上千的文章和帖子在討論 PHP 和 ASP.NET雕拼,究竟誰(shuí)才是更好的平臺(tái)?不過很可惜粘招,大部分人的觀點(diǎn)總是帶有偏見的啥寇,人們總會(huì)有意無意地推廣自己喜歡的語(yǔ)言。

此外洒扎,如果你注意過這些爭(zhēng)論帖和文章的日期辑甜,就會(huì)發(fā)現(xiàn)大部分的信息都是過時(shí)的。太可惜了袍冷,這些搜索排名考前的文章提供的信息卻不再有效磷醋。我們還要考慮到,PHP 和 ASP.NET 都是有周期性的版本升級(jí)和優(yōu)化的胡诗。

筆者保證邓线,這兩種編程語(yǔ)言都可以在非常龐大的 Web 應(yīng)用和網(wǎng)站上成功使用,因此乃戈,它們處理大型網(wǎng)絡(luò)應(yīng)用程序的能力是毋庸置疑的褂痰。

內(nèi)容提要:

關(guān)于性能:筆者會(huì)闡述影響性能的種種因素,其結(jié)果會(huì)證明因?yàn)樗俣榷x擇一種編程語(yǔ)言在大多數(shù)情況下是毫無意義的症虑。

關(guān)于可拓展性:筆者會(huì)闡述影響可拓展性的因素缩歪,但實(shí)際上,只要編程方法正確谍憔,兩種語(yǔ)言的可拓展性能都十分強(qiáng)大匪蝙。

關(guān)于成本和技術(shù)支持:由于 PHP 是開源的主籍,通常運(yùn)行在 LAMP(即 Linux,Apache逛球,MYSQL 和 PHP)這些開源平臺(tái)上千元。因此,在提供最具成本效益的解決方案和提供大量的資源及支持方面颤绕,PHP 是優(yōu)于 ASP.NET 的幸海。

關(guān)于平均部署時(shí)間(即附加成本):使用 ASP.NET 進(jìn)行編碼需要的代碼量是使用 PHP 的兩倍,因此使用 PHP 部署時(shí)間成本更低奥务,速度更快物独。

筆者會(huì)在下面仔細(xì)說明每個(gè)方面,并且附上見解氯葬。

1.可拓展性和易維護(hù)性

無論你選擇 PHP 還是 ASP.NET 平臺(tái)挡篓,對(duì)可拓展性和易維護(hù)性都不會(huì)有任何影響。Web 應(yīng)用程序的可拓展性以及易維護(hù)性主要取決于以下幾個(gè)方面:

  • 編程者的經(jīng)驗(yàn)
  • 使用最佳的編碼實(shí)踐
  • 使用可靠的編程框架
  • 遵循程序設(shè)計(jì)指南和標(biāo)準(zhǔn)

2.性能和速度

關(guān)于這點(diǎn)帚称,一直以來都存在許多爭(zhēng)論官研,且大部分爭(zhēng)論都是不客觀且片面的。這些爭(zhēng)論并沒有給大家提供真正有效的信息闯睹,只是極力吹捧一種語(yǔ)言而貶低另一種戏羽。

當(dāng)涉及到測(cè)量 Web 應(yīng)用的速度時(shí),值得考慮的因素非常多楼吃。以致于編程語(yǔ)言的運(yùn)行速度蛛壳,對(duì)當(dāng)下大部分網(wǎng)站的速度和性能影響,其實(shí)是微乎其微的所刀。

然而衙荐,如果要用這種語(yǔ)言完成雅虎或者谷歌這類網(wǎng)站每天都在執(zhí)行的龐大任務(wù),那么選擇一種可以快速執(zhí)行大型任務(wù)的編程語(yǔ)言就十分必要了浮创,這也是谷歌和雅虎選擇多種編程語(yǔ)言(大部分都是開源的)的原因忧吟,每種語(yǔ)言都用來執(zhí)行最適合它的任務(wù)。

下面斩披,筆者會(huì)分析各種常見和不常見的場(chǎng)景并且解釋哪種任務(wù)更優(yōu)溜族。

第一種常見情況

Web 應(yīng)用的一種常見的任務(wù)是對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問和查詢,再把結(jié)果輸出到 Web 服務(wù)器垦沉,繼而瀏覽器煌抒。因此,在這個(gè)常見場(chǎng)景中厕倍,所有的編程語(yǔ)言都要擔(dān)當(dāng)數(shù)據(jù)庫(kù)服務(wù)器和 Web 服務(wù)器之間的通信或者是接口的角色寡壮。在此場(chǎng)景中,編程語(yǔ)言的速度對(duì)整個(gè)進(jìn)程幾乎沒有影響;該進(jìn)程的速度主要取決于數(shù)據(jù)庫(kù)服務(wù)器况既、Web 服務(wù)器这溅,客戶端的 Web 瀏覽器和帶寬。

若是考慮常用的主流數(shù)據(jù)庫(kù)服務(wù)器棒仍,MySQL(現(xiàn)在屬于Oracle)悲靴,PostgreSQL,MSSQL 和 Oracle 都在努力提升速度和性能莫其。我們看到癞尚,每個(gè)版本的數(shù)據(jù)庫(kù)服務(wù)器升級(jí)都會(huì)帶來新功能和更好的性能,所以筆者認(rèn)為只要數(shù)據(jù)庫(kù)程序員使用優(yōu)化的實(shí)用的 SQL 查詢乱陡,并且必要情況下采用如緩存一類的先進(jìn)功能否纬,上述任一款數(shù)據(jù)庫(kù)服務(wù)器都會(huì)有十分優(yōu)越的表現(xiàn)。

谷歌蛋褥,F(xiàn)acebook,YouTube睛驳,雅虎和最近因世界杯獲得龐大觀眾數(shù)量的 FIFA 都在使用 MYSQL烙心。因此,MySQL 數(shù)據(jù)庫(kù)服務(wù)器的能力是毋庸置疑的乏沸。

基于線上的統(tǒng)計(jì)調(diào)查淫茵,截止至發(fā)稿時(shí),PHP 與 MySQL 之間的通信和接口速度要快于 ASP.NET 和 MSSQL蹬跃,但并不明顯匙瘪。

第二種常見情況

Web 程序的另一種常見任務(wù)是訪問文件系統(tǒng),找到一個(gè)圖像再將其發(fā)送到 Web 服務(wù)器蝶缀。在這種情況下丹喻,編程語(yǔ)言的任務(wù)依然很少,與編程語(yǔ)言交流的負(fù)擔(dān)主要落在操作系統(tǒng)與文件系統(tǒng)身上翁都。

基于線上的統(tǒng)計(jì)調(diào)查碍论,截止至發(fā)稿時(shí),Linux 操作系統(tǒng)和 EXT4(文件系統(tǒng))的性能優(yōu)于 Windows 操作系統(tǒng)和 NTFS(文件系統(tǒng))柄慰。

第三種常見情況

大多數(shù)的 Linux / Unix 服務(wù)器的運(yùn)行都很簡(jiǎn)約鳍悠,沒有任何額外的非必需的包或 GUI 界面,因此這些操作系統(tǒng)只需使用很少量的 CPU 和 RAM坐搔,從而將更多的資源留給數(shù)據(jù)庫(kù)和 Web 服務(wù)器藏研。

大多數(shù) Windows 服務(wù)器運(yùn)行十分笨重,有許多冗余的包會(huì)占用大量的 CPU 和 RAM概行。

很顯然蠢挡,LAMP 平臺(tái)要比 ASP.NET 平臺(tái)更有優(yōu)勢(shì),因?yàn)樗懈嗟目捎觅Y源。

第四種 不太常見的情況

ASP.NET 通常使用 C# 編寫袒哥。一般而言缩筛,截止到目前為止,C# 是比 PHP 更快的編程語(yǔ)言堡称。(但這種情況也可能改變瞎抛,因?yàn)榫幊陶Z(yǔ)言會(huì)為了提高速度而不斷升級(jí)更新)因此,假設(shè)為了完成某次計(jì)算需要執(zhí)行2,000,000次循環(huán)却紧,那么用 C# 編寫的 ASP.NET 程序?qū)⒈?PHP 程序運(yùn)行更快桐臊。然而,這是一種非常罕見的情況晓殊,一次計(jì)算循環(huán)次數(shù)最多為幾百次断凶,而不是2,000,000次。而且巫俺,在這種情況下认烁,就應(yīng)該考慮為什么要做一個(gè)2,000,000次的循環(huán)計(jì)算。

其他與編程語(yǔ)言無關(guān)介汹,但會(huì)對(duì)性能產(chǎn)生影響的因素還包括:

  • 程序員在編寫代碼時(shí)的知識(shí)儲(chǔ)備和能力
  • 程序員在編寫 SQL 查詢語(yǔ)句時(shí)的知識(shí)儲(chǔ)備和能力
  • 所需實(shí)現(xiàn)的功能(有些功能在 ASP.NET 平臺(tái)所需的執(zhí)行時(shí)間長(zhǎng)于在 PHP 平臺(tái)所需的時(shí)間却嗡,有些則恰巧相反)

說到性能,在此不得不談及一些專業(yè)的應(yīng)用性能監(jiān)控工具嘹承〈凹郏可以有效的針對(duì)代碼、SQL語(yǔ)句等進(jìn)行優(yōu)化叹卷,降低代碼編寫方面對(duì)性能和速度的影響撼港。

appDynamics

NewRelic

OneAPM

盤點(diǎn) PHP 和 ASP.NET 的10大對(duì)比!

圖為OneAPM上監(jiān)控到的 .NET 應(yīng)用程序響應(yīng)時(shí)間和吞吐量數(shù)據(jù)

3.成本

PHP骤竹,MySQL 服務(wù)器帝牡,PostgreSQL 服務(wù)器,Apache 服務(wù)器和 Linux 操作系統(tǒng)的使用和升級(jí)都是免費(fèi)的蒙揣。此外否灾,另設(shè)一臺(tái)備援主機(jī),或者需要運(yùn)行多個(gè)服務(wù)器以均衡負(fù)載或搭建服務(wù)器集群鸣奔,也都沒有額外的許可費(fèi)用墨技。

LAMP (Linux, Apache, MySQL 和 PHP)在托管公司中也更受歡迎。與 Windows 主機(jī)相比挎狸,LAMP 主機(jī)的普及性使得每月的托管費(fèi)用更低扣汪。

如果你購(gòu)買了 Windows 操作系統(tǒng),那么 ASP.NET 和 IIS 就是免費(fèi)的锨匆。微軟的 Windows 服務(wù)器崭别,SQL 服務(wù)器以及未來的更新價(jià)格昂貴冬筒。例如 Microsoft Server 2008 R2 64位標(biāo)準(zhǔn)版價(jià)格在1029美元左右,而針對(duì)小型企業(yè)的 Microsoft SQL Server 2008價(jià)格在1038美元上下茅主。

如果這個(gè)網(wǎng)站變得受歡迎舞痰,有必要另設(shè)一臺(tái)備援主機(jī),或者需要運(yùn)行多個(gè)服務(wù)器以負(fù)載均衡诀姚,搭建服務(wù)器集群响牛,那么上述費(fèi)用將會(huì)大幅度提高。

4.支持和資源

由于 LAMP 是開源的赫段,世界各地專業(yè)且友好的開發(fā)者們一直在對(duì)這一開源平臺(tái)的更新和改進(jìn)提供源源不斷的支持呀打。除此之外,PHP 和 LAMP 平臺(tái)還有很多其他的資源支持和開發(fā)者支持糯笙。

我之所以提及“友好”這個(gè)詞贬丛,是因?yàn)橄蜷_源社區(qū)做出貢獻(xiàn)的開發(fā)者們并不是為了得到經(jīng)濟(jì)利益。如果你在編碼過程中遇到了功能挑戰(zhàn)需要尋求幫助给涕,去 PHP 的論壇上提問豺憔,你一定會(huì)收到友好的程序員們給出的有用信息。

ASP.NET 更依賴于微軟數(shù)量有限的開發(fā)者做出的改進(jìn)和更新够庙。能幫助解決 ASP.NET 的貢獻(xiàn)者相對(duì)較少恭应。

5.部署時(shí)間

與 PHP 相比,ASP.NET 需要大量或者說更多行的代碼去完成復(fù)雜的特性和功能首启,在開發(fā)過程中花費(fèi)更多的時(shí)間。

此外撤摸,PHP 是在服務(wù)器端被編譯的毅桃,因此,當(dāng)改變功能時(shí)准夷,無需額外步驟就能看到改變钥飞。相反的是,ASP.NET 的代碼每次修改都需要進(jìn)行編譯衫嵌。也就是說读宙,開發(fā)過程中 ASP.NET 要比 PHP 消耗更多的時(shí)間。

6.編譯器和工具

PHP 和 MySQL 都有獨(dú)立編譯器的楔绞,PHP 的開發(fā)者可以獲得數(shù)量更豐富的編譯器结闸。

大多數(shù) ASP.NET 程序員都依賴于 Microsoft Visual Studio 編譯器開發(fā) .NET程序。(許多 ASP.NET 程序員對(duì) Microsoft Visual Studio 是又愛又恨)

這是完全不同的編程風(fēng)格——使用 PHP 的程序員及開源開發(fā)者們更喜愛文本編輯器酒朵,例如 VI桦锄,VIM,Notepad ++蔫耽。

VI 和 VIM 是非常高級(jí)的獨(dú)立編輯器结耀。開發(fā)者完全掌握這些編輯器的性能后,可以快速、高效且獨(dú)立地進(jìn)行復(fù)雜的編程图甜。因此碍粥,他們能更加靈活地控制代碼。當(dāng)涉及到使用或與 JavaScript黑毅,Ajax嚼摩,JQuery 等平臺(tái)集成時(shí),由于熟悉開源環(huán)境且使用 VI 或 VIM 手打代碼博肋,PHP 開發(fā)者往往更有優(yōu)勢(shì)低斋。

7.平臺(tái)獨(dú)立性

PHP 具有平臺(tái)獨(dú)立性,可以在 Linux匪凡,Unix膊畴,Mac OS X,Windows 中的任何平臺(tái)運(yùn)行病游。ASP.NET 則只能在 Windows 平臺(tái)上運(yùn)行唇跨。

8.熱門網(wǎng)站都運(yùn)行在什么平臺(tái)上?

下面的表格列出了當(dāng)下流行站點(diǎn)所使用的平臺(tái)和語(yǔ)言衬衬。
Note: Please don't confuse C with C# (pronounced C Sharp) — they are completely different programming languages. ASP.net is mostly programmed in C# (C Sharp) or Visual Basic and not C.
注:請(qǐng)勿混淆 C 與 C#买猖,他們是兩種完全不同的編程語(yǔ)言。ASP.NET 通常使用 C# 或者 Visual Basic 進(jìn)行編程滋尉,而非 C 語(yǔ)言玉控。

9.流行程度

LAMP 平臺(tái)要比 Windows 平臺(tái)更加流行∈ㄏВ基于 Netcraft 2010年7月針對(duì)205高诺,714,253個(gè) Web 服務(wù)器進(jìn)行的數(shù)據(jù)調(diào)研顯示碾篡,有112虱而,945,968(54.90%)的 Web 服務(wù)器托管在 Apache 上开泽,有53牡拇,217,620(25.87%)的 Web 服務(wù)器托管在 Windows 上穆律,剩余的則托管在其他平臺(tái)上惠呼。

10.可用性和易部署性

關(guān)于 Linux 的不友善誤傳已久。

實(shí)際上峦耘,這取決于使用者的平臺(tái)搭建經(jīng)驗(yàn)和知識(shí)儲(chǔ)備程度罢杉。

但不得不說,時(shí)下流行的改進(jìn)后的 Linux 發(fā)行版給筆者留下了深刻的印象贡歧。諸如 Ubuntu滩租,小紅帽赋秀,CentOS,openSUSE 以及 Fedora 等發(fā)行版律想,不僅易于安裝部署猎莲,還提供簡(jiǎn)單直接的 GUI 界面,使得配置 Linux 服務(wù)器變得更加簡(jiǎn)單易行技即。

很可惜著洼,在筆者看來,微軟的服務(wù)器在可用性上日漸衰落而叼,服務(wù)器管理變得越發(fā)笨拙身笤,并且充斥著許多不必要的功能。

原文地址:http://www.comentum.com/php-vs-asp.net-comparison.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末葵陵,一起剝皮案震驚了整個(gè)濱河市液荸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌脱篙,老刑警劉巖娇钱,帶你破解...
    沈念sama閱讀 222,865評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異绊困,居然都是意外死亡文搂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門秤朗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來煤蹭,“玉大人,你說我怎么就攤上這事取视∠踉恚” “怎么了?”我有些...
    開封第一講書人閱讀 169,631評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵贫途,是天一觀的道長(zhǎng)吧彪。 經(jīng)常有香客問我待侵,道長(zhǎng)丢早,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,199評(píng)論 1 300
  • 正文 為了忘掉前任秧倾,我火速辦了婚禮怨酝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘那先。我一直安慰自己农猬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,196評(píng)論 6 398
  • 文/花漫 我一把揭開白布售淡。 她就那樣靜靜地躺著斤葱,像睡著了一般慷垮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上揍堕,一...
    開封第一講書人閱讀 52,793評(píng)論 1 314
  • 那天料身,我揣著相機(jī)與錄音,去河邊找鬼衩茸。 笑死芹血,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的楞慈。 我是一名探鬼主播幔烛,決...
    沈念sama閱讀 41,221評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼囊蓝!你這毒婦竟也來了饿悬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,174評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤慎颗,失蹤者是張志新(化名)和其女友劉穎乡恕,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俯萎,經(jīng)...
    沈念sama閱讀 46,699評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡傲宜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,770評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了夫啊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片函卒。...
    茶點(diǎn)故事閱讀 40,918評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖撇眯,靈堂內(nèi)的尸體忽然破棺而出报嵌,到底是詐尸還是另有隱情,我是刑警寧澤熊榛,帶...
    沈念sama閱讀 36,573評(píng)論 5 351
  • 正文 年R本政府宣布锚国,位于F島的核電站,受9級(jí)特大地震影響玄坦,放射性物質(zhì)發(fā)生泄漏血筑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,255評(píng)論 3 336
  • 文/蒙蒙 一煎楣、第九天 我趴在偏房一處隱蔽的房頂上張望豺总。 院中可真熱鬧,春花似錦择懂、人聲如沸喻喳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)表伦。三九已至谦去,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蹦哼,已是汗流浹背哪轿。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翔怎,地道東北人窃诉。 一個(gè)月前我還...
    沈念sama閱讀 49,364評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像赤套,于是被迫代替她去往敵國(guó)和親飘痛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,926評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Awesome DotNet容握,這又是一個(gè) Awesome XXX 系列的資源整理宣脉,由 quozd 發(fā)起和維護(hù)。內(nèi)容...
    小明yz閱讀 3,703評(píng)論 0 47
  • 開源軟件中有大量專家構(gòu)建的代碼感憾,大大節(jié)省了開發(fā)人員的時(shí)間和成本蜡励,熱衷于開源的大廠們總是能夠帶給我們新的驚喜。201...
    Cynthia成閱讀 2,571評(píng)論 0 15
  • 轉(zhuǎn)自陳明乾的博客阻桅,可能有一定更新凉倚。 轉(zhuǎn)原文聲明:原創(chuàng)作品,允許轉(zhuǎn)載嫂沉,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必以超鏈接形式標(biāo)明文章 原始出處 稽寒、...
    C86guli閱讀 4,700評(píng)論 6 72
  • 白月光,心里某個(gè)地方趟章,那么亮杏糙,卻那么冰涼。每個(gè)人尤揣,都有一段悲傷搔啊,想隱藏柬祠,卻欲蓋彌彰北戏。白月光,照天涯的兩端漫蛔,在心上...
    鈴鐺子90閱讀 388評(píng)論 0 1
  • 今天一天都在趕車嗜愈。一大早從武夷山坐動(dòng)車到福州汽車北站旧蛾,又要從福州汽車北站坐機(jī)場(chǎng)大巴趕到長(zhǎng)樂機(jī)場(chǎng)。 在坐車的過程中蠕嫁,...
    美生活閱讀 156評(píng)論 0 2