代码之家  ›  专栏  ›  技术社区  ›  jonstjohn

我应该如何集成两个PHP应用程序-通过公共代码、REST和RPC?

  •  1
  • jonstjohn  · 技术社区  · 15 年前

    我在两个相关的Web应用程序上工作,它们是用PHP开发的,独立启动的。随着时间的推移,出于业务原因,我们开始更紧密地集成它们的功能。为了实现这一点,我们在单独的SVN存储库中为公共代码设置了一个目录,这样我们可以在单独部署每个应用程序时部署不同版本的代码。两个应用程序存储库中的一个文本文件指示应该部署哪个版本的公共代码。

    到目前为止,国际单项体育联合会工作得相当好,但出现了一些问题和考虑:

    • 此公共接口中任一应用程序使用的所有代码都需要对两个应用程序都“可见”。例如,如果应用程序1中的项目通过应用程序2保存,那么所有支持代码、ORM类、支持类等都需要在公共区域中。

    • 如果应用程序1正在对应用程序2的代码进行方法调用,那么它将绕过应用程序2的所有启动代码-身份验证、框架等。这可能会导致不期望的结果和意外的依赖性。

    此时,我们更喜欢将应用程序分开。

    这两个应用程序相互通信的最佳方式是什么?我们可以使用HTTP通信来确保可靠的接口,并且每个应用程序都通过自己的应用程序进程处理进程。我们担心会从HTTP中产生开销,但是一个更松散耦合的系统的权衡可能会超过这个顾虑。

    此时,两个应用程序都在同一组服务器上运行,正如前面提到的,几乎都是以独占方式使用PHP。

    编辑: 通信将是私有的,并且在应用程序中经过验证,这意味着没有公共API的计划。

    3 回复  |  直到 15 年前
        1
  •  3
  •   troelskn    15 年前

    这是你正在做的一个权衡;一个共享的代码库被认为是更简单和更有效的。至少在短期内。

    基于XML RPC或纯HTTP的API可以很好地工作,并且有利于分离职责,因为您有明确的边界。出于完整性的考虑,SOAP也是一种选择,但除非被迫,否则我不会选择它。

        2
  •  1
  •   Parrots    15 年前

    在我看来,使用基于HTTP的API。我以前不得不用一组应用程序来处理这个问题,最后公共代码又回来咬我了。如果可以的话,现在就把它们脱钩。缓存数据的良好实现,使用pub/sub而不是常量轮询等,应该将开销保持在最低水平。

        3
  •  1
  •   Migol    15 年前

    这取决于您是否希望将应用程序与其他一些应用程序集成。如果是的话,那么我宁愿使用SOAP体系结构,这样您就可以为下一个应用程序提供更好的界面,可能是使用其他编程语言。