PHP到C#,反之亦然

时间:2012-06-26 13:27:45

标签: c# php

我在这个项目中:

前端公司人员将使用的网页来查询和更新SQL DB中的数据。 我正在使用visual studio,后面的代码(C#)差不多完成了,所以SQL和C#之间的交互都没问题。 我最初的想法是使用我熟悉的ASP.NET,但这是不可能的。我必须切换到PHP。 所以,今天是我学习PHP的第一天,检查http://php.net/manual/en/index.php并且很多东西看起来与ASP.NET非常相似所以我想它不会那么难。

无论如何,一些问题突然出现得很快,因为我想编写别的东西而不是“你好世界”。

有没有一种简单的方法可以使用php页面从我的类中获取/发送C#变量?我已经阅读了关于使用XML的内容,但是我仍然摸不着头脑,还有另一种更简单的方法吗?

1 个答案:

答案 0 :(得分:12)

你有选择。

  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之间的集成将很简单。我没试过,但它可能满足你的要求。