白刃之戰:PHP vs. ASP.NET(節選)-架構比較

來源:互聯網
上載者:User

作者:Robert Lair and Jason Lefebvr Intensity Software, Inc.

翻譯:EasyChen Exlcsoft.com

概觀

開發界進行中的一個爭論是PHP和ASP中哪一個平台更適合網站開發。這場爭論由於微軟的ASP.net帶來的巨大變化而進入了新時期。和ASP 3.0比起來,ASP.NET採用了全新的設計,有著很多新的特性和優點。究竟ASP.NET 會給PHP和ASP之間的爭論帶來什麼樣的影響呢?本文將為你提供這個問題的答案的相關資訊。

架構比較

PHP

PHP4.0以Zend Technologies的開源引擎Zend Engine為核心。當使用者瀏覽器向一個由PHP實現的網路伺服器發出請求時,這個請求被傳給Zend Engine,它將對php指令碼進行編譯。如果編譯順利, 編譯後的代碼將被傳遞給產生發送給用戶端的最終HTML代碼的Zend Engine Executor。從開發人員角度看,PHP 4.0的架構既有優點也有缺點。

因為PHP是開源的,所以它得到了很多不同平台和web伺服器的支援。雖然比以前的PHP引擎大,Zend Engine仍然是輕便和強壯的。作為擴充,PHP也支援物件導向,允許使用者建立自己的類和對象。但是,由於某些原因,PHP不是真正的物件導向開發環境。最好的一個例子是類成員函數和屬性的範圍。在PHP中,一個類中的所有變數可以從外部讀寫,這使得類的實現無法隱藏。

另外,PHP不是強型別語言(就是說,如果你比較字元4和整數4,結果是相同的),這在架構大型程式時帶來問題,也使得程式的調試變得困難。使得調試更為困難的是,你甚至不需要聲明變數,這和關掉explicit 選項的ASP很像。如果PHP在指令碼中遇到新的變數,它只會靜靜的建立它。

雖然被認為是寬鬆的PHP架構的靈活性,不過大概每個開發人員在一些情況下都會花數小時去解決由這個特性導致的BUG。對象在PHP中是語言級變數。它們在很大程度上被當作簡單變數類型處理。(就像整型和字元型變數一樣)當進行像變數賦值和將對象作為參數傳遞給函數的操作時,整個對象被複製。這將導致低效。另外,不可預知的運行時行為會經常發生。

PHP缺少一些其它絕大多少現代開發架構擁有的關鍵元素。其中最重要的一個是結構化異常捕捉。雖然可以給進程錯誤註冊一個error handler,對於語言本身來說並不方便。由於"try . . . catch"錯誤捕捉的缺席,很多PHP開發人員完全忘記了錯誤捕捉或者在很窄的範圍中使用。

ASP.NET

ASP.NET的核心是Microsoft .NET架構。這個架構提供了common language runtime (CLR)和類庫,ASP.NET就建立在這之上。

當ASP.NET資源第一次被請求時,高層語言代碼(像Microsoft Visual Basic .NET 或者C#)被編譯成Microsoft Intermediate Language (MSIL) code。這個代碼將由CLR運行以產生用於網頁服務的機器代碼。

ASP.NET強制開發人員使用真正的物件導向方式進行程式設計。所有的對象都是真實的OO對象,支援如繼承、多態(方法的重載)和封裝的特性。

另外,ASP.NET中的所有語言都是強型別的。舉個例子,要比較整數4和字元4,你需要先將變數轉換為整型,反之亦然。

ASP.NET採用事件驅動編程模型,這意味著,代碼片斷由在程式運行時可能發生的事件聯絡起來。

舉例而言,在ASP.NET 頁面中的Page_Load()事件放置當瀏覽器讀取Web form時將要啟動並執行代碼。有很多附加事件和ASP.NET Page object相聯絡,開發人員可以在它們生命週期中的任何時間執行代碼。同樣的,一個Web form上的各個控制項都有一系列可在觸發時可執行代碼的事件。比如,通過在一個Web form添加一個button,你可以添加一個方法(被叫做一個delegate)來在使用者點擊button時執行。幾乎所有控制項都有一個或者多個事件。

你可以訪問Microsoft在QuickStart指南中提供的關於Class Browser的例子,可以在http://samples.gotdotnet.com/quickstart/aspplus/samples/classbrowser/vb/classbrowser.aspx線上運行它。

Easy註:這篇文章譯自MSDN,是 白刃之戰:PHP vs. ASP.NET 的一部分。文章的其他部分Easy將視事件和精力選譯部分。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.