PHP與ASP.NET的比較
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
PHP和ASP.NET都可以構(gòu)建復(fù)雜的Web應(yīng)用程序(例如電子商務(wù)站點、Intranet和企業(yè)門戶),但兩者之間卻存在若干重要差別。與PHP不同,ASP.NET并不是一種語言或分析器,而是Microsoft .NET Framework中的一組用于構(gòu)建Web應(yīng)用程序和XML Web Service的技術(shù)。同PHP一樣,Microsoft ASP.NET頁面在服務(wù)器上執(zhí)行并生成標(biāo)記(例如HTML、WML或XML),標(biāo)記將發(fā)送給桌面應(yīng)用程序或移動應(yīng)用程序。但不同的是,ASP.NET為開發(fā)Web頁面提供了強(qiáng)大的、面向?qū)ο蟮囊约坝墒录?qū)動的編程模型,同時仍保留了PHP開發(fā)人員所習(xí)慣的那種簡單性。
PHP與ASP.NET比,ASP.NET應(yīng)用程序是基于強(qiáng)大的面向?qū)ο缶幊?OOP)模式,而不是基于腳本模式。這樣便可以獲得更為嚴(yán)謹(jǐn)?shù)腛OP功能,例如繼承、封裝和反射。雖然大多數(shù)基本的簡單操作可以輕松地從PHP轉(zhuǎn)換到ASP.NET,但要轉(zhuǎn)換更為復(fù)雜的應(yīng)用程序卻并不這么簡單,這需要仔細(xì)的規(guī)劃和考慮,并采用更符合OOP的方法。 本文假設(shè)讀者具有PHP方面的經(jīng)驗,并且對編程和軟件開發(fā)有著基本了解。本文首先從代碼方面對兩者的基礎(chǔ)體系結(jié)構(gòu)的差別進(jìn)行簡單比較,并簡要介紹一下OOP開發(fā)模型,然后比較兩者的功能,最后將使用PHP和ASP.NET開發(fā)Web應(yīng)用程序時的語法和常見任務(wù)作以對比。 注意:如果您希望跳過有關(guān)遷移的詳細(xì)信息,而只想嘗試ASP.NET的使用,則可以直接跳到建議的后續(xù)操作部分。 PHP ASP.NET體系結(jié)構(gòu)對比 閱讀完本文后,通過比較語法和語言,您將了解PHP和ASP.NET是很相似的,它們具有類似的功能和語法。但是,從更基本的體系結(jié)構(gòu)層面來講,PHP與ASP.NET卻有著很大差別。PHP基于獨立于平臺的處理器/引擎,該處理器/引擎用于分析PHP腳本、提供數(shù)據(jù)庫連接、符合Internet協(xié)議以及提供大多數(shù)Web應(yīng)用程序平臺所常見的眾多其他任務(wù)。 ASP.NET是基于一系列技術(shù)(如CLR)構(gòu)建的框架,提供了大量以很好的方式組織的類庫,這些類庫可滿足要在Web應(yīng)用程序中使用的大多數(shù)功能的需要。您還可以輕松地創(chuàng)建各種組件,對該框架進(jìn)行擴(kuò)展。 雖然PHP也提供了類似的功能(例如PEAR庫),但PHP和ASP.NET并非完全相同,因為ASP.NET框架是完全基于OOP模式和OOP概念構(gòu)建的,而PHP則不然。這種差別在PHP和ASP.NET中類和對象的訪問方式方面表現(xiàn)得猶為明顯。 PHP ASP.NET中的面向?qū)ο缶幊?/P> 雖然PHP和ASP.NET都為應(yīng)用程序開發(fā)提供了OOP模式,但它們對各種OOP概念(例如封裝和多態(tài))的支持卻存在差別。例如,PHP僅支持部分封裝(例如,支持在類中聲明方法和字段)和部分多態(tài)(沒有重載和抽象)。此外,由于PHP的類中不存在私有(private)、公有(public)或受保護(hù)(protected )函數(shù)等概念以及重載,因此PHP也不支持這些概念及其訪問。OOP純粹主義者可能會說,ASP.NET以及各種語言也沒有完全支持OOP模式中的所有概念,對于使用OOP的大多數(shù)語言(如C++和Java)來說,情況確實如此。 這既有積極的一面,也有消極的一面。消極的一面是:對于某些Web開發(fā)人員來說,學(xué)習(xí)ASP.NET要比學(xué)習(xí)PHP困難些,因為PHP提供的是開發(fā)人員創(chuàng)建Web站點時所慣用的腳本模式。但是,使用過OOP語言和/或V的開發(fā)人員會發(fā)現(xiàn)ASP.NET比較親切且易于學(xué)習(xí)。 ASP.NET支持OOP概念的積極的一面是,ASP.NET應(yīng)用程序的大多數(shù)部分都會得到很好的設(shè)計,并且能夠?qū)?nèi)容、邏輯和數(shù)據(jù)進(jìn)行清楚的分隔,因而從應(yīng)用程序生命周期的長遠(yuǎn)角度看,這通常更容易為其提供支持。此外,由于ASP.NET本身支持企業(yè)技術(shù),例如消息隊列、事務(wù)(請參閱.NET Framework的System.EnterpriseServices類)SNMP和Web服務(wù),因而可以很容易地開發(fā)具有高度可縮放性的強(qiáng)大的應(yīng)用程序。 要大致了解面向?qū)ο缶幊蹋◤腣isual Basic的角度)的主要概念,請參閱Object-Oriented Programming in Visual Basic。 PHP ASP.NET編譯 PHP 請求PHP頁面時,HTML和內(nèi)聯(lián)PHP腳本將編譯為Zend Opcode(Zend操作代碼)。Opcode是低級的二進(jìn)制指令,是提供PHP頁面時實際使用的代碼。編譯后,Zend引擎將運行Opcode(與Java的運行時引擎運行字節(jié)碼類似),然后生成HTML并提供給客戶端。 有許多商業(yè)產(chǎn)品可用來通過優(yōu)化這些Opcode來加快PHP頁面的執(zhí)行速度。其他提高PHP腳本性能的方法還包括對Opcode和生成的HTML進(jìn)行緩存。 ASP.NET 當(dāng)向IIS(Internet信息服務(wù))或其他Web服務(wù)器請求.aspx頁面(或ASP.NET支持的任何其他擴(kuò)展名)時,該請求將被傳遞到ASP.NET進(jìn)行處理。如果是第一次請求該頁面,ASP.NET會將其編譯為MSIL(Microsoft中間語言)。然后,CLR(公共語言運行庫)會將此MSIL代碼轉(zhuǎn)換為機(jī)器碼。最后使用這個編譯后的代碼運行該請求。后續(xù)的請求將使用相同的機(jī)器碼運行(假設(shè)該頁面未被修改)。 需要注意的是,因為由CLR生成的二進(jìn)制代碼已經(jīng)最大限度地進(jìn)行了優(yōu)化,所以不必再使用其他產(chǎn)品來幫助提高性能。 此外還要注意,ASP.NET中的所有內(nèi)容在運行前都被編譯為機(jī)器碼。甚至HTML文本也被轉(zhuǎn)換為字符串常值控件,并按照適當(dāng)?shù)捻樞虿迦氲娇丶渲小?/P> PHP ASP.NET功能對比
PHP ASP.NET之間的較量就向你介紹到這里,關(guān)于PHP ASP.NET之間的比較,可以在使用過程中對他們再次認(rèn)識。 該文章在 2015/2/1 0:17:27 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |