簡體   English   中英

從PHP調用.NET類的最佳方法?

[英]Best way to call .NET classes from PHP?

將PHP應用程序連接到位於.NET庫中的邏輯的最佳選項是什么?

從v5.0開始,PHP支持一個DOTNET類 ,它應該讓我從PHP腳本調用.NET邏輯。 但似乎存在許多問題 - 我無法使用任意.NET類使其可靠地工作。 該文檔是有點渺茫,什么記錄是不是真的正確。 關於這個類的互聯網的問題很多,php.net上的錯誤報告也是如此。

我已經能夠通過COM互操作讓PHP與.NET連接 - 但這要求.NET類是ComVisible。 據我所知,由於COM要求,這僅適用於Windows。

我聽說過Phalanger項目,但不知道很多細節。 它適用於任意PHP腳本嗎? 在Linux上工作? 它是否有嚴重的性能或運行時影響?

這樣做是否有意義,或者它是你可以做的那些之一,但是你不應該這樣做嗎?

編輯:我想聽聽一般情況:有各種各樣的.NET類庫可供使用,能夠從不同的環境(包括PHP)中利用它們會很好。 示例可能是加密,日志記錄,數據訪問,HPC群集的客戶端。 特定的直接場景是具有AES加密的ZIP庫,可在.NET中使用。

NetPhp是一個在PHP的com_dotnet擴展之上工作的包裝器,因此即使它不是COM Visible也可以在PHP中調用任何.Net程序集,並且可以與任何版本的.Net框架一起使用。

https://github.com/david-garcia-garcia/netphp

Microsoft不在Linux上發布或支持.NET。 如果你不想在Linux上運行.NET代碼那么你應該看看Mono。 我不知道PHP 5是否支持Mono以及MicroSoft.NET

使用.net類和從Phalanger調用.net方法非常簡單,因為它是用於.NET的PHP編譯器。 您可以查看本文PHP for .NET:.NET開發人員簡介 ,文章較舊(2007),因此可能會有一些過時的示例,但這些原則適用。

在Linux上,Phalanger在Mono上運行良好,這里最大的限制是你不能使用僅在Windows上支持的本機擴展(來自PHP發行版)(Phalanger中的擴展管理器是使用C ++ / CLI構建的,不支持在Mono上)。 但您仍然可以使用Phalanger的一些托管擴展程序。

Phalanger在實際版本(2011年2月發布)中的性能比通過FastCGI的PHP 5.3.5快2倍。

我認為最好的方法是通過COM來實現。

暫無
暫無

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

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