2009-09-06 34 views
2

由於一些巧合,這個問題在上週出現了兩次。集成PHP與asp.net/asp.net-mvc的最佳方式

客戶擁有他們想要保留的現有PHP網站。他們也已經或即將擁有一些他們希望集成到現有站點的ASP.net網頁,並以一種單一網站的形式出現。

我們雖然以下可能性:

  • 使用iframe
  • 複製所有的HTML /菜單到新網站和網站之間的鏈接,網站之間的用戶移動,但沒有注意到,如果他不查看網址
  • 使用Web服務從asp.net網站讀取信息並在PHP網站上寫入html。
  • 使用WSRP(Web服務遠程Portlet)。已經測試過在Java網站上顯示Sharepoint webparts,沒有使用PHP進行測試。

有沒有人試過這些?有更好的建議嗎?有什麼我們應該明確避免的?

感謝

西拉

+0

你是什麼意思集成?你是說這兩個框架在同一個網站上,或者所有的網頁都以.php或.aspx結尾? –

+0

@詹姆斯,他們是2個獨立的網站,但一切都應該通過PHP網站 –

回答

3

這實際上取決於可接受的集成水平。你原來的建議有很多可維護性的問題,我不會建議他們用於面向公衆的網站。

如果我完全控制,我可能會考慮將PHP站點遷移到IIS,並將ASP.NET頁面與PHP文件一起部署到站點。取決於PHP網站的構建方式,這可能非常棘手。您可能遇到的問題包括:

  • 在PHP應用程序中使用mod_rewrite,以及您是否在Windows上有合適的替換。在撰寫本文時,這種情況好得多,但您可能需要調試現有的配置。
  • 擴展。您需要在Windows上使用所有PHP庫和擴展嗎?
  • 表現。有些人在Windows下報告了令人無法接受的PHP性能。我敢肯定,正確的性能調整可以提供與舊網站相當的東西,如果這甚至是一個問題。

在您建議的選項

  • 使用iframe。這是可行的,但有點笨拙,如果你需要代碼庫之間的SSL或JavaScript交互功能,可能會出現問題。
  • 網站之間的鏈接。這是可行的,但如果搜索引擎優化對你很重要,可能會出現問題。有時候,有更多的鏈接,而不僅僅是你需要考慮的菜單。
  • 使用Web服務讀取ASP.NET頁面。如果你有非常簡單的頁面,沒有交互或回發,這纔是真正可行的。如果你需要處理回發,視圖狀態等,你將會遇到麻煩。使用ASP.NET MVC爲您提供更多的控制權,並且可以更輕鬆地整合這種方式。我個人的觀點是,這是非常黑客,只有我會爲單個頁面做(如果它真的很重要)。
  • 使用WSRP(Web services Remote Portlets)。我不確定這是否是常規ASP.NET的選項,我一直認爲這是SharePoint的附加功能。
1

可以將整個網站在Windows機器上運行IIS託管?因爲IIS can serve PHP pages以及asp.net。這樣,您可以將頁面無縫地混合在一起。

另一個更「髒」的選擇是使用PHP從遠程asp.net頁面直接「讀取」HTML輸出。你必須爲每個相應的asp.net頁面一個PHP文件,然後你可以使用PHP的file_get_contents方法通過HTTP「讀」是:

$content = file_get_contents('http://www.example.com/remotepage.aspx'); 

你可能想在本地緩存結果,以提高效率。

+1

你如何處理remotepage.aspx需要將值張貼到它,viewstate或多個回發的情況? –

+0

你不能!我只會建議這個頁面沒有回發,並且相對「平坦」。即便如此,我認爲這不是一個好主意,但它可能在MVC網站或簡單的「只讀」內容中起作用。 –

+0

我們在不同網站上的IIS上運行PHP和.NET MVC/WebForms。速度沒有問題。它曾經是一個問題,但微軟已經取得了巨大的飛躍,讓PHP能夠很好地與IIS協同工作。那麼爲何不?他們想征服世界。這是MS提供的一個很好的資源。 https://php.iis.net/ – JustJohn

3

所有這些選項都完全不合格!

簡單的解決方案將分別託管解決方案,Apache分別爲Apache & IIS。 並處理通過路由集成。認證可以通過使用「曲奇」

來處理我們已經沒有問題最近處理這一個客戶

web前端是基於WordPress的&的MySQL和整個報告模塊是MVC 3/4基於SQL Server 2008 R2的基礎。

我們剛剛使用了子域.i.e。 www.somecompany.com的網站和reports.somecompany.com的報告。

然後,我們只寫了一個簡單的wordpress擴展,來存儲鏈接數據,其中包含相關信息以創建報告。用戶和報告類型等 即的Guid ID

基本上只是呈現在用戶與頁面包含一些報道,他們可以運行選項 - 超鏈接<a href="http://reports.somecompanyurl.com/bill/{some guid}>You Monthly Bill</a>

即每月的賬單

兩個站點共享一個共同的主題,它確實帶來了一些維護負擔,但不過是一個通常的Web項目。即... MVC和PHP主題文件確實有一些差異, 但通常CSS文件是相同的。

我認爲我們確實定製了一些cookie,但這並不是什麼困難,因爲兩種解決方案都只使用了相同的cookie名稱和cookie加密。

總的來說,這是一個相當無痛的整合項目,因爲大多數通訊都是通過路由處理的。

我們已經運行了6個月沒有任何問題。

相關問題