我使用PHP开发的两个相关的Web应用程序,它们是独立开始的。随着时间的推移,我们已经开始根据业务原因更紧密地集成他们的功能。为实现此目的,我们在单独的SVN存储库中设置公共代码的目录,以便在单独部署每个应用程序时部署不同版本的代码。应用程序存储库中的文本文件指示应部署公共代码的哪个版本。
如果到目前为止工作得相当好,但是出现了一些问题和考虑因素:
这个公共接口中的任一应用程序使用的所有代码都需要对两个应用程序都“可见”。例如,如果应用程序#1中的项目是通过应用程序#2保存的,则所有支持代码,ORM类,支持类等都需要位于公共区域。
如果应用程序#1正在对应用程序#2的代码进行方法调用,那么它将绕过所有应用程序#2的启动代码 - 身份验证,框架等。这可能会导致不理想的结果和意外的依赖关系。
此时,我们更愿意将应用程序分开。
这两个应用程序相互通信的最佳方式是什么?我们可以使用http通信来确保可靠的接口,并且每个应用程序都通过它自己的应用程序进程处理进程。我们担心会产生来自http的开销,但是更松散耦合系统的权衡可能会超过这个问题。
目前,这两个应用程序都运行在同一组服务器上,如上所述,几乎只使用PHP。
编辑:通信将在应用内部进行私密和身份验证,这意味着没有公开API的计划。
答案 0 :(得分:3)
这是你正在做的权衡;共享代码库 - 全部考虑 - 更简单,更高效。至少在短期内。
xml-rpc或普通的基于http的api可以很好地工作,并且有利于分离职责,因为你获得了明确的界限。为了完整起见,SOAP也是一个选项,但我不会选择,除非被强制使用。
答案 1 :(得分:1)
在我看来,使用基于HTTP的API。我以前必须用一组应用程序处理这个问题,而且常见的代码最终还是会让我感到厌烦。如果可以,现在将它们分离。缓存数据的良好实现,使用pub / sub而不是常量轮询等,应该将开销降到最低。
答案 2 :(得分:1)
这取决于您是否希望将应用程序与其他应用程序集成。如果是的话,那么我宁愿使用SOAP架构,这样你就可以为下一个应用程序提供更好的界面,可能还有其他一些编程语言。