从PHP调用.NET类的最佳方法?

时间:2009-03-28 05:28:44

标签: .net php com

将PHP应用程序连接到.NET库中的逻辑的最佳选择是什么?

PHP,从v5.0开始,支持a DOTNET class,它应该让我从PHP脚本调用.NET逻辑。但似乎存在许多问题 - 我无法使用任意.NET类使其可靠地工作。该文档有点渺茫, 记录的内容并不十分正确。关于这个类的互联网的问题很多,php.net上的错误报告也是如此。

我已经能够通过COM互操作让PHP与.NET连接 - 但这要求.NET类是ComVisible。据我所知,由于COM要求,这仅适用于Windows。

我听说过Phalanger project,但不知道很多细节。它适用于任意PHP脚本吗?在Linux上工作?它是否有严重的性能或运行时影响?

这样做是否有意义,或者它是你可以做的那些之一,但你不应该做些什么?

编辑:我想听听一般情况:有各种各样的.NET类库可供使用,能够从不同环境(包括PHP)中利用它们会很好。示例可能是加密,日志记录,数据访问,HPC群集的客户端。特定的直接场景是具有AES加密的ZIP库,可在.NET中使用。

4 个答案:

答案 0 :(得分:2)

Microsoft不在Linux上发布或支持.NET。如果你不想在Linux上运行.NET代码那么你应该看看Mono。我不知道PHP 5是否支持Mono以及MicroSoft.NET

答案 1 :(得分:2)

NetPhp是一个在PHP的com_dotnet扩展之上工作的包装器,因此即使它不是COM Visible也可以在PHP中调用任何.Net程序集,并且可以与任何版本的.Net框架一起使用。

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

答案 2 :(得分:1)

使用.net类和从Phalanger调用.net方法非常简单,因为它是用于.NET的PHP编译器。您可以查看这篇文章PHP for .NET: Introduction for .NET developers,文章较旧(2007年),因此可能会有一些过时的示例,但这些原则适用。

在Linux上Phalanger在Mono上运行良好,这里最大的限制是你不能使用仅在Windows上支持的本机扩展(来自PHP发行版)(Phalanger中的扩展管理器是使用C ++ / CLI构建的) Mono支持。但您仍然可以使用Phalanger的一些托管扩展程序。

Phalanger在实际版本(2011年2月发布)中的性能比通过FastCGI的PHP 5.3.5快2倍。

答案 3 :(得分:0)

我认为最好的方法是通过COM来实现。