簡體   English   中英

將PHP與asp.net / asp.net-mvc集成的最佳方法

[英]Best way to integrate PHP with asp.net / asp.net-mvc

碰巧的是,這個問題在上周兩次出現。

客戶擁有要保留的現有PHP網站。 他們還擁有或即將擁有一些ASP.net網頁,希望將它們集成到現有站點中,以使其顯示為單個站點。

但是,我們有以下幾種可能性:

  • 使用iframe
  • 將所有html /菜單復制到新站點並在站點之間鏈接,如果用戶未查看url,則用戶在站點之間移動但沒有注意到
  • 使用Web服務從asp.net網站讀取信息,並在PHP網站上編寫html。
  • 使用WSRP(Web服務遠程Portlet)。 已對此進行測試以在Java站點上顯示Sharepoint Webpart,但尚未與PHP進行測試。

有人嘗試過這些嗎? 有更好的建議嗎? 有什么我們應該絕對避免的嗎?

謝謝

西拉

這實際上取決於可接受的集成水平。 您最初的建議在可維護性方面存在許多問題,我不建議將其用於面向公眾的互聯網站點。

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

  • 在PHP應用程序中使用mod_rewrite,以及在Windows上是否有合適的替代品。 在編寫本文時,這種情況要好得多,但是您可能需要調試現有配置。
  • 擴展。 Windows上是否提供了您需要的所有PHP庫和擴展?
  • 性能。 有人報告Windows下PHP的性能不可接受。 我相信通過正確的性能調整,即使這是一個問題,您也可以提供與您的舊站點相同的功能。

在您建議的選項上

  • 使用IFrame 這是可行的,但有點笨拙,如果您需要代碼庫之間的SSL或JavaScript交互之類的東西,可能會出現問題。
  • 站點之間的鏈接 這是可行的,但如果SEO對您很重要,則可能會出現問題。 有時,除了菜單之外,您還需要考慮更多的鏈接。
  • 使用Web服務讀取ASP.NET頁 僅當您具有非常簡單的頁面且交互或回傳為零時,這才真正可行。 如果您需要處理回發,viewstate等問題,將會遇到麻煩。 使用ASP.NET MVC可以為您提供更多控制權,並且可以更輕松地集成這種方式。 我個人的觀點是,它非常hacky,只有我可以在單個頁面上執行某些操作(如果它真的很重要)。
  • 使用WSRP(Web服務遠程Portlet) 我不確定這是常規ASP.NET的選項,我一直認為這是SharePoint的附加功能。

所有這些選擇都太過分了!

一個簡單的解決方案是將解決方案分別托管在Apache和IIS中。 並通過路由處理集成。 可以使用“ Cookie”來處理身份驗證

我們最近為沒有問題的客戶處理了此問題

Web前端基於wordpress和mySQL,整個報告模塊是基於SQL Server 2008 r2的MVC 3/4。

我們僅將子域名.ie 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個月,沒有任何問題。

可以將整個站點托管在運行IIS的Windows計算機上嗎? 因為IIS可以提供​​PHP頁面以及asp.net。 這樣,您可以無縫地將頁面混合和匹配在一起。

另一個更“骯臟”的選擇是使用PHP直接從遠程asp.net頁“讀取” HTML輸出。 每個對應的asp.net頁都有一個PHP文件,然后可以使用PHP的file_get_contents方法通過HTTP“讀取”它:

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

您可能希望將結果緩存在本地以提高效率。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM