2012-06-26 215 views
7

我在這個項目中:PHP到C#反之亦然

一個網頁,將被前端公司人員用來查詢和更新SQL DB中的數據。 我正在使用visual studio,並且後面的代碼(C#)幾乎完成了,所以SQL和C#之間的交互都可以。 我最初的想法是使用我熟悉的ASP.NET,但這不可能。我必須切換到PHP。 因此,今天是我第一天學習PHP,檢查http://php.net/manual/en/index.php,很多東西看起來與ASP.NET很相似,所以我猜這不會很難。

無論如何,有些問題很快就彈出來了,因爲我想編寫一些不同於「hello world」的腳本。

是否有一種簡單的方法來從我的課程使用PHP頁面獲取/發送C#變量?爲了這樣做,我已經閱讀了關於使用XML的一些東西,但仍然在摸索着我,還有另一種更簡單的方法來做到這一點嗎?

+4

也許創建一個C#WebService並通過PHP使用它。 – canon

+0

將調查你的第二個選項,感謝很多反對。 –

+2

不重新啓動PHP中的所有內容...我第二次將c#重新部署爲Web服務......如果您不想使用代碼,那麼這是您唯一的選擇...使PHP東西很簡單我會採用RESTfull方法來訪問Web服務。 – Brian

回答

11

您有選擇。

  1. 直接整合。 PHP可以實例化和使用.NET對象。在PHP中查看DOTNET庫。因此,如果您在Windows上運行PHP,並根據PHP DOTNET基礎結構的要求公開您的.NET邏輯,那麼您可以直接從PHP調用.NET類。一些限制:PHP構建爲與.NET 2.0運行時集成。您無法構建.NET 4.0對象並從PHP連接到它們。

  2. 同步網絡協議。正如其他人所建議的,您可以通過一個REST或Web服務接口公開您的C#邏輯,然後使用curl庫或file_get_contents()從PHP調用這些服務。 C#邏輯可能是,但不一定公開。換句話說,您只能從應用程序的防火牆中訪問它,以便匿名公共訪問是不可能的。另一方面,您的架構可能會要求從第三方或用戶應用程序訪問相同的API。在這種情況下,它需要公開曝光。

    無論是公共還是私人,您都希望使用WCF或ASPNET MVC公開在C#中實現的這些服務。

  3. 異步機制。 PHP可以連接到MSMQ。見Using PHP to Open MSMQ Queues。當然C#也可以這樣做。您可以使用MSMQ作爲兩個世界之間的緩衝通信機制。要做到這一點,你需要拿出一個數據序列化協議,爲你放在隊列中的消息。 JSON或XML在這裏是合適的選擇。

  4. 數據庫。如果您擔心採用MSMQ,因爲它是「管理一個基礎架構」,您還可以使用數據庫作爲中介。共享數據庫可以通過PHP和C#訪問,並用作消息隊列或通信管道。 PHP將消息插入到MySQL表中,C#應用程序可以讀取並處理它們,然後將答覆消息放置在不同的表中。這需要您進行一些工作來設計消息格式,協議,索引和請求/回覆關聯機制。但它依賴於你已經知道如何使用的已經證實的現有技術。

  5. 最後,還有Phalanger。這使您可以將PHP編譯到.NET Framework上。這意味着C#和PHP之間的集成將很簡單。我沒有嘗試過,但它可能會滿足您的要求。

+0

非常感謝你的回答,他們都看起來不錯但是我想先嚐試一下dotnet庫,因爲我可以使用.net。再次感謝! –