繁体   English   中英

将PHP与asp.net / asp.net-mvc集成的最佳方法

[英]Best way to integrate PHP with asp.net / asp.net-mvc

碰巧的是,这个问题在上周两次出现。

客户拥有要保留的现有PHP网站。 他们还拥有或即将拥有一些ASP.net网页,希望将它们集成到现有站点中,以使其显示为单个站点。

但是,我们有以下几种可能性:

  • 使用iframe
  • 将所有html /菜单复制到新站点并在站点之间链接,如果用户未查看url,则用户在站点之间移动但没有注意到
  • 使用Web服务从asp.net网站读取信息,并在PHP网站上编写html。
  • 使用WSRP(Web服务远程Portlet)。 已对此进行测试以在Java站点上显示Sharepoint Webpart,但尚未与PHP进行测试。

有人尝试过这些吗? 有更好的建议吗? 有什么我们应该绝对避免的吗?

谢谢

西拉

这实际上取决于可接受的集成水平。 您最初的建议在可维护性方面存在许多问题,我不建议将其用于面向公众的互联网站点。

如果可以完全控制,我可能会考虑将PHP网站迁移到IIS,并将ASP.NET页面与PHP文件一起部署到该网站。 根据PHP网站的构建方式,这可能非常棘手。 您可能会遇到的问题包括:

  • 在PHP应用程序中使用mod_rewrite,以及在Windows上是否有合适的替代品。 在编写本文时,这种情况要好得多,但是您可能需要调试现有配置。
  • 扩展。 Windows上是否提供了您需要的所有PHP库和扩展?
  • 性能。 有人报告Windows下PHP的性能不可接受。 我相信通过正确的性能调整,即使这是一个问题,您也可以提供与您的旧站点相同的功能。

在您建议的选项上

  • 使用IFrame 这是可行的,但有点笨拙,如果您需要代码库之间的SSL或JavaScript交互之类的东西,可能会出现问题。
  • 站点之间的链接 这是可行的,但如果SEO对您很重要,则可能会出现问题。 有时,除了菜单之外,您还需要考虑更多的链接。
  • 使用Web服务读取ASP.NET页 仅当您具有非常简单的页面且交互或回传为零时,这才真正可行。 如果您需要处理回发,viewstate等问题,将会遇到麻烦。 使用ASP.NET MVC可以为您提供更多控制权,并且可以更轻松地集成这种方式。 我个人的观点是,它非常hacky,只有我可以在单个页面上执行某些操作(如果它真的很重要)。
  • 使用WSRP(Web服务远程Portlet) 我不确定这是常规ASP.NET的选项,我一直认为这是SharePoint的附加功能。

所有这些选择都太过分了!

一个简单的解决方案是将解决方案分别托管在Apache和IIS中。 并通过路由处理集成。 可以使用“ Cookie”来处理身份验证

我们最近为没有问题的客户处理了此问题

Web前端基于wordpress和mySQL,整个报告模块是基于SQL Server 2008 r2的MVC 3/4。

我们仅将子域名.ie www.somecompany.com用于网站,将reports.somecompany.com用于报告。

然后,我们只是编写了一个简单的wordpress扩展名,用于存储包含相关信息的链接数据以创建报告。 即用户的Guid ID和报告类型等。

实际上,这实际上只是向用户显示了一个页面,其中包含一些可以运行的报告选项-超链接<a href="http://reports.somecompanyurl.com/bill/{some guid}>You Monthly Bill</a>

即每月帐单

这两个站点共享一个共同的主题,这确实带来了一定的维护负担,但是只不过是一个普通的Web项目而已。 即.. MVC和PHP主题文件确实有一些区别,但是通常CSS文件是相同的。

我认为我们确实对cookie进行了一些自定义,但这并不是什么难事,因为两种解决方案都使用相同的cookie名称和cookie加密。

总体而言,这是一个相当轻松的集成项目,因为大多数通信都是通过路由进行的。

我们已经运行了6个月,没有任何问题。

可以将整个站点托管在运行IIS的Windows计算机上吗? 因为IIS可以提供​​PHP页面以及asp.net。 这样,您可以无缝地将页面混合和匹配在一起。

另一个更“肮脏”的选择是使用PHP直接从远程asp.net页“读取” HTML输出。 每个对应的asp.net页都有一个PHP文件,然后可以使用PHP的file_get_contents方法通过HTTP“读取”它:

$content = file_get_contents('http://www.example.com/remotepage.aspx');

您可能希望将结果缓存在本地以提高效率。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM