程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 使用Phalanger整合PHP和.NET

使用Phalanger整合PHP和.NET

編輯:PHP綜合

Phalanger是一種PHP語言編譯器,也是針對.NET的PHP運行時。它可以用於把PHP web項目編譯成.NET字節碼,並在Windows中使用IIS或 者在Linux上使用Mono和Apache作為ASP.NET應用程序來執行。然而,Phalanger不僅僅是把已經存在的PHP應用編譯到.NET中。

我們可以使用Phalanger創建組合.NET和PHP的解決方案,所采用的方式用標准的PHP解釋器是不可能做到的。有了Phalanger擴展,PHP 程序可以直接使用.NET類,而.NET程序(比方說用C#編寫的)也可以動態地調用PHP腳本,或者使用在PHP中實現的函數和類【6】。

本文中,我麼會簡要地介紹Phalanger,然後查看三種使用方案。我們會討論如何整合PHP應用程序和.NET;如何高效地在Windows上運 行PHP應用程序,以及如何使用PHP作為ASP.NET的視圖引擎(view engine)。

Phalanger簡介

Phalanger已經存在一段時間了。第一版Phalanger是於2003年在布拉格的查爾斯大學作為軟件項目創建的。稍後就開始了2.0版本的開 發,並且於2006年在CodePlex作為開源項目發布。微軟支持了這個項目一段時間,後來一位Phalanger開發者加入微軟,並從事動態語言運 行時方面的工作。

Phalanger相關活動在2008年恢復,這多虧有了與Jadu的合作,它使用Phalanger為在PHP中開發的CMS構建了.NET版本。從2010年開始, Phalanger的開發主要由DEVSENSE提供資金支持,它也為Phalanger提供了商業支持。最近發布的版本Phalanger 2.1【7】,其中提升了與 標准PHP實現的兼容性,在動態操作的實現過程中利用了DLR,並提供了PHP和其他.NET語言(像C#、F#和Visual Basic)之間的互操作性。

Phalanger的組件

Phalanger包括多個部分獨立的組件,可以用來開發運行在.NET上的PHP應用程序,並使用.NET或Mono來運行它們:

Phalanger編譯器Phalanger會把PHP源代碼編譯成.NET程序集,它可以使用.NET JIT(Just-in-time編譯器,它會為當前平台生成本地 代碼)執行。編譯後的PHP代碼會使用Phalanger運行時和動態語言運行時,從而提供了PHP語言動態特性的高效率實現。

Phalanger運行時和類庫Phalanger運行時提供了對數組之類PHP特性的實現。Phalanger還包含了針對I/O、正則表達式以及其他標准PHP 類庫的.NET實現。

本地擴展在32位Windows平台上,Phalanger可以通過本地的橋接程序使用所有現存的PHP 4擴展。盡管這會帶來一些運行時負載,但這 讓我們不需要額外工作就可以運行某些PHP應用程序。

托管的擴展 通過包裝.NET中提供的類似功能,PHP擴展也可以重新實現。這些擴展可以是由任何.NET語言編寫,並提供很好的性能。 Phalanger中包含多個擴展,包括SPL、JSON、SimpleXML、MySQL和MS SQL的提供程序。DEVSENSE【9】還提供了附加的擴展,像Memcached 、圖像和cURL等。

與Visual Studio的集成Phalanger還與Visual Studio集成(最近的更新支持Visual Studio 2010)。集成功能添加了針對PHP文件的顏 色突出顯示和智能提示功能,讓我們可以調試使用Phalanger運行的PHP應用程序。

Phalanger使用案例

Phalanger在很大程度上與PHP 5兼容,可以運行大量開源的PHP項目,包括WordPress和MediaWiki。我們可以使用它把這些項目集成 到.NET生態系統中,也可以開發新的項目,它會兼有PHP和.NET的優勢。在本文剩下的內容中,我們會討論以下三種使用案例:

方案1: 高效運行PHP應用程序。使用PHalanger在Windows上編譯的PHP應用程序的性能,要比通過FastCGI使用標准PHP解釋器運行的高 。這使得選擇Phalanger在Windows環境中部署PHP很具有吸引力。

方案2: 把WordPress與ASP.NET整合。使用Phalanger編譯的PHP代碼能夠調用所有.NET程序庫。這可以用於在PHP和ASP.NET應用程序之 間共享用戶數據庫或者其他數據。

方案3: 從ASP.NET應用程序中調用PHP。PHP的靈活性對於編寫腳本或者編寫web應用程序的表現層非常有用。有了Phalanger,我們就 可以在.NET中開發應用程序,並使用PHP作為腳本語言或者視圖引擎。

以下三個部分會詳細討論各種方案。我們首先會給出概覽,然後查看一些技術細節,它會說明Phalanger中讓你感興趣的內容。

方案1: 高效運行PHP應用程序

Phalanger之所以能夠高效地運行PHP應用程序,是因為以下兩個原因。首先,它會編譯PHP源代碼,而不是解釋它;其次,它會把應用 作為ASP.NET應用程序運行,那會在Windows下提供額外的性能優勢。

使用Phalanger和.NET編譯PHP

編譯過程如圖1所示。正如圖上所顯示的,Phalanger會把PHP源代碼編譯成.NET IL(中間語言),那是與架構獨立的低級字節碼。編譯 後的代碼會使用PHP核心庫(Phalanger的一部分)和動態語言運行時(DLR)來執行標准的PHP操作。當應用程序啟動時,.NET JIT(just -in-time)編譯器會把這些組件轉換為針對當前處理器架構優化過的本地代碼。

圖1. 使用Phalanger把PHP源代碼編譯成本地代碼的過程

正如Phalanger評測顯示【10】,使用Phalanger編譯的WordPress在Windows下的性能比通過FashCGI使用標准PHP解釋器的好,也比通過 WinCache使用PHP的稍好一些。然而,評測沒有測試Phalanger最新的版本,它使用DLR進行了進一步優化。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved