【问题标题】:Best way to integrate PHP with asp.net / asp.net-mvc将 PHP 与 asp.net / asp.net-mvc 集成的最佳方式
【发布时间】:2010-11-26 00:45:14
【问题描述】:

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

客户有一个他们想要保留的现有 PHP 网站。他们还拥有或将很快拥有一些 ASP.net 网页,他们希望将这些网页集成到现有网站中,使其看起来像一个单独的网站。

我们有以下几种可能:

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

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

谢谢

设拉子

【问题讨论】:

  • 整合是什么意思?你的意思是这两个框架在同一个站点,还是所有的网页都以.php或.aspx结尾?
  • @James,它们是 2 个独立的站点,但一切都应该通过 php 站点

标签: php asp.net integration


【解决方案1】:

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

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

  • 在 PHP 应用程序中使用 mod_rewrite 以及您在 Windows 上是否有合适的替代品。在撰写本文时,这种情况要好得多,但您可能需要调试现有配置。
  • 扩展。您需要的所有 PHP 库和扩展在 Windows 上都可用吗?
  • 性能。有人报告说 PHP 在 Windows 下的性能无法接受。我确信通过正确的性能调整,您可以提供与旧网站相当的东西,如果这甚至是一个问题的话。

关于您的建议选项

  • 使用 IFrame。这是可行的,但有点笨拙,如果您需要代码库之间的 SSL 或 JavaScript 交互等内容,这可能会出现问题。
  • 站点之间的链接。这是可行的,但如果 SEO 对您很重要,则可能会出现问题。有时,您还需要考虑更多链接,而不仅仅是菜单。
  • 使用 Web 服务读取 ASP.NET 页面。只有当您的页面非常简单且零交互或回发时,这才是真正可行的。如果您需要处理回发、视图状态等,您将遇到麻烦。使用 ASP.NET MVC 可以为您提供更多控制和更轻松的集成体验。我个人的看法是,它非常 hacky,而且我只会为单个页面做一些事情(如果它真的很重要的话)。
  • 使用 WSRP(Web 服务远程 Portlet)。我不确定这是常规 ASP.NET 的一个选项,我一直认为这是 SharePoint 的附加功能。

【讨论】:

    【解决方案2】:

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

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

    我们最近为一位没有问题的客户处理了这个问题

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

    我们只是使用了子域。即www.somecompany.com 用于网站,reports.somecompany.com 用于报告。

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

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

    即每月账单

    这两个网站共享一个共同的主题,这确实带来了一些维护负担,但只是一个普通的网络项目。即... MVC 和 PHP 主题文件确实有一些差异, 但总的来说 CSS 文件是相同的。

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

    总的来说,这是一个相当轻松的集成项目,因为大多数通信都是通过路由处理的。

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

    【讨论】:

      【解决方案3】:

      整个站点可以托管在运行 IIS 的 Windows 机器上吗?因为IIS can serve PHP pages 以及 asp.net。这样您就可以无缝地混合和匹配页面。

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

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

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

      【讨论】:

      • 如何处理 remotepage.aspx 需要向其发布值、视图状态或多次回发的情况?
      • 你不能!我只建议那些没有回发并且相对“平坦”的页面。即使这样,我也不认为这是一个好主意,但它可能适用于 MVC 网站或简单的“只读”内容。
      • 我们在不同网站的 IIS 上运行 PHP 和 .NET MVC/WebForms。速度没问题。这曾经是一个问题,但微软在让 PHP 与 IIS 一起工作方面取得了巨大的进步。那么为何不?他们想征服世界。这是 MS 提供的一个很好的资源。 php.iis.net
      猜你喜欢
      • 2020-01-24
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 2020-06-25
      • 2018-05-29
      相关资源
      最近更新 更多