【问题标题】:Best way for two apps on the same machine to communicate同一台机器上的两个应用程序进行通信的最佳方式
【发布时间】:2010-10-15 09:54:51
【问题描述】:

我有一个在网络服务器上运行的 ASP.NET 应用程序。第三方在 PHP 中创建了另一个应用程序,需要将数据发送到我的应用程序进行处理。

最初假设 PHP 应用程序将部署在其他地方,因此我们同意通过 HTTP(通过 SSL)在 Internet 上进行通信。我的应用程序将简单地使用通用处理程序 (ashx) 文件来接收数据并发送回确认。

现在看来,PHP 应用程序可能与我的应用程序部署在同一台机器上。我喜欢这样一个事实,即使用 HTTP(而不是直接访问数据库),PHP 应用程序不需要知道我的应用程序是如何工作的。但是对于同一台机器上的两个应用程序之间的通信,使用公共互联网似乎很愚蠢。

如果 PHP 应用程序只使用 localhost 地址,这是否能确保所有数据都保留在机器中?有没有更好的方法来做到这一点?

【问题讨论】:

    标签: php asp.net http communication


    【解决方案1】:

    如果 PHP 只使用本地主机地址,这会确保所有数据都保留在机器内吗?

    是的

    有没有更好的方法来做到这一点?

    对我来说很有意义。这是一种常见的架构选择,如果将来这两个应用程序再次部署在不同的机器上,它会变得更容易。

    【讨论】:

      【解决方案2】:

      即使 PHP 应用程序在外部接口上指定了地址,也永远不会使用公共 Internet。但如果你想……过于谨慎……那就使用 127.0.0.1。

      【讨论】:

      • 抱歉澄清...如果 PHP 应用程序使用我的应用程序的完整公共 URL,通信仍将仅在内部发生?
      • 假设完整的公共 URL 的域名解析到服务器,是的。如果它解析为独立于应用服务器的负载均衡器或代理服务器。没有。
      • 如果它解析为机器上的一个接口,那么是的。如果它在其他地方解析为某个反向代理,那么不会。
      • 但是使用 localhost 或 127.0.0.1 将无济于事,因为很可能主机标头用于托管多个网站。看我的回答。
      • 这很容易解决。将 ASP.NET 应用程序部署到解析为 127.0.0.1 的其他内部主机名。然后在 PHP 应用程序中使用该主机名。
      【解决方案3】:

      是的,如果您使用 localhost 配置 TCP 连接,则不会有流量发送到网络。我们有很多应用程序使用 TCP 接口与服务进行通信。任何流量都不会离开服务器。

      如果您无法在 PHP 应用程序中更改地址,您可以考虑添加主机条目并将其重定向到本地机器。

      【讨论】:

        【解决方案4】:

        如果将它们部署到同一台机器上,它们必须设置有 主机标头,以便 IIS 将流量发送到正确的网站 - 确实它们可以不同地监听端口和没有主机头但作为一个公共网站,这不是一个选项。

        如果设置了主机头 - 我很确定它们是 - 你不能使用 localhost

        【讨论】:

        • 哇,这很有趣。我认为因为我的 ASP.NET 应用程序使用 SSL,它侦听端口 443,所以它不需要特定的主机头。我发现当远程到服务器上时,键入 https:// localhost 会启动 Web 应用程序,但只有在警告证书存在问题之后 - 大概是因为我没有使用与证书关联的域名.这是否会导致应用间通信出现问题,我想我们会在测试中发现。
        • 您仍然可以将多个 IP 地址绑定到一个接口并坚持使用端口 80。无论如何,您都不能在具有不同域名的 SSL 站点上使用主机标头(并且因为应用程序要打开两台服务器),我假设它们在不同的域上。如果 ASP.Net 应用程序只能从 PHP 访问,它可以在不同的端口上运行而没有任何大问题
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-03
        • 2014-09-03
        相关资源
        最近更新 更多