2012-06-26 173 views
7

我在这个项目中:PHP到C#反之亦然

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

无论如何,有些问题很快就弹出来了,因为我想编写一些不同于“hello world”的脚本。

是否有一种简单的方法来从我的课程使用PHP页面获取/发送C#变量?为了这样做,我已经阅读了关于使用XML的一些东西,但仍然在摸索着我,还有另一种更简单的方法来做到这一点吗?

+4

也许创建一个C#WebService并通过PHP使用它。 – canon

+0

将调查你的第二个选项,感谢很多反对。 –

+2

不重新启动PHP中的所有内容...我第二次将c#重新部署为Web服务......如果您不想使用代码,那么这是您唯一的选择...使PHP东西很简单我会采用RESTfull方法来访问Web服务。 – Brian

回答

11

您有选择。

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

+0

非常感谢你的回答,他们都看起来不错但是我想先尝试一下dotnet库,因为我可以使用.net。再次感谢! –