PHP和ASPNET都可以構建復雜的Web應用程序(例如電子商務站點Intranet和企業門戶)但兩者之間卻存在若干重要差別與PHP不同ASPNET並不是一種語言或分析器而是Microsoft NET Framework中的一組用於構建Web應用程序和XML Web Service的技術同PHP一樣Microsoft ASPNET頁面在服務器上執行並生成標記(例如HTMLWML或XML)標記將發送給桌面應用程序或移動應用程序但不同的是ASPNET為開發Web頁面提供了強大的面向對象的以及由事件驅動的編程模型同時仍保留了PHP開發人員所習慣的那種簡單性
PHP與ASPNET比ASPNET應用程序是基於強大的面向對象編程(OOP)模式而不是基於腳本模式這樣便可以獲得更為嚴謹的OOP功能例如繼承封裝和反射雖然大多數基本的簡單操作可以輕松地從PHP轉換到ASPNET但要轉換更為復雜的應用程序卻並不這麼簡單這需要仔細的規劃和考慮並采用更符合OOP的方法
本文假設讀者具有PHP方面的經驗並且對編程和軟件開發有著基本了解本文首先從代碼方面對兩者的基礎體系結構的差別進行簡單比較並簡要介紹一下OOP開發模型然後比較兩者的功能最後將使用PHP和ASPNET開發Web應用程序時的語法和常見任務作以對比
注意如果您希望跳過有關遷移的詳細信息而只想嘗試ASPNET的使用則可以直接跳到建議的後續操作部分
PHP ASPNET體系結構對比
閱讀完本文後通過比較語法和語言您將了解PHP和ASPNET是很相似的它們具有類似的功能和語法但是從更基本的體系結構層面來講PHP與ASPNET卻有著很大差別PHP基於獨立於平台的處理器/引擎該處理器/引擎用於分析PHP腳本提供數據庫連接符合Internet協議以及提供大多數Web應用程序平台所常見的眾多其他任務
ASPNET是基於一系列技術(如CLR)構建的框架提供了大量以很好的方式組織的類庫這些類庫可滿足要在Web應用程序中使用的大多數功能的需要您還可以輕松地創建各種組件對該框架進行擴展
雖然PHP也提供了類似的功能(例如PEAR庫)但PHP和ASPNET並非完全相同因為ASPNET框架是完全基於OOP模式和OOP概念構建的而PHP則不然這種差別在PHP和ASPNET中類和對象的訪問方式方面表現得猶為明顯
PHP ASPNET中的面向對象編程
雖然PHP和ASPNET都為應用程序開發提供了OOP模式但它們對各種OOP概念(例如封裝和多態)的支持卻存在差別例如PHP僅支持部分封裝(例如支持在類中聲明方法和字段)和部分多態(沒有重載和抽象)此外由於PHP的類中不存在私有(private)公有(public)或受保護(protected )函數等概念以及重載因此PHP也不支持這些概念及其訪問OOP純粹主義者可能會說ASPNET以及各種語言也沒有完全支持OOP模式中的所有概念對於使用OOP的大多數語言(如C++和Java)來說情況確實如此
這既有積極的一面也有消極的一面消極的一面是對於某些Web開發人員來說學習ASPNET要比學習PHP困難些因為PHP提供的是開發人員創建Web站點時所慣用的腳本模式但是使用過OOP語言和/或V的開發人員會發現ASPNET比較親切且易於學習
ASPNET支持OOP概念的積極的一面是ASPNET應用程序的大多數部分都會得到很好的設計並且能夠對內容邏輯和數據進行清楚的分隔因而從應用程序生命周期的長遠角度看這通常更容易為其提供支持此外由於ASPNET本身支持企業技術例如消息隊列事務(請參閱NET Framework的SystemEnterpriseServices類)SNMP和Web服務因而可以很容易地開發具有高度可縮放性的強大的應用程序
要大致了解面向對象編程(從Visual Basic的角度)的主要概念請參閱ObjectOriented Programming in Visual Basic
PHP ASPNET編譯
PHP
請求PHP頁面時HTML和內聯PHP腳本將編譯為Zend Opcode(Zend操作代碼)Opcode是低級的二進制指令是提供PHP頁面時實際使用的代碼編譯後Zend引擎將運行Opcode(與Java的運行時引擎運行字節碼類似)然後生成HTML並提供給客戶端
有許多商業產品可用來通過優化這些Opcode來加快PHP頁面的執行速度其他提高PHP腳本性能的方法還包括對Opcode和生成的HTML進行緩存
ASPNET
當向IIS(Internet信息服務)或其他Web服務器請求aspx頁面(或ASPNET支持的任何其他擴展名)時該請求將被傳遞到ASPNET進行處理如果是第一次請求該頁面ASPNET會將其編譯為MSIL(Microsoft中間語言)然後CLR(公共語言運行庫)會將此MSIL代碼轉換為機器碼最後使用這個編譯後的代碼運行該請求後續的請求將使用相同的機器碼運行(假設該頁面未被修改)
需要注意的是因為由CLR生成的二進制代碼已經最大限度地進行了優化所以不必再使用其他產品來幫助提高性能
此外還要注意ASPNET中的所有內容在運行前都被編譯為機器碼甚至HTML文本也被轉換為字符串常值控件並按照適當的順序插入到控件樹中
PHP ASPNET功能對比
.NET編程免費提供,內容來源於互聯網,本文歸原作者所有。