網(wǎng)絡(luò)學(xué)院
外貿(mào)網(wǎng)站程序用php還是asp的比較好?
什么是PHP
PHP代表了"超文本處理器",這意味著你必須知道,它是一種服務(wù)器端的處理語言,且以HTML的形式出現(xiàn)。它最常用的地方就是網(wǎng)頁了,數(shù)據(jù)從客戶機發(fā)送到Web服務(wù)器,信息在此被處理并返回結(jié)果。
但這種通用性的語言絲毫不局限于在網(wǎng)頁方面,PHP也能被用在命令行shell中,它可作為操作系統(tǒng)的一個擴展,由此執(zhí)行相應(yīng)的PHP文件。
在數(shù)據(jù)庫方面的應(yīng)用也是PHP的一個強項,MySQL、SQL、Microsoft Access、Oracle及InterBase只不過是采用了PHP語言的一部分?jǐn)?shù)據(jù)庫。
什么是ASP
ASP是Acitve Server Pages的縮寫,它也是一種服務(wù)器端的腳本語言,微軟公司為達(dá)到動態(tài)網(wǎng)頁的效果,把它集成進了服務(wù)提供者進程,就是眾所周知的COM(Component Object Models)。
盡管ASP也不只限于在IIS(Internet Information Services)服務(wù)器上運行,但只有在IIS上,才能發(fā)揮它的全部功能,最初支持它的操作系統(tǒng)為Windows 2000及NT4 Option Pack。同樣,ASP在除IIS之外的平臺上也能運行,PWS(Personal Web Server)就能在Windows NT、95、98上解釋ASP代碼,但是,功能會有所限制。
成本問題
可能很多人都想要爭論ASP與PHP的成本問題,但這真的不是一個主要的重點所在。大多數(shù)購買IIS的用戶是為了與微軟產(chǎn)品的更好集成,話說回來,IIS絕對對得起這多花出去的錢。
PHP與運行它的Apache Web Server都是免費的,它們是由Apache軟件基金會提供的--安全、免費,正因為此,PHP可以免費安裝,唯一的成本是購買運行它的服務(wù)器,及安裝的時間成本。
速度問題
這個問題也是服務(wù)器端腳本語言中,雙方爭論最激烈之處,自從這兩種語言來到這個世界,這個問題的爭論就沒有停止過。
一般來說,應(yīng)用程序在使用完內(nèi)存之后,應(yīng)把它"還給"操作系統(tǒng),只要內(nèi)存一直在被程序使用,操作系統(tǒng)通常也不會要求收回。PHP使用內(nèi)存的獨特方法,使之成為了它的一個優(yōu)點。PHP在得到一塊內(nèi)存之后,會暫時保留住它,當(dāng)內(nèi)存用完后,并沒有把它還給操作系統(tǒng),而保留用于接下來可能發(fā)生操作。這個可以在配置文件中進行修改。
因為基于COM的架構(gòu),所以ASP稍微慢一點,原因是它調(diào)用了對象模型,而系統(tǒng)又必須加載這些模型,這有點兒像那些使用了控件的編程語言。在內(nèi)存消耗方面,也與標(biāo)準(zhǔn)應(yīng)用程序相差無幾。
實際上,速度區(qū)別最大的地方是IIS或Apache Web Server運行于的計算機,如果計算機不同,那么,在配置更好的計算機上的語言將運行得更快一些。
兼容性思考
說到兼容性問題,那就太多了,因為世界上沒有兩臺計算機的硬件與軟件是完全相同的,正因為此,人們都想知道,在他們已擁有的設(shè)備上,程序會怎樣運作。
從這個范疇來說,PHP可能已先勝出一步了,它贏在開放源代碼方面(Open Source),這意味著它背后可能有著不計其數(shù)的開發(fā)者、更好的資源、更大的文檔庫等等。由于這些因素,PHP開發(fā)的越多,程序員學(xué)到的也越多。
ASP一般認(rèn)為只能運行在IIS上,正如前面所提到的,這并不是十分正確,事實上,ASP也能運行在Apache上。Apache ASP可在任意Apache服務(wù)器上運行有限的ASP功能,所需做的,只需打開mod_perl。
要記住的是,PHP可運行在任意平臺上,Mac OS X、Windows、Linux及Solaris都是可運行它的操作系統(tǒng)。
安全性考慮
不管安全性有 多高,任何事物都存在被攻破的可能,唯一缺乏的只是時間與資源的問題。
Apache的安全選項使它比Windows Server操作系統(tǒng)更具安全性,IIS已有很多已知的安全漏洞,且一直在進行修補;相比而言,Apache的安全性可是有目共睹的。
編程易學(xué)性
ASP來源于微軟產(chǎn)品中最常見的語言--Visual Basic,所以,它非常簡單易學(xué);而PHP更多地以C++語言為基礎(chǔ),這可能也是它速度快的一部分原因吧。
ASP的一般性誤解
ASP與ASP.NET完全不是一種東西,ASP.NET是對ASP編程語言的一次徹底重寫,正因為此,它的大部分功能是不能向后兼容的,它適合于微軟更新的 .NET架構(gòu)。
結(jié)論:從個人的角度來看,PHP更快、更安全、更易于使用、兼容性更高,但也并不是說ASP一無是處。
PHP比ASP更優(yōu)秀:
1、速度、速度、速度
當(dāng)我第一次運行PHP腳本程序時,我不禁對自己說:“太快了”,當(dāng)時我是在儀態(tài)166MHZ的機器上運行我的程序的,但運行的速度仍然很快。
ASP是永遠(yuǎn)也不會象PHP這樣快的,因為ASP是建立在COM體系結(jié)構(gòu)之上的。當(dāng)用VBScript寫ASP腳本時,實際上實在使用COM的對象,當(dāng)向用戶瀏覽器發(fā)送信息時,它用的是Response對象的write方法,當(dāng)它訪問數(shù)據(jù)庫和文件系統(tǒng)的時候,它用的是其他的COM對象。這些COM對象的使用使運行速度下降。
在PHP代碼中,所有的工作都運行在PHP的內(nèi)存空間中,也就是說PHP不是基于COM對象的,所以的他的運行速度會快一些。
下面是我們在MSSQL740次運行一個查詢語句的執(zhí)行時間統(tǒng)計:
PHP Querying MSSQL7 時間(秒)
用 MSSQL extension 01.88
用 ODBC extension 09.54
用 ODBC via COM (ADO) 17.28
用OLEDB via COM 06.19
當(dāng)我們使用PHP.ODBC,訪問數(shù)據(jù)庫用了9.54秒,而用COM接口去連接數(shù)據(jù)庫需要比PHP所用的時間高80%。
OLEDB是微軟的一種高速訪問數(shù)據(jù)庫的技術(shù),他比ODBC要快。但當(dāng)我們所PHP和OLEDB的效率實驗時,結(jié)果是PHP的整體性能比OLEDB高200%,如此的出一個結(jié)論,如果不采用COM可以獲得較快的執(zhí)行速度。
當(dāng)然PHP的執(zhí)行速度還不是最快的,但我們才剛剛開始起步,我們會逐步的完善他,而且PHP是一種開放源代碼編程語言,世界上許多程序員在不斷的完善他的技術(shù),相信他一定會比非開放源代碼系統(tǒng)獲得更高的執(zhí)行速度的。
2、高級內(nèi)存管理
在IIS4下,一個ASP腳本header.asp,如果被20個頁面所包含,那么運行的時候,在內(nèi)存當(dāng)中會保留這20個header.asp的編譯副本,IIS5解決了這個問題,但只有windows2000才支持IIS5,由于這種IIS5的不能向下兼容的原因,許多服務(wù)器仍然要使用IIS4下的低級的內(nèi)存管理。
而在PHP中,不會存在這種問題,只有當(dāng)require時,才會調(diào)用某個include文件。
3、沒有后顧之憂
我非常憎恨的一件事情就是會買到一件不放心的產(chǎn)品,比如當(dāng)你買了一輛汽車,但由于發(fā)動機是壞的,你需要更換他;當(dāng)你買了一棟房子的時候,你要去修補漏雨的屋頂。
那么ASP舊鄉(xiāng)這些產(chǎn)品一樣,當(dāng)你買了ASP之后,如果你需要加密技術(shù),你就要買ASPEncrypt;當(dāng)你需要Email管理時,你就要買ServerObjets Qmail;當(dāng)你需要文件上傳時,你還要買Artisans SA-FileUp.
4、MySQL使PHP更精彩
PHP與MySQL的組合既簡單又精彩。PHP有許多管理和維護MySQL的工具,對MySQk的支持是最全面的。許多有用的函數(shù)如mysql_insert_id和mysql_affected_rows等,其他的數(shù)據(jù)庫則沒有。
ASP和PHP都是中型網(wǎng)站的較理想的解決方案,但PHP與MySQL的緊密結(jié)合使PHP更加優(yōu)越。
MySQL的虛度比Microsoft Access速度快,Mssql和Oracle速度比MySQL要快,可是費用較高。
5、Java和C++的變成風(fēng)格
這個優(yōu)點只是一個看法。
我知道你不會相信一個Visual Basic程序員會因為PHP有Java和C++的編程風(fēng)格而轉(zhuǎn)向使用PHP,但你會相信有許多人還是喜歡Java和C++的,PHP是一種具有這兩種語言的編程風(fēng)格的較容易學(xué)習(xí)的語言。
PHP支持結(jié)構(gòu)化編程,在VB因為他的繼承性使用類還是較少的。而PHP的象Java和C++一樣的繼承性使一個大型的程序中到處都充滿了類的影子。
6、Bug的處理。
你是否曾經(jīng)要求Microsoft修改ASP的一些Bug呢?如果你不是一個象Boeing一樣的組織,你無法獲得迅速而恰當(dāng)?shù)男薷模衙串?dāng)你遇到Bug而停止工作時,如果這個Bug不修改,你將無法繼續(xù)你的工作的。
PHP,當(dāng)你發(fā)現(xiàn)Bug時,你可以修改他,如果你沒有專家的水平,你可以請專家修改,并且你的修改會得到開放代碼組織的接受和認(rèn)可。
7、移植性
Microsoft經(jīng)常修改ASP,下一版本叫ASP+,現(xiàn)在已經(jīng)開始測試。我相信他們會修改許多我曾經(jīng)提到過的問題。但也無庸質(zhì)疑的,Microsoft會將你限制在他們的產(chǎn)品范圍之內(nèi)的。