将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中使用。答案 0 :(得分:2)
Microsoft不在Linux上发布或支持.NET。如果你不想在Linux上运行.NET代码那么你应该看看Mono。我不知道PHP 5是否支持Mono以及MicroSoft.NET
答案 1 :(得分:2)
NetPhp是一个在PHP的com_dotnet扩展之上工作的包装器,因此即使它不是COM Visible也可以在PHP中调用任何.Net程序集,并且可以与任何版本的.Net框架一起使用。
答案 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来实现。