繁体   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